摘要: 这种tarjan+dp的水题我竟然还WA了两次,要小心! 1 type link=^node; 2 node=record 3 po:longint; 4 next:link; 5 end; 6 7 var rd,be,st,v,a,dp,dfn,low:arra... 阅读全文
posted @ 2014-08-04 16:48 acphile 阅读(211) 评论(0) 推荐(0)
摘要: 不难想到是一个布尔型dp,不难想到用f[i,j,k]表示区间[i,j]能否变为字母k不难想到对于f[i,j,k],拆[i,j]成两个区间,然后穷举k的每一个变换来判断感觉记忆化搜索写的比较顺,就写了记忆化 1 const a:array[1..4] of char=('W','I','N','G')... 阅读全文
posted @ 2014-08-04 16:45 acphile 阅读(124) 评论(0) 推荐(0)
摘要: 首先直接做多重背包肯定会TLE的,观察这个背包问题有什么特殊性呢物品种类和重量,价值是一定的,不同的是背包的容量和物品的数量由于当物品数量没有限制的时候,方案数是可以预处理出来的所以我们考虑用ans=物品数量没有限制时的方案数-物品超出限制的方案数来解决第一部分是可以用完全背包来解决的第二问不难想到... 阅读全文
posted @ 2014-08-04 16:36 acphile 阅读(183) 评论(0) 推荐(0)
摘要: 考虑到这道题n,m都很小,我们考虑先穷举起点i下面我们要做的是找出移走k个障碍后,点i所能到的最大距离我们可以把这个问题转化为判定性问题对于一对点i,j,如果他们之间存在一条路径,障碍数(包括起点终点)小于k,那么这两个点的点间距就是可行间距也就是说,我们对于每个起点,我们只要做一遍最短路径,然后穷... 阅读全文
posted @ 2014-08-04 16:21 acphile 阅读(123) 评论(0) 推荐(0)
摘要: 观察可得,最大的拆分方法是尽量拆成3,特殊的,如果最后剩下了1,那么就把3+1变成2+2然后高精度计算即可 1 var s2,s3,i,n,l:longint; 2 a:array[0..5010] of longint; 3 4 procedure mul(x,m:longint); 5 ... 阅读全文
posted @ 2014-08-04 16:13 acphile 阅读(141) 评论(0) 推荐(0)
摘要: 假如不存在相等的两个数不能配对,那很容易贪心得到,A中rank 1匹配B中rank 1A中rank2 匹配B中rank 2……有了相等不能匹配这个条件,那么A中rank i可能和rank i,i-1,i+1匹配也有可能三对数字交换匹配dp一下就好了 1 const inf=2000010; 2 ty... 阅读全文
posted @ 2014-08-04 16:09 acphile 阅读(138) 评论(0) 推荐(0)
摘要: 穷举水题 1 var v:array[0..410] of boolean; 2 q:array[0..3010] of longint; 3 ans,count,jud:array[0..1010] of longint; 4 x,i,j,n,m,tot,t,k:longint; 5 ... 阅读全文
posted @ 2014-08-04 16:06 acphile 阅读(150) 评论(0) 推荐(0)