![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
acmer_zp
这个作者很懒,什么都没留下…
展开
-
区间dp
HDU4283 You Are the One 题意:有n个人按1,2,3…n的顺序排好,每个人都有一个unhappy值;如果第i个人第k个上台,那么他的unhappy值为(k-1)*unhappy[i]。他们上台前需要经过一个小黑屋(相当于可以决定第i个人第几个上场),求所有人上完场最少的unhappy总和是多少; 分析:区间dp; i,j代表从第i个人到第j个人的最优解。现在第i个人上场的原创 2017-03-05 18:41:33 · 263 阅读 · 0 评论 -
hdu 6156(数位dp)
题目链接 题意:定义了一个f函数f(n,k)=k(如果数字n在k进制下是回文数字)否则的话f(n,k)=1。然后问在区间[L,R]之内进制在l到r之间的f函数的所有所有值之和是多少。 思路:因为进制比较小所以可以直接枚举进制然后再进行数位dp计算结果。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>原创 2017-08-23 15:27:39 · 348 阅读 · 0 评论 -
数位dp(恨7不成妻)
HDU-4507 吉哥系列故事——恨7不成妻 数位DP 思路:想必普通的统计满足条件的个数都会吧,这里就不在赘述了, dp[i][j][k]代表长度为i,数字对7取余数为j,数字各个位数加起来对7取余数k;仅仅用dp[i][j][k]的值代表个数是不能得到答案的,还要统计满足条件的和还有平方和; 开结构体,维护和的时候假如是算332+321则可以拆分为300*2(就是以3开头的长度为3的有多原创 2017-03-01 21:42:13 · 444 阅读 · 0 评论 -
01背包变形(poj2184)
题目链接 题意:给定n头牛,每一个牛都有一个智商和默契值,要求选出一些牛,使得它们的智商和>=0且默契和>=0是智商和+默契和最大; 思路:没有 0.0。。。最后还是看了好久大佬的博客才想通的; 吧前面的值看做01背包的费用,后面的值看做01背包的价值; dp[i]代表费用为i时最大价值是多少,因为有负数所以想了好久都没想到怎么处理,最后看到大佬的解法,将10w这个点看做坐标轴原点,大于10原创 2017-04-26 19:46:04 · 334 阅读 · 0 评论 -
有关删除数字的dp问题
题意:给定一个数字(100000位)求删除最少的数字使其%6为0(不能有前导0); Input 10010456Output 14Input 211Output 2-1s #include<cstdio>#include<cstring>#include<vector>#include<iostream>#include<algorithm>using namespace std;co原创 2017-04-12 09:06:38 · 432 阅读 · 0 评论 -
区间dp(CF 149D Coloring Brackets)
题意:给一个给定括号序列,给该括号上色,上色有三个要求 1、只有三种上色方案,不上色,上红色,上蓝色 2、每对括号必须只能给其中的一个上色 3、相邻的两个不能上同色,可以都不上色 求0-len-1这一区间内有多少种上色方案; 思路:区间dp,dp[l][r][i][j]代表区间l~r(l图i颜色,r图j颜色)(0代表无色,1代表蓝色,2代表红色); 则 if(l+1==r) 说明就只有原创 2017-03-07 20:29:17 · 329 阅读 · 0 评论 -
区间dp(Food Delivery )
zoj 3469 Food Delivery 题意:有一家快餐店送外卖,现在同时有n个家庭打进电话订购,送货员得以1/V(输入的值就是1/V)的速度一家一家的运送,但是每一个家庭都有一个不开心的值,每分钟都会增加一倍,值达到一定程度,该家庭将不会再订购外卖了,现在为了以后有更多的家庭订购,要将外卖送到的情况下使得所有用户的不开心值总和达到最小; 思路:将所有的点排序(包括餐馆),排序后从餐馆的位原创 2017-03-06 19:50:34 · 488 阅读 · 0 评论 -
01,完全,多重背包
01背包每个只能背一次优化为一维数组后要从后往前背。 完全背包每个有多次所以可以从后往前背。 多重背包转化为01和多重背包求解。#include &amp;lt;cstdio&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt;iostream&amp;gt;#include &amp;lt;algorithm&原创 2016-11-22 15:02:59 · 274 阅读 · 0 评论 -
数位dp
Codeforces 55D Beautiful Number 题意:n组测试数据,每组给你一个区间要求出在这区间内有多少个数字能被它的各个位上的数字整除(0除外)。 思路:dp[i][j][k],i代表当前是第几位,j对2520取余后的数,k代表当前所有位数的lcm,空间复杂度为18*2520*2520会炸,但是1~9的最小公倍数最多只有48个是2520的所有因子,可以hash一下优化空间,复原创 2017-02-22 21:26:03 · 246 阅读 · 0 评论 -
树形dp
HDU 2196 题意:给一颗树,求出每个点到其距离最远的点的距离。 输入是,行的编号的点到第一个值的点的距离是第三个点的值;行的编号是从2开始的; 思路:每一个点距离其他点的最大距离只有可能来自两个方向,1是来自以改点为根的子树上,2是来自其父节点;但是有可能其父节点的第一种情况就是来自这个点(比如u->v,以u为根的子树上的最远距离来自以v节点为根的子树),所以在统计第一种情况是要统计最大原创 2017-03-02 17:47:32 · 299 阅读 · 0 评论 -
树形dp(Fire)
POJ 2152 经典树形dp 一张一弛,解题之道陈启峰 具体证明点上面的链接,最后一个例题就是题意也在里面;#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>const int maxn=1e6+10;const int inf=0x3f3f3f3f;using namespace std;原创 2017-03-03 21:27:57 · 338 阅读 · 0 评论 -
计数dp
1265: Hmz 的女装 思路:当起始点颜色固定后,我们可以依次求出其往后的每个点的涂色方式,包含和起始点颜色相同还有和起始点颜色不同,而当前点的状态可以由上一个点的状态推出来,最后选择和起始点不同的方式数就好了(起点终点颜色相同),又分成了两段,两段相成就好;#include<cstdio>#include<queue>#include<cstring>#include<iostream原创 2017-04-24 10:52:16 · 665 阅读 · 0 评论