摘要: 这个提出的真心非常好!YM!题意:给定一棵无根树,问至少需要添加多少条边,使得每个节点属于且仅属于一个圈,并且,每个圈的节点数至少为3。若无解则输出-1,否则输出至少添加的边数。题解:如果不知道这个是TreeDP的话或者我大概会往图论方面想的,求SCC啊之类的。自己YY的时候没有注意到,如果是两个子链合成一个圈的话,那么根节点一定是属于该圈,于是一直在郁闷怎么分类讨论若干种转移,毕竟这种写法还是太奇葩了。一开始我的状态设计是:f[0, u]表示根节点u属于某个圈,且以u为根的整棵子树都符合要求,所需要添加的最少边数。f[1, u]表示根节点u属于某条链,且以u为根的整棵子树除了该链之外都符合要 阅读全文
posted @ 2012-10-04 22:03 proverbs 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 题意:容器中有 n 种原子,现提供 m 种光子,这 n 种原子中能量之差等于提供的 m 种光子之一所具有的能量,就认为这两种原子是处在容器在是危险的,现在要求取走一些原子,使得容器中的原子处在一块是安全的,同时要求剩下的原子的能量和最大。思路:很明显的树形dp,每两个处于会产生危险的原子连一条无向边,注意建图完了可能是一个森林!PS:不会有环么?我AC了以后才发现这个问题。。。网上都没提这事,不知道我没完全理解题?View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 阅读全文
posted @ 2012-10-04 21:02 proverbs 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题意:有一道线性篱笆由N个连续的木板组成。有K个工人,你要叫他们给木板涂色。每个工人有3个参数:L 表示 这个工人可以涂的最大木板数目,S表示这个工人站在哪一块木板,P表示这个工人每涂一个木板可以得到的钱。要注意的是,工人i可以选择不涂任何木板,否则,他的涂色区域必须是连续的一段,并且S[i]必须包含在内。 最后还有,每块木板只能被涂一次。思路:第一眼,水题~dp[i][j]表示第i个人刷的最后一面墙是j时的最大获利一看数据范围,我水了。。。怎么优化呢?dp[i][j]含义同上dp[i][j]=max(dp[i-1][k]+(j-k)*p[i]) j-l[i]+1<=k+1<=s[ 阅读全文
posted @ 2012-10-04 20:55 proverbs 阅读(2139) 评论(0) 推荐(0) 编辑
摘要: 题意:定义一种操作,操作i就是将a[i]-a[i+1]取出进行合并,再加入到a[i]的位置(我自己臆测的题意),进行n-1次操作后,会剩下一个数字。给定a[1]~a[n]及目标t(最后剩下的数字),求操作顺序。思路:相当经典!此题相当于在序列之间添加+-两种符号使得答案是t最后按照+-号输出就是了PS:第一个符号必定是减号!View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 #define N 120 6 #define WC 10000 7 8 using 阅读全文
posted @ 2012-10-04 14:45 proverbs 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 思路:与a有关的逆序对数=(在a之前出现的比a大的数+在a之后出现的比a小的数)/2当我们删除a时,减少的是 与a有关的逆序对数,当我们把a的位置填充b时增加的是 与b有关的逆序对数,可以用树状数组求这样我们相处了nmlogK的算法,显然是不能承受的(K=500000)但是我们发现当a相同时我们可以将所有的b在logn的时间内算出来,这样复杂度就成了(m+n)logK了完全可以承受~PS:不知道为什么我和别人用一样的思路我的代码怎么比他们快3倍啊。。求解释。。(卖萌。。。。)View Code 1 #include <cstdio> 2 #include <cstring&g 阅读全文
posted @ 2012-10-04 10:56 proverbs 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 题意:题意:给出两行数,求上下匹配的最多组数是多少。匹配规则1,匹配对的数字必须相同2.每个匹配必须有且只能有一个匹配与之相交叉,且相交叉的两组匹配数字必须不同2,一个数最多只能匹配一次思路:其实凭感觉瞎写呗。类似于最长公共子序列的方程。dp[i][j]=max(dp[i-1][j-1],dp[i-1][j],dp[i][j-1],dp[pi-1][pj-1]+2) 表示前a的前i个数和b的前j个数匹配的最大值依次含义分别是:i,j都不匹配;i不参与匹配;j不参与匹配,i,j和前面的某个符合要求的字符匹配View Code 1 #include <cstdio> 2 #includ 阅读全文
posted @ 2012-10-04 00:00 proverbs 阅读(304) 评论(0) 推荐(0) 编辑