【DP】
synlHR
这个作者很懒,什么都没留下…
展开
-
【DP】找连续数
HDU 5247 找连续数题意:输入数组长度n,查找次数m,输入数组。输入k,找排序后k长度的连续数的个数。题解:改变起始点i与终止点j,更新最大最小值,判断区间是否连续。 若区间差=最值差,连续; 若终止点出现过,跳出;记录后查询。#include <iostream>#include <algorithm>#include <cstring>...原创 2018-04-19 22:25:10 · 195 阅读 · 0 评论 -
【DP】硬币和数
POJ 1742 Coins题意:有n种硬币,求在m内能组成的价值数目。题解:i遍历硬币,j遍历价值,p标记已计数,t记录当前硬币使用个数,判断 当前价值未被计数,即p=0; 当前价值-当前硬币值可以被组成,即p-pr=1; 当前硬币数还够,即tr<ci;#include <iostream>#include <cstring>using nam...原创 2018-04-20 18:04:11 · 295 阅读 · 0 评论 -
【DP】
Luogu P2871 手链题意:有n件物品和容量为V的背包,输入各物品的重量c[i],价值w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。题解:i遍历每个物品,j遍历当前可拿总重量。(一维数组j倒序遍历,否则改变上次的值。) 若除本次外已拿的最大价值dp[j-ci]加上本次的价值比上次就拿够当前总重的价值大,取当前物品更新最大值; 否则不取,保持...原创 2018-05-09 19:12:44 · 161 阅读 · 0 评论 -
【DP】吃草数量
Luogu P2639 Bessie的体重问题题意:见题。题解:简单dp。#include<iostream>#include<cstring>using namespace std;int n,v,c[500],w[500],dp[45000];int main(){ memset(dp,0,sizeof(dp)); cin>>v&g...原创 2018-05-09 20:33:09 · 157 阅读 · 0 评论 -
【DP】Max Sum
HDU 1003 MaxSum题意:输入一个数组,找到一段相加和最大的区间,输出最大和以及起点终点。题解:从k点开始往sum上逐个累加,当 若sum>max,更新最大值、起点终点,继续累加; 若sum<max,不更新,继续累加,等待后续看情况; 若sum<0,不宜继续累加,更新sum=0,更新起点终点,重新累加;#include <iostream>...原创 2018-04-26 14:20:58 · 233 阅读 · 0 评论 -
【双DP】唱最多的歌
UVA 12563 Jin Ge Jin Qu hao题意:已知想唱的歌曲n和剩余时间t,和每首歌的时间a[i],以及一首能唱很久的jingejin,求最多能唱歌数和唱歌时间。规定每首歌开唱后不被打断,开唱后必须唱完,且只能唱一次。样例举例了最好每次留一分钟去开始jingejin。题解:使用两个背包,一个b[i]存唱的时间,一个c[i]存唱的数量。注意1时间范围是骗人的...原创 2018-07-23 21:56:29 · 203 阅读 · 0 评论