摘要: 335B - Palindrome题目: 给出一个字符串(均有小写字母组成),如果有长度为100的回文子串,输出该子串。否则输出最长的回文子串。分析: 虽然输入串的长度比较长,但是如果存在单个字母100或以上的话,直接输出即可。 利用抽屉原理发现,如果不存在上面所说的情况,长度不会超过26*99 dp[l][r]表示l到r的回文子串的长度,dp转移方式比较明显,记录一下得到最优值时的位置。 输出方案时,如果dp[1][len]>=100的话,显然可以输出长度100的子串,否则直接输出该长度。 具体实现用到了栈、队列保存信息,可以看代码。#include #include #incl... 阅读全文
posted @ 2013-09-15 22:37 yejinru 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 这里有状态压缩DP的好博文题目:题目比较神,自己看题目吧分析:大概有两种思路:1.dfs,判断正方形的话可以通过枚举对角线,大概每次减少4个三角形,加上一些小剪枝的话可以过。2.状压DP,先预处理出所有可以组成正方形的方案,根据题目的数据范围计算不会超过100个正方形方案。n个正方形用二进制的方式记录,每一位记录是否有没有引爆,则状态转移比较明显了。#include #include #include #include #include #include #include #include #include #include #include #include using namespace 阅读全文
posted @ 2013-09-15 20:55 yejinru 阅读(876) 评论(0) 推荐(0) 编辑
摘要: 题目:还是自己看题目吧trick:当不连通时不需要人去炸。否则,当桥的费用为0时当然需要一个人去炸。。。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;typedef unsigned long long ull;#define debug puts("here")#define rep(i,n) for(int i=0;i#d 阅读全文
posted @ 2013-09-15 20:10 yejinru 阅读(755) 评论(0) 推荐(0) 编辑
摘要: Water Tree给出一棵树,有三种操作:1 x:把以x为子树的节点全部置为12 x:把x以及他的所有祖先全部置为03 x:询问节点x的值分析: 昨晚看完题,马上想到直接树链剖分,在记录时间戳时需要记录一下出去时的时间戳,然后就是很裸很裸的树链剖分了。 稳稳的黄名节奏,因为一点私事所以没做导致延迟了 (ps:后来想了一下,不用树链剖分直接dfs序维护也行。。。)#include #include #include #include #include #include #include #include #include #include #include #include usin... 阅读全文
posted @ 2013-09-15 08:58 yejinru 阅读(387) 评论(0) 推荐(0) 编辑