摘要:
这是2014年ACM亚洲区预赛牡丹江现场赛的一道题,铜牌题,可惜当时一路WA到死。。。只有乘法的后缀表达式的特点有两个:(1)数字的数量一定大于‘*’的数量(2)最后一位一定是‘*’;数字比*多的话,*怎么排列都无所谓,因为1111即可以看成4个1,也可以看成1111,总可以与‘*’结合。所以在... 阅读全文
摘要:
http://blog.csdn.net/skiffloveblue/article/details/7032290。。先记着 阅读全文
摘要:
问题: 1. 将n划分成最大数不超过m的划分数。2. 将n划分成m个正整数之和的划分数。 一。将n划分成最大数不大于m的划分法:即 n = n1 + n2 + n3+......nk 其中n1 >= n2 >= n3........>=nk;且n1 <= m; 1).若是划分多个整数可以存在相同的: 阅读全文
摘要:
第一开始想着枚举根节点,然后记忆化搜索。。结果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... 阅读全文