- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 CodeForces Round #180 (297A) - Parity Game
题意说能否使a串等于b串...a串的转换操作为: 1>在末位加上奇偶校验位(偶数个1为0...奇数个为0) 2>去掉a的首位 ... 1,2操作可以多次进行... 可见...若a的1为偶数个...末尾可以加任意多的0...如果a的1为奇数个..在a后加1后..a的1又变成偶数个了..若想能再在a的末尾加1...只能去掉a前面的一个1... 所以...若a有k个1..可以通
2013-04-30 10:47:31 1192
原创 UVa 10635 - Prince and Princess 问题转化..LCS巧妙算法..
问题简述: 两行有顺序的数找最长的公共子部分... 问题抽象: 将第二行的数映射成其在第一行的位置...那么问题就转化为了LCS.... LCS的nlogn解法: 用dp[ x ] 表示长度为 x 的子序列末尾最小可为的值...初始值dp[ x ]是很大的数...更新顺序为数列的左到右...这里有个很值得注意的情况...dp [ x ] 是非递减的....
2013-04-26 22:55:52 1296
原创 HDOJ - 3068 最长回文 Manacher
早就听说过这个方法..当时不理解就过了...今天再来写这题..带来的感觉很深刻... 充分利用前面判断过的内容...尽可能减少重复判断是Manacher的核心.... 预处理..但凡回文串的问题..在这个串的最头和最末以及每个字符中间加入相同的冗余字符..这样就可以把奇偶情况一起讨论了..记住最后结果除以2... dp [ i ] 代表以 s [ i ] 为中心的
2013-04-26 21:03:10 1069
原创 HDOJ - 1586 更新下KMP的模板...
模板题...更新模板...Program:#include#include#include#include#include#include#include#define ll long long #define oo 1000000000using namespace std; char s[2][1000005];int _next[1000005];in
2013-04-26 11:19:57 956
原创 HDOJ 4512 - 吉哥系列故事——完美队形I
简单的dp...枚举中间点...先处理中间点是一个还是两个..用dp [ i ]代表这个回文在后半段某个位置的最大长度...Program:#include#include#include#include#include#include#include#define ll long long #define oo 1000000000using namespa
2013-04-25 12:22:25 1126
原创 UVa 10755 - Garbage Heap 三维最大子矩阵问题转化为1维..
A上C(20,2)卡上下界...B上C(20,2)卡上下界...在C的方向上做一维的最大连续字串问题...这样把3维的最大子矩阵问题就转化为1维的了... 预处理...sum[ x ] [ y ] [ z ] 代表在z这个二维平面上...(1,1)和(x,y)分别为对角坐标的矩阵的所有数之和....Program://http://uva.onlinejudge.org
2013-04-24 16:42:24 1395
原创 POJ - 1050 To the Max ...二维最大子矩阵转化为1维
对于1维的问题...用两个下标卡起始位置和结束位置..当这段合>0时..结束位置的下标后移..否则开始下标前移...O(n)的时间复杂度... 此题是2维的情况.....用C(n,2)选择列的上下界.....然后问题就变成了1维的情况...O(n^3)的时间复杂度...Program:#include#include#include#include#incl
2013-04-23 21:15:00 862
原创 POJ 1903 - Jurassic Remains 中途相遇法(枚举)
神奇的枚举题~~~超级好的思路! 题意重现...从n(n 由此可见..个数都是浮云..奇偶才是本质...对于每个字母..有偶数个..为0..有奇数个为1..那么26个英文字母的情况总数为2^26.. 题意抽象..从n(n 如果暴力枚举...2^24=10^7...加些剪枝应该能过..毕竟给了10s.... 此题的超级优化....把24个串分成前后两
2013-04-23 19:38:35 1252
原创 HDOJ - 4503 湫湫系列故事——植树节
这道题就是抄袭Codeforces的一道原题..http://blog.csdn.net/kk303/article/details/8043469..把三人都是朋友看成Alice..三人都不是朋友看成Bob..一个题... Program:#include#include#include#include#include#define ll long longusi
2013-04-22 11:09:38 968
原创 HDOJ - 4523 威威猫系列故事——过生日 大数..注意细节..
m m>=3时...当n+p>=3...肯定YES~! ( 因为对于一个k边的凸多边形...切一刀可以得出任意 N久N久没写过大数..居然忘记读入的时候要反过来存了.....Program:#include#include#include#include#include#define ll long longusing namespace
2013-04-21 21:10:13 923
原创 CodeForces Round #179 (296B) - Yaroslav and Two Strings
直接求incomparable很复杂...反过来算..先算情况总数sum,和comparable的总数...sum-comparable=incomparable 求comparable用动态规划....dp[a][b] .....b为0代表0~a..上下关系为全等的方法数..
2013-04-21 18:08:04 1049
原创 HDOJ - 4504 简单DP...细心...
很简单的DP..但好几个地方的粗心~~狂WA13次....攒RP.... dp[ t ] 代表A得t分有多少种方法...注意的是这里要用二维的....我用的滚动数组.. 提供数据... 0 0 15 ans = 3 Program:#include#include#include#include#include#de
2013-04-20 10:44:35 883
原创 HDOJ - 4502 简单DP..
dp[ t ] 代表在 t 时刻能获得的最大工资..然后D就是...Program:#include#include#include#include#includeusing namespace std;struct node{ int s,e,p;}a[1005];int m,n,dp[105];bool cmp(node a,node b)
2013-04-19 23:00:28 894
原创 HDOJ - 3555 按位DP..
方法很简单..统计起来比较蛋疼... WA得想吐..参考了别人的代码才过的 ... 特别注意的是当前数字前面几位已经有49出现的情况.... Program:#include#include#include#include#include#include#include#include#define ll unsigned long long#de
2013-04-16 16:08:23 898
原创 HDOJ - 3714 三分搜索
昨天编程之美的C题搞不出来..看了下别人的方法...三分搜索水之...以前没写过... 三分从二分上发展来的...当这个函数不是单峰时,也能找到最值~~好牛逼.... 每次不仅取中点mid=(l+r)/2..还取令一个次中点mmid=(mid+r)/2...如果mid上的值比mmid优...r=mmid...否则 l=mid... 这题和昨天的C题可以说一模一样..
2013-04-15 19:15:47 831
原创 编程之美2013 初赛一 A - 竞价 学习大牛的思路
这题我做了N久也做不出....赛后看了大牛AC的思路....Program:#include#include#include#include#include#include#include#include#define ll long long#define oo 1000000007using namespace std; int judge(int
2013-04-14 09:41:33 2065 5
原创 HDOJ 4529 - N骑士问题 状态压缩DP
状态压缩DP果然比自己摸索出来的DP效率高多了...406ms..轻松飘过~~Program:#include#include#include#include#include#include#include#include#define ll long long#define oo 1000000007using namespace std;char arc[
2013-04-12 15:54:39 1210
原创 POJ - 1185 跑兵阵地 状态压缩DP
状态压缩DP...很简单了...一行最多10个...用1代表放炮兵..0代表不放...每行的状态最多1024种..并且还要合法..这样一来..一行的状态最多60种了... 能影响到当前行的只有上两行..所以用三维的DP...dp[t][x1][x2]....t代表哪一层了...x1代表上一层的状态..x2代表当前层的状态... dp[t][x1][x2]= max ( dp[t
2013-04-12 12:04:30 847
原创 HDOJ - 4559 排兵布阵 DP
由于一个炮能影响的范围最多到下两行...所以两行两行来DP..而两行的情况直接搜出来..由于n可能是奇数..为了处理方便..n为奇数时..加一行全0的..把n变为偶数... 数据太弱..自己出了个100*10的全1输入来跑...N久才出来..真正完美的解法还是应该用状态压缩DP...Program:#include#include#include#includ
2013-04-11 20:03:46 1047
原创 HDOJ 4529 - N骑士问题 DP
剪了我N久的枝...终于涉险飘过了...2958ms..... DP....因为马的范围只能影响到两行之内...所以我每两行两行处理...先把两行内放马的情况打出来....那么.两行放马10个以下互不冲突..有近5000种放法..直接dp..至少5000*5000*10=2.5*10^8..而且判断当前状态能否放在已有皇后的情况下..状态更新时,前后的马是否会互相攻击等相当耗时...
2013-04-11 15:02:38 1128
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人