02 2014 档案

摘要:很神奇的一道题。 参考:http://www.cnblogs.com/kuangbin/p/3346037.html题意:“ 题目意思很简单。就是洗牌,抽出奇数和偶数,要么奇数放前面,要么偶数放前面。总共2^N张牌。需要问的是,给了A X B Y 问经过若干洗牌后,第A个位置是X,第B个位置是Y 是不是可能的。题目给的牌编号是1开始的,先转换成0开始。一开始位置是0~2^N-1. 对应的牌是0~2^N-1首先来看每次洗牌的过程。对于第一种洗牌:将奇数放前面,偶数放后面。其实每个位置数的变化就是相当于循环右移一位,然后高位异或1.对于第二种洗牌:讲偶数放前面,奇数放后面。其实每个位置数的变化就. 阅读全文
posted @ 2014-02-27 17:06 byluoluo 阅读(326) 评论(0) 推荐(0)
摘要:题意:N个数(N2#include3#definelsonl,m,rt=a&&rb||r>1;21update(lson,a,b,k,c);22update(rson,a,b,k,c);23}2425intquery(intl,intr,intrt,inta)26{27intadd=0;28for(inti=1;i>1;35if(a<=m)36{37returnquery(lson,a)+add;38}39else40returnquery(rson,a)+add;41}4243intmain()44{45intn,q,type,a,b,k,c;46while 阅读全文
posted @ 2014-02-27 10:22 byluoluo 阅读(172) 评论(0) 推荐(0)
摘要:hdu 2089 不要62题意:给出两个数,求区间内不带4和62的数的个数。(PS:62是连续的两位)思路:dp[i][0]表示前i位不含不吉利数的个数(如i=4,则范围为0~9999,下同)dp[i][1]表示前i位不含不吉利数且首位是2的数的个数dp[i][2]表示前i位含不吉利数的数的个数。则有dp[i][0] = dp[i-1][0] * 9 - dp[i-1][1]dp[i][1] = dp[i-1][0]dp[i][2] = dp[i-1][2] * 10 + dp[i-1][0] + dp[i-1][1]预处理得到dp数组然后从高往低逐位求答案。例子,如数5678按0~49995 阅读全文
posted @ 2014-02-23 16:28 byluoluo 阅读(205) 评论(0) 推荐(0)
摘要:题意:在一些括号中找到一个序列,里面的括号都两两配对。求序列最长长度。dp[i][j]为i~j的最大括号数,考虑第i个括号,有两种情况:①不管i直接算dp[i][j] = dp[i + 1][j];★②枚举i+1~j,找到和i匹配的右括号,有dp[i][j] = max(dp[i][j],dp[i + 1][k - 1] + 2 + dp[k + 1][j])。递归写法:1#include2#include3#defineN10545intdp[N][N],len,vis[N][N];6chars[N];78intmax2(intx,inty)9{10returnx>y?x:y;11}1 阅读全文
posted @ 2014-02-23 13:15 byluoluo 阅读(155) 评论(0) 推荐(0)