
动态规划
文章平均质量分 69
sky-edge
这个作者很懒,什么都没留下…
展开
-
SPOJ AMR11A DP
倒着DP,dp[i][j]表示从i,j走到终点的话,i,j点的初始最小体力值正着DP只能DP最大得分,所以是错的,或者可以二分答案,然后正着DP跑看是否合法,因为正着DP在走到每个地方都是以尽量最大体力值的去走,所以符合条件#include #include #include #include #include #include #include #include usin原创 2016-07-14 18:29:59 · 331 阅读 · 0 评论 -
HDU 5459 Jesus Is Here dp+预处理
题意: s1="c",s2="ff",对于任意i>=3,si=si-1+si-2。给定n,求n中所有满足iT组数据,T题解:这题有递推的感觉,但最后还是队友做出来的(给力的队友啊),先用3个数组,num[],len[],dis[]分别表示第i个串中c的个数(即等于cff的个数),这个串的长度,和所有的c到最后一个字符的距离之和。然后num[i]=num[i-1]+num[i-2],le原创 2016-03-07 14:05:22 · 340 阅读 · 0 评论 -
HDU 5443 The Water Problem RMQ/暴力
给一个序列,长度RMQ算法,用ST(Sparse Table)算法在线处理即可。学习了一发RMQ算法代码:#include #include #include #include #include #include #include #include #include #include #include #include using namespace原创 2016-03-07 17:24:25 · 369 阅读 · 0 评论 -
CDOJ 1131 男神的礼物 石子合并
代码:#include #include #include #include #include using namespace std;int dp[100][100][2];void max(int a, int b);int main(){ int T, n, a; scanf("%d", &T); while (T--) { memset(dp, -1, s原创 2016-04-01 12:42:49 · 293 阅读 · 0 评论 -
CDOJ 1133 菲波拉契数制 01背包
代码:#include #include #include #include #include using namespace std;int Fib[26];int Num[100001];int A[100001][26];int dp[26][2];void MakeFib();void MakeAllNum();int main(){ int T, n;原创 2016-04-01 12:45:05 · 399 阅读 · 0 评论 -
CDOJ 1137 邱老师选妹子 数位dp
经典的不要62和4的题。。。先附代码吧,,有时间再贴贴思路。。。反正网上一大堆(那我当时为什么只去盯着学校的dfs盯了那么久。。。。看用迭代写的,感觉容易理解多了。。。)代码:#include #include #include #include using namespace std;#define maxn 1000005int dp[8][12];int lnum[原创 2016-04-07 23:28:30 · 495 阅读 · 0 评论 -
CDOJ 1134 男神的约会 状压dp
范围都很小,所以状压就可以,不会T其实BFS队列也可以做,原理一样的代码:#include #include #include #include #include #include #include using namespace std;#define INF 99999999int pow_2[10];int grid[10][10];int dp[1原创 2016-04-13 17:14:33 · 350 阅读 · 0 评论 -
CDOJ 251 导弹拦截 LIS
nlogn的最长上升子序列,但是要输出LIS的长度和一个最小字典序的LIS。然后怎么输出这个最小字典序的LIS就成了问题,然后就翻被人的题解,发现就只有还保存那个F[]数组就行F数组还是存储的到这个数的LIS的长度,然后假如F[i]==F[j],则必有a[i]>=a[j],所以就肯定选择a[j]是对的然后就倒着扫一遍,相同的F[i]就取i靠后的那个。代码:#includ原创 2016-04-13 23:17:45 · 525 阅读 · 0 评论 -
CDOJ 1139 菲波拉契数制升级版 dp
唔,做法的话,当年的PPT上讲的挺详细的,回头再来补一发吧贴代码 ,好久没见的1A了:#include #include #include #include #include using namespace std;#define ll long long#define maxn 1000000000000000000ll Fib[88];int A[90], N原创 2016-04-15 14:03:02 · 436 阅读 · 0 评论 -
CDOJ 1136 邱老师玩游戏 树形01背包
邱老师最近在玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中邱老师允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮邱老师算出要获得尽量多的宝物应该攻克哪M个城堡吗?先把依赖关系建成树,因为可能是森林,所以再建一个根节点把每个树的根节点连起来就可以。然后树上跑dfs,在回原创 2016-04-16 13:19:18 · 593 阅读 · 0 评论 -
HDU 5445 Food Problem 多重背包+二进制优化
据说也可以用单调队列优化多重背包,但是我不会,所以还是选择了二进制优化。。。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5445题意:先给n,m,p,表示有n种甜品,m种卡车,需要的甜品总能量为p,然后有n行,每行有ti,ui,vi,表示第i种甜品的能量值,体积大小,该种甜品个数。然后有m行,每行有xi,yi,zi,表示第i原创 2016-03-07 00:21:30 · 372 阅读 · 0 评论