随笔分类 - XCPC——动态规划
摘要:将n拆分成任意个无标号正整数(也可认为是排好序)的方案数记为 暴力DP—— 两种考虑方式,第一维都是总和,对于第二维,一种是考虑前j种数,另一种是分成j个数。即第一种是完全背包,第二种是考虑最小的数是否为1转移。 数据分治优化—— 注意到两种DP
阅读全文
摘要:题目链接 首先看问题一(算最小周长),并没有用题解的神奇结论,而是直接整除分块枚举,取对应的最小x,在种可能内取最优的~~(能暴力算为什么要考虑结论呢)~~然而最后这部分被卡常了,,,整除分块换成枚举x才过,先总结一下这部分的常数问题: 对于整除分块,如果对于一个
阅读全文
摘要:题目链接 设f[i]表示还有i个数不在集合内的期望步数,尝试列一下转移式,会发现式子由转移到下一轮的期望步数和之后的DP值组成,考虑DP的转移过程,就会发现答案为转移到下一轮的期望步数期望的轮数(即把前者设为1之后的DP值)。 前者是易求的,考虑后者,如果直接考虑一轮第一次遇到0时
阅读全文
摘要:oi-wiki的讲解 1D1D 转移代价函数满足交叉优于包含,即可推出具有决策单调性。 然后比较一般的做法是,根据每个点能够作为被决策点的是一段区间,且区间随着点连续右移,可以用单调队列维护决策点,每次加入时弹出队尾所有能够完全覆盖的,然后到第一个不完全覆盖的,二分找出区间左端点。 对于被决策点不会
阅读全文
摘要:题目链接 首先是判断每个子集是否覆盖了整个矩形,离散化后暴力做是 ,会TLE。当时队友想了一个挺巧妙的容斥的做法,但写起来比较复杂。其实发现就是一个01取并集的过程,可以直接bitset优化掉32倍的常数就ok了! 然后是状态转移,其实是比较经典的问题:有向图第一次走到合法
阅读全文
摘要:题目链接 对于有向图的问题,先想DAG该怎么做,这点还是没错的。对于DAG,就是一个按照拓扑序的DP,从n出发,每个点考虑删掉几条边即可(因为一定是删掉通往的点最差的那些边)。然后就一直在想有环怎么处理,但似乎不存在正确的解决方案。 这时候就应该考虑dijkstra的思路,即按照答案从小到大更新。沿
阅读全文
摘要:题目链接 考虑状压DP,原本想的是一行行转移,而最后一行的状态需要记个,然后直接转移的话,需要枚举该行的2变成0或1,以及0是否选入集合,又是一个,复杂度爆炸,且难以优化状态。(原本还莽了一下,以为可以优化掉一些地方,然而全是2的数据就凉了。) 那么只能优化转移的方式了。所以这个
阅读全文