dp入门题解
学dp学到自闭(真的判断不出是个dp问题哇)
来看一下最近学的dp简单的题库.
1.01背包问题(P1048)
这个的特点是每种东西只能拿一次.
https://www.luogu.com.cn/problem/P1048
二维dp:
for(int i=;i<=m;i++)
{
scanf("%d%d",&w[i],&val[i]);
}
for(int i=;i<=m;i++)
for(int j=t;j>=;j--) //注意这个地方是倒着来的
{
if(j>=w[i])
{
dp[i][j]=max(dp[i-][j-w[i]]+val[i],dp[i-][j]);
}
else
{
dp[i][j]=dp[i-][j];
}
}
printf("%d",dp[m][t]);
一维dp:
for(int i=;i<=m;i++)
{
scanf("%d%d",&w[i],&val[i]);
}
for(int i=;i<=m;i++)
{
for(int j=t;j>=;j--)
{
if(j>=w[i])
{
dp[j]=max(dp[j-w[i]]+val[i], dp[j]);
}
}
}
01背包问题可以再加一个例题:
https://www.luogu.com.cn/problem/P1802
for(int i=;i<=n;i++){
for(int j=x1;j>=;j--){
if(j>=b[i]){//如果有足够的药剂打赢别人,则看是输好还是赢好
f[j]=max(f[j]+a[i][],f[j-b[i]]+a[i][]);
}
else f[j]+=a[i][];//没有足够药剂就一个都不用直接认输,不然就浪费了药剂
}
}
2.完全背包(P1616)
这个与上一个的区别在于:这次的物品可以无限取.每种东西是不限量的.
代码的区别也很简单,这次是正着来的
https://www.luogu.com.cn/problem/P1616
for(int i=;i<=n;i++)
for(int j=w[i];j<=V;j++)
f[j]=max(f[j],f[j-w[i]]+c[i]);
dp入门题解的更多相关文章
- 【dp入门题】【跟着14练dp吧...囧】
A HDU_2048 数塔 dp入门题——数塔问题:求路径的最大和: 状态方程: dp[i][j] = max(dp[i+1][j], dp[i+1][j+1])+a[i][j];dp[n][j] = ...
- 【专章】dp入门
动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. ***实践是检验真理的唯一标准,看再多文章不如自己动手做几道!!!*** 先 ...
- 【学习笔记】dp入门
知识点 动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. 先看看这段话 动态规划(dynamic programming) ...
- wyh的dp入门刷题笔记
0: 靠前感觉之前dp抄题解都是抄的题解,自己从没有真正理解过dp.wyh下了很大决心从头学dp,于是便有了这篇文章. 1.背包 前四讲01背包&多重背包&完全背包(混合背包) :樱花 ...
- codevs3500 快速幂入门题解
codevs3500 快速幂入门题解 //我也是抄的题解 题目描述 Description 输入3个数a,b,c,求a^b mod c=? 输入描述 Input Description 三个数a,b, ...
- poj 3254 状压dp入门题
1.poj 3254 Corn Fields 状态压缩dp入门题 2.总结:二进制实在巧妙,以前从来没想过可以这样用. 题意:n行m列,1表示肥沃,0表示贫瘠,把牛放在肥沃处,要求所有牛不能相 ...
- xbz分组题B 吉利数字 数位dp入门
B吉利数字时限:1s [题目描述]算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数.现在叫你计算某个区间内有多少个吉利数字. [输入]第 ...
- 数位dp入门 hdu2089 不要62
数位dp入门 hdu2089 不要62 题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以..貌似可以,但是 ...
- POJ 2342 树形DP入门题
有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...
随机推荐
- 【树形dp】Farmcraft
题目 In a village called Byteville, there are houses connected with N-1 roads. For each pair of houses ...
- 51单片机入门1--与C语言的交接
我们即将进入51单片机的编程学习,咱们今天就来讲解一下单片机中的C语言(你可以称作C51) 在说编程之前,要先说一些别的东西: 二进制,八进制,十六进制 二进制中只有数字0和1,在二进制中1+1为10 ...
- 扯淡 Spring BeanDefinition
相关文章 Spring 整体架构 编译Spring5.2.0源码 Spring-资源加载 Spring 容器的初始化 Spring-AliasRegistry Spring 获取单例流程(一) Spr ...
- 《算法笔记》6.7小节 问题 A: 简单计算器
又是大模拟淦淦淦淦淦淦淦 思路: 这道题我居然用的队列orz. 言归正传,这道题就是模拟计算器.从读题目样例可以发现,数字的个数只比符号的个数多一个,那么这就给我们了思路:用队列,先提前放出一个数,每 ...
- python基础知识练习3
1.如何实现 "1,2,3" 变成 ['1','2','3'] ? 如何实现['1','2','3']变成[1,2,3] ?(代码题) # 第一个问题 str1 = "1 ...
- Oracle expdp导出分区表,query条件带有rownum
Oracle expdp导出分区表,query条件带有rownum 前言 在做数据脱敏的时候,对一张刚好是分区表的表做导出,为了只取出部分数据看是否数据可以正常脱敏,在query中带上rownum. ...
- 精简CSS代码,提高代码的可读性和加载速度
前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大 ...
- 如何白嫖微软Azure12个月及避坑指南
Azure是微软提供的一个云服务平台.是全球除了AWS外最大的云服务提供商.Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务.这里的Azure是Azure国际不是 ...
- Python-自动用0补取长度
描述 Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0. 语法 zfill()方法语法: str.zfill(width) 参数 width -- 指定字符串的长度. ...
- 2018年BRATS 肿瘤分割挑战赛第三名分割方案One-pass Multi-task Networks with Cross-task Guided Attention for Brain Tumor Segmentation
首先说一下我对这个方案的看法,相比第一名与第二名的方案,这个方案的分割方法确实复杂的多,原论文是发表在MICCAI,后来砖投到IEEE image processing(SCI 1区),总体感觉给人一 ...