递推
文章平均质量分 73
冷月残星
这个作者很懒,什么都没留下…
展开
-
动态规划,递推,高精度(Matches,uva 11375)
第二次用JAVA交题。还是写得一脸懵逼。给点链接JAVA高精度基础http://blog.csdn.net/l04205613/article/details/6873991第一次交JAVAhttp://blog.csdn.net/xl2015190026/article/details/52887202动态规划用刷表法,缺点是要先全部置0,优点是转移简单,原创 2016-11-03 21:37:32 · 374 阅读 · 0 评论 -
贪心,暴力,递推,物品拆分(Delicious Apples,HDU 5303)
客观上来讲,之所以会没看清数据范围说明,或者要想比较久的时间才能想通,或者思考出了一些错误的算法,是因为不够熟练,所以才没有分配到足够的精力在看数据,或者想通一些很基本的原理,或者压根没想对一些很基本的原理。主观上来讲,在检查读题的阶段,很多时候自己只是把已经知道的东西又验证了很多遍,这是十分低效的。自己更应该仔细地读一遍题目,带着在一字一句中寻找矛盾的心态去阅读才比较好。对于剩下的问题,就是原创 2017-06-03 16:19:34 · 359 阅读 · 0 评论 -
AC自动机,概率,递推(子串,UVA 11468)
一是记忆化搜索时数组开小了。二是忘写getfail毁一生,竟然还能过样例。本来昨天晚上就可以过掉的题目搞到今天中午。。。感觉自己空手debug能力好差,很多逗比的错误都发现不了。真的要一步一步仔细做好了。代码#include#define maxn 500#define size 62using namespace std;int ch[maxn][siz原创 2016-12-15 12:54:33 · 291 阅读 · 0 评论 -
置换,循环,递推(排列统计,UVA 11077)
把排列看成置换,再把置换写成循环乘积。观察循环,设某个循环中有c个元素,那么这些元素在排列中一共要交换c-1次才能到对应的位子,设有x个循环,那么需要交换的次数便是c1-1+c2-1+...+cx-1=n-x,这是一个跟元素个数以及循环个数有关的量。定义状态f(i,j),表示变成(1,2,..,i)需要j次交换的排列个数。那么容易得到状态转移方程f(i,j)=f(i-1,j)+f(原创 2016-11-25 16:49:18 · 553 阅读 · 0 评论 -
随机转移(Race to 1,UVA 11762)
就是状态转移是有概率的,但要求的是期望,那就用全期望公式写出状态转移方程就好了,这个状态机有些有趣,就是一定概率变成自己,所以写出出全期望公式后变形一下就是状态转移方程,然后正常的记忆化搜索就好了。画出状态转移图有助于写出正确的公式。在动态规划里状态转移方程就是一切,写错一点就什么都没了。画图是个不错的辅助技巧。写出公式后一定要化简,这甚至可能是最关键的一步。代码#include原创 2016-11-24 22:26:17 · 341 阅读 · 0 评论 -
概率DP,递推(麻球繁殖,UVA 11021)
能想到是概率DP,但是定义状态dp[i][j]第i天剩j个麻球。然后麻球数量可能会繁殖到非常多,状态太多数组开不下,然后就不会了。感觉自己总是轻易就放弃了,还是应该再思考一下,一般遇到这种想到DP但是数组开不下或者转移方程找不到或者转移方程太复杂的时候就应该想想可不可以优化,而不是直接就放弃。开不下就把状态定义得简单一些,看看是不是有哪些维是没必要记录,而只需要特别处理一下就好,或者重原创 2016-11-22 09:48:21 · 411 阅读 · 0 评论 -
排列组合,递推,记忆化搜索(葛伦堡博物馆,LA 4123)
就是容易发现一共有numo=(n-4)/2个O,一共有numr=(n+4)/2个R。然后不能有两个O连在一起,头和尾同时为O也不行。就是插空法啦。现在C(numr+1,numo)-C(numr-1,numo-2)。意思是numr+1个空里选numo个减去numr-1个空里选numo-2个。即随便插空减去头和尾都是O的情况。由于(numr-numo)书上用的是递推,记忆化搜索。虽然麻烦但原创 2016-11-15 09:45:37 · 648 阅读 · 0 评论 -
数位DP(数字和与倍数,uva 11361)
这道题拖了一整天,WA了无数发,感觉自己数位DP特别弱,其实可能就是因为自己数学比较弱,或者说在推导和代入繁杂的公式以及边界很粗糙的讨论上太不够严谨了,总是觉得大概对就对了,这在数学题上是非常致命的缺点,因为公式错一点点就直接WA,讨论一遗漏也直接WA。然而这道题真蛋疼,明明公式错了,然而样例甚至自己生成的大部分数据都能过。。。数位DP还需要大量的练习,太不够熟练了。然后是原创 2016-11-09 11:49:01 · 1619 阅读 · 0 评论 -
区间DP(多叉树的遍历,LA 3516)
放在数学专题里,想不出数学的方法,但觉得可以用区间DP求解。如果是二叉树就很好解决,只用枚举一下中间的回归点就好,复杂度O(n^3)。但是偏偏求得是多叉树,自己只能想到位向量枚举集合或者dfs的方法。可以剪枝但无法避免最差情况,然后就不会了。最近在紫书和大白书上做了很多动态规划的题目,有了很多感触,看了这道题的解法后又有了新的理解。就是说动态规划不一定只能从旧状态转移到新状态,也可原创 2016-11-07 21:45:43 · 746 阅读 · 0 评论 -
动态规划,递推,多段图(Ingenuous Cubrency,uva 11137)
多段图问题是一种特殊的动态规划。状态转移像是一种跳跃。动态规划的值是路径数。对于每一个状态,遍历所有可以转移的下一个状态,然后把自己的路径数加给它。或者对于每一个状态,遍历所有可以转移给他的状态,然后把它的路径数加给自己。题目往往会问有多少个,有多少种。一般来讲有两种解法:第一种是先枚举状态,再枚举转移,这时所求的路径数是转移的排列。上一题便是如此。第二种先枚举转移原创 2016-11-03 23:29:08 · 738 阅读 · 0 评论 -
前缀和,枚举+递推(Average,HDU 5353)
有n个节点,1瞬间就想起了Money Transfers这类问题一般都可以转化为环的切割,如何求出切割呢?可以求一个前缀和,如果sum[j]==sum[i](i我们会找到很多个sum的值,每一种值对应一个切割方法,值所对应的的多个节点就都是切割点。在本题我们就通过前缀和找到所有切割,然后对于每一段,可以直接贪心模拟看看是否ok。看了下官方题解原创 2017-07-12 13:23:18 · 307 阅读 · 0 评论