09 2015 档案
摘要:第一开始想着枚举根节点,然后记忆化搜索。。结果TLE,最后还是看了一眼题解瞬间明白了。。唉,还是思维太局限了由于数据是按照从小到大排列的,可以自然地组成一颗二叉排序树。设dp[i][j]是区间[i,j]的元素可以组成的BST的最小值,则大区间的结果和根节点以及小区间的结果有关系,很明显区间DP,转移...
阅读全文
摘要:没有看书和题解做的一道树形DP题,思路很清晰。。只是debug上花了很久的时间才发现看错了条件。。并不是每个点都只能和一台服务器相邻,而是非服务器的点只能和一台服务器相邻。。看错了一个条件差距大了去了。。设d[u][col][fcol]代表节点为u,颜色为col,父亲节点为fa,颜色为fcol时的最...
阅读全文
摘要:典型的状态压缩DP,给出了每件作业的截止时间和花费,求让老师扣分最少的写作业方式。把完成n种作业用状态2^n-1表示,dp[s]表示完成状态s时,最小扣分。比如“111”,那么可以由“011”,“110”,“101”转移过来,分别表示选了0,1号作业,1,2号作业,0,2号作业。t【s】表示状态S记...
阅读全文
摘要:第一次做状态压缩dp。。没有思路。。看书看明白的,不过看完发现汝哥的做法多算了一些东西,完全可以省去不算。。用两个集合,s1表示恰好有一个人教的科目,s2表示至少有两个人教的科目。d(i,s1,s2),表示考虑了前i个人时的最小花费,0-m-1必须全选上,m到m-n-1才有可能出现选或者不选的决策,...
阅读全文
摘要:题意是挑选尽量多的人,并且每个人都不和他的父节点同时出现,很明显的最大独立集问题,难点在于如何判断方案是否唯一。详情请见刘汝佳《算法竞赛入门经典--第二版》P282#include#include#include#include#include#include#include#define INF ...
阅读全文
摘要:树型DP第一题。。。就是从boss到底层员工是一个树型结构,底层员工想加薪,如果每个boss都有超过T%的员工要求加薪,他就会往更高的bOSs传达,问如果让根节点的大boss接到加薪要求,最少要有多少名员工提出加薪要求。d[u]表示u如果提出加薪,所需要的员工数,很明显,最底层的员工肯定都要求加薪,...
阅读全文
摘要:第一开始想成了DP。尼玛后来才发现只有N条边,那就简单了。。从起点S遍历整棵树,从某点跳出来回到终点T,问最短路长度。然而从某点跳出时走过的路径是一个定值。。。。长度为整棵树的边长和sum*2-d1[i]。。然后求这个值加上回学校的路长的最小值就好了#include #include #includ...
阅读全文
摘要:求1到N的次短路,到某个顶点v的次短路有两种可能,一是到其他某个顶点u的最短路+edge(u,v)二是到其他某个点u的次短路+edge(u,v);因此在松弛的时候不仅要记录最短路,同时也要记录次短路#include#include#include#include#include#include#in...
阅读全文