dp
STcyclone
这个作者很懒,什么都没留下…
展开
-
VIJOS 1999 小h的妹子树三
题意简述给定节点个数n和树高h(树根高为0),求出满足节点数位n,树高为h的二叉树的个数 答案对p取模,T组数据 对于100%的数据,满足1<=n<=1200,1<=h<=1200,1<=T<=2000000,1<=P<=1007。分析这题的数据范围提示我们要将所有询问预处理出来 而二叉树计数问题与卷积有着比较密切的联系,模数较小也提示我们这题正解很有可能就是FFT设有n个节点,高度为h的二叉原创 2016-05-18 00:04:52 · 3771 阅读 · 0 评论 -
VIJOS1991 二人抓牌
刷水有益健康 很经典的题递推比记忆化搜索快很多 时间约缩短了60%设a[i]表示第i个数 sum(i,j)表示i~j的数之和 想到了2种dp状态设计 f[i][j]表示先手取i~j的数最多能获得多少价值 f[i][j]=max{a[i]+sum(i,j)-f[i+1,j],a[j]+sum(i,j)-f[i,j-1]} Ans=f[1][n] 需要用前缀和支持求sum(i,j) g原创 2016-05-07 22:49:40 · 916 阅读 · 0 评论 -
VIJOS 1547 逆转,然后再见
题意简述有3部车在k个城市间旅游,每次只能移动一部车,去第k个城市的前提是前k-1个城市都去过。 求旅行完k个城市的最短距离分析将状态表示出来,直接dp即可 记f[a,b,c]表示三部车分别在a,b,c城市的最短距离(a>b>c) 那么枚举每个可行状态,更新f[a+1,b,c],f[a+1,a,c],f[a+1,b,c]即可代码#include<cstdio>#define fo(i,a,b原创 2016-06-27 23:08:07 · 935 阅读 · 0 评论 -
VIJOS 1278 My Story Your Song-雨天
题意简述在前n个正整数中选取m个数ai,使得1/ai之和为X/Y分析HNOI的一道题 《彩票》 直接n选m的搜索,加上可行性剪枝(继续选总和一定小于或大于X/Y)似乎就可以过了 但是时间效率不太理想尝试了2个优化: 1预处理1/i 减少实数运算 2先dp一下前n个数选m个hash值为p是否可行 在搜索时发现当前hash值不可行就直接剪枝这2个优化效果都比较显著 优化2更是将效率提升为原创 2016-06-27 23:25:51 · 651 阅读 · 0 评论