上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 34 下一页
摘要: 两边算一下LIS就出来了,因为数据比较大,所以需要二分优化一下。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxn = 10000 + 10; 8 9 int n;1... 阅读全文
posted @ 2015-08-03 19:45 AOQNRMGYXLMV 阅读(184) 评论(0) 推荐(0) 编辑
摘要: d(i, j)表示使前i个数满足要求,而且第i个数值为j的最小改动次数。d(i, j) = min{ d(i-1, k) | k == j | G[j][k] } 1 #include 2 #include 3 #include 4 using namespace std; 5 6 cons... 阅读全文
posted @ 2015-08-03 19:22 AOQNRMGYXLMV 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题解 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxn = 100 + 10; 8 9 int n;10 char s1[maxn], s2[maxn];11 12 ... 阅读全文
posted @ 2015-08-03 10:59 AOQNRMGYXLMV 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题解我使用记忆化搜索写的。 阅读全文
posted @ 2015-08-03 10:14 AOQNRMGYXLMV 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题解 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define MP make_pair 7 using namespace std; 8 9 typedef pair PII;10 11 const int max... 阅读全文
posted @ 2015-08-03 09:30 AOQNRMGYXLMV 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 此题可以转化为最优矩阵链乘的形式,d(i, j)表示区间[i, j]所能得到的最小权值。枚举最后一个拿走的数a[k],状态转移方程为d(i, j) = min{ d(i, k) + d(k, j) + a[i] * a[k] * a[j] } 1 #include 2 #include 3 #i... 阅读全文
posted @ 2015-08-02 22:51 AOQNRMGYXLMV 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 染色有三个条件:对于每个点来说要么不染色,要么染红色,要么染蓝色对于每对配对的括号来说,有且只有一个一边的括号被染色相邻的括号不能染成相同的颜色首先可以根据给出的括号序列计算出括号的配对情况,具体来说就是第i个括号与R[i]个括号配对。对于一个正规配对括号序列(correct bracket seq... 阅读全文
posted @ 2015-08-02 22:33 AOQNRMGYXLMV 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 原文戳这与以往的并查集不同,这次需要一个删除操作。如果是叶子节点还好,直接修改父亲指针就好。但是如果要是移动根节点,指向它的所有子节点也会跟着变化。所以要增加一个永远不会被修改的虚拟根节点,这样就可以把一个点从集合中删除而不影响其它的点了。 1 #include 2 #include 3 #in... 阅读全文
posted @ 2015-08-02 21:53 AOQNRMGYXLMV 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 求一个括号的最大匹配数,这个题可以和UVa 1626比较着看。注意题目背景一样,但是所求不一样。回到这道题上来,设d(i, j)表示子序列Si ~ Sj的字符串中最大匹配数,如果Si 与 Sj能配对,d(i, j) = d(i+1, j-1)然后要枚举中间点k,d(i, j) = max{ d(i,... 阅读全文
posted @ 2015-08-02 15:09 AOQNRMGYXLMV 阅读(157) 评论(0) 推荐(0) 编辑
摘要: d(i, j)表示第i天到第j天至少要穿多少件衣服。先不考虑第i天和后面 i+1 ~ j 天的联系,那就是至少要穿 1 + d(i+1, j)件衣服。再看状态转移,如果后面第k(i+1 ≤ k ≤ j)天所穿的衣服和第i天一样的话,那么完全可以把第i+1~k-1天所穿的衣服脱下来。所以状态转移方程就... 阅读全文
posted @ 2015-08-02 14:37 AOQNRMGYXLMV 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 环形石子合并问题。有一种方法是取模,而如果空间允许的话(或者滚动数组),可以把长度为n个换拓展成长为2n-1的直线。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int ma... 阅读全文
posted @ 2015-08-02 10:32 AOQNRMGYXLMV 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 设d(i, j)为连通第i个点到第j个点的树的最小长度,则有状态转移方程:d(i, j) = min{ d(i, k) + d(k + 1, j) +p[k].y - p[j].y + p[k+1].x - p[i].x }然后用四边形不等式优化之。。 1 #include 2 #include ... 阅读全文
posted @ 2015-08-02 10:10 AOQNRMGYXLMV 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 很有趣的一道题,题解戳这。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxn = 200000 + 10; 8 const int maxm = 1000000 + 1... 阅读全文
posted @ 2015-08-02 08:54 AOQNRMGYXLMV 阅读(174) 评论(0) 推荐(0) 编辑
摘要: d(i, j)表示用i个邮局覆盖前j个村庄所需的最小花费则有状态转移方程:d(i, j) = min{ d(i-1, k) + w(k+1, j) }其中w(i, j)的值是可以预处理出来的。下面是四边形不等式优化的代码: 1 #include 2 #include 3 #include 4 ... 阅读全文
posted @ 2015-08-01 17:31 AOQNRMGYXLMV 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 把n个数分成m段,每段的值为(MAX - MIN)2,求所能划分得到的最小值。依然是先从小到大排个序,定义状态d(j, i)表示把前i个数划分成j段,所得到的最小值,则有状态转移方程:d(j, i) = min { d(j-1, k) + (ai - ak+1)2 | 0 ≤ k 2 #inclu... 阅读全文
posted @ 2015-08-01 13:24 AOQNRMGYXLMV 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题意:将n个数分成若干组,每组数字的个数不少于t个,要把每组的数字减小到这组最小值,求所有数字减少的最小值。先将这n个数从小到大排个序,可以想到一组里面的数一定是排序后相邻的。设d(i)表示前i个数分完组以后减少的最小值,考虑j~i为一组,则有状态转移方程还是一样的处理方法,设k 2 #inclu... 阅读全文
posted @ 2015-08-01 09:31 AOQNRMGYXLMV 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题意:n个数之间放m个障碍,分隔成m+1段。对于每段两两数相乘再求和,然后把这m+1个值加起来,让这个值最小。设:d(i, j)表示前i个数之间放j个炸弹能得到的最小值sum(i)为前缀和,cost(i)为前i个数两两相乘之和。则有状态转移方程:设0 ≤ l 2 #include 3 #incl... 阅读全文
posted @ 2015-07-31 21:54 AOQNRMGYXLMV 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 在kuangbin巨巨博客上学的。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int maxn = 500000 + 10; 9 int d[maxn], Q[maxn],... 阅读全文
posted @ 2015-07-31 16:06 AOQNRMGYXLMV 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 设d(u, j, 0)表示在以u为根的子树中至多走k步并且最终返回u,能吃到的最多的苹果。则有状态转移方程: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const i... 阅读全文
posted @ 2015-07-31 14:41 AOQNRMGYXLMV 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 这个题是POJ1849的加强版。先说一个很重要的结论,下面两种方法都是从这个结论出发的。一个人从起点遍历一颗树,如果最终要回到起点,走过的最小权值就是整棵树的权值的2倍。而且K个人的情况也是如此,大不了只有一个人走,其他K-1个人待着不动就行了。而题目中说了这些人不比回到原点,所以就想办法考虑哪些多... 阅读全文
posted @ 2015-07-31 13:27 AOQNRMGYXLMV 阅读(332) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 34 下一页