2011年5月19日
摘要: 这题真没想出来有这么复杂,当然对我们新手来说,没状态压缩的意识,对位运算不理解,害得我看别人代码都想了半天... 首先这题是一道关于状态压缩dp f(i,j) 表示 第i行 状态为j 的个数 <怎么理解状态 j 呢? 二进制思想,假设一行有m个单位需要填充,我们就可以用0 or 1 来表示每一个单位上的属性【0 代表 1x2 单位是横放的不影响下一行,1 代表 1x2 是竖放的影响下一行就是表示下一行对应的 单位已经被填充了】 > 解题中我们可以枚举每一行每一个状态,即由上一行的状态能到达此状态的个数和。 // void dfs(int i, int j, int jj, int 阅读全文
posted @ 2011-05-19 21:16 eth0 阅读(157) 评论(0) 推荐(0) 编辑
摘要: // 一看乱七八糟的代码就知道写得很受挫, 写得断断续续, 首先没记录自然tle,记忆搜索之后,爆空间,试着少一位,多亏数据弱, // 好心让我过了,但是怎么感觉都很错误... 1 Source Code 2 3 Problem: 2378 User: eth1 4 Memory: 40008K Time: 329MS 5 Language: C++ Result: Accepted 6 Source Code 7 #include <iostream> 8 #include <algorithm> 9 #include <vector>10 #includ 阅读全文
posted @ 2011-05-19 16:24 eth0 阅读(150) 评论(0) 推荐(0) 编辑
摘要: // 树形dp , 父子兄弟法构建树形结构 , 状态方程 t[i].vis += t[t[i].child].novis || t[i].novis += t[t[i].child].maxx() 1 Source Code 2 3 Problem: 2342 User: eth1 4 Memory: 456K Time: 94MS 5 Language: C++ Result: Accepted 6 Source Code 7 #include <iostream> 8 #include <algorithm> 9 using namespace std;10 con 阅读全文
posted @ 2011-05-19 12:27 eth0 阅读(146) 评论(0) 推荐(0) 编辑