摘要: 很经典的一道状态压缩DP~刚开始写这道题目的时候分析了下,很明显的二进制压缩,每行有1024中情况,但是每两个阵地之间至少要相隔2,最后一算只有60种形态。感觉不是很麻烦就写了,写着发现不对劲,由于一行需要由前面两行的状态决定,而我开的是二维数组,怎么也不能完全的把信息转换过来。。一直很纠结于怎样传递信息,最后很无奈的上网搜了下代码,发现用三维的数组就可以了。。DP[i][j][k]表示第i行当前为第j种状态,i-1行为第k种状态,那么状态转移方程就很容易搞定了。。DP[i][j][k]=max(DP[i][j][k],DP[i-1][k][h]),其中(st[j]&st[k])==0 阅读全文
posted @ 2011-07-30 19:49 奋斗青春 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 哎呀,写这道题把我快恶心死啦!!!写了快一上午了,最后尽然是数组int s[21]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576};中间初始化错了,,搞得我想哭哇!!!!先判断一下,每一行可能存在17711种情况!然后每一行与上一行之间的关系:DP[i][j]=DP[i-1][k]+sum(j);i 表示第i行,j表示i行当前的状态,k表示i-1行的状态,并且j&k==0(即j与k要符合要求,上下两个点不能相邻),sum(j)表示第i行在j 阅读全文
posted @ 2011-07-30 11:04 奋斗青春 阅读(1003) 评论(0) 推荐(0) 编辑