摘要: 思想来自:http://blog.pureisle.net/archives/475.html主要思想是用1和0来表示是否被填,然后根据两行之间的状态关系来构建DP方程。1.首先初始化第一行 计算第一行可以被横着填的方案数。此时cnt是1 所以其实合法的dp[1][j]都是12.然后开始构建第二行至... 阅读全文
posted @ 2015-07-08 17:48 雨尘之林 阅读(441) 评论(0) 推荐(0)
摘要: #include #include #include using namespace std;struct person{ int data; int id;};int l[1001],r[1001];//存储编号为i的左边的编号和右边的编号int data[1001];//存储编号为i... 阅读全文
posted @ 2015-07-08 17:42 雨尘之林 阅读(314) 评论(0) 推荐(0)
摘要: http://acm.sjtu.edu.cn/OnlineJudge/problem/1382注意到 排序之后 i从前向后扫描时,cur恰好是从后向前的,所以即使是双重循环,也是O(n)的算法。#include #include using namespace std;int N,S;unsigne... 阅读全文
posted @ 2015-07-08 16:02 雨尘之林 阅读(338) 评论(0) 推荐(0)
摘要: 枚举法就好了,推理很麻烦,感觉也做不出来。创造一个结构体,一个是真实的数,一个是花费的牙签数。构建一位数,两位数,三位数即可。#include #include using namespace std;//从0到9耗费的牙签数int cost[10]={6,2,5,5,4,5,6,3,7,6};st... 阅读全文
posted @ 2015-07-08 15:57 雨尘之林 阅读(415) 评论(0) 推荐(0)