P1958 上学路线

题目链接:P1958 上学路线 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
using namespace std;
int mapp[20][20], dp[20][20];int main() {int a, b, n, x, y;cin >> a >> b >> n;for (int i = 0; i < n; i++) {cin >> x >> y;mapp[x][y] = 1;}dp[1][1] = 1;dp[1][2] = 1;dp[2][1] = 1;for (int i = 1; i <= a; i++) {for (int j = 1; j <= b; j++) {if (i == 1 && j == 1) {continue;}if (mapp[i][j]) {dp[i][j] = 0;} else {dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}cout << dp[a][b];return 0;
}

P1359 租用游艇

题目链接:P1359 租用游艇 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int r[210][210], dp[210];int main() {int n;cin >> n;for (int i = 1; i < n; i++) {for (int j = i + 1; j <= n; j++) {cin >> r[i][j];}}for (int i = 1; i <= n; i++) {dp[i] = r[1][i];}for (int i = 2; i <= n; i++) {for (int j = 1; j < i; j++) {dp[i] = min(dp[i], dp[j] + r[j][i]);}}cout << dp[n];return 0;
}

P1244 [NOI2000] 青蛙过河

题目链接:P1244 [NOI2000] 青蛙过河 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
using namespace std;int main() {int h, k;cin >> h >> k;cout << (k + 1)*(1 << h);return 0;
}

P1130 红牌

题目链接:P1130 红牌 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <algorithm>
using namespace std;
int dp[2010][2010], a[2010][2010];int main() {int n, m;cin >> n >> m;for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {scanf("%d", &a[j][i]);}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (j == 1) {dp[i][j] = min(dp[i - 1][j], dp[i - 1][m]) + a[i][j];} else {dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j]) + a[i][j];}}}int ans = (1 << 30);for (int i = 1; i <= m; i++) {ans = min(ans, dp[n][i]);}cout << ans;return 0;
}

P1734 最大约数和

题目链接:P1734 最大约数和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

01背包:s是背包容量,下标i、j是物品重量,a[i]是物品价值。

筛法预处理。

先遍历物品再遍历背包容量。

#include <iostream>
#include <algorithm>
using namespace std;
int a[1010], dp[1010];int main() {int s;cin >> s;for (int i = 1; i <= s; i++) {for (int j = i * 2; j <= s; j += i) {a[j] += i;}}for (int i = 1; i <= s; i++) {for (int j = i; j <= s; j++) {dp[j] = max(dp[j], dp[j - i] + a[i]);}}cout << dp[s];return 0;
}

P1048 [NOIP2005 普及组] 采药

题目链接:P1048 [NOIP2005 普及组] 采药 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

01背包,注意枚举背包容量时要从大到小,否则会重复放入。

#include <iostream>
#include <algorithm>
using namespace std;
int dp[1010], c[1010], w[1010];int main() {int t, m;cin >> t >> m;for (int i = 1; i <= m; i++) {cin >> c[i] >> w[i];}for (int i = 1; i <= m; i++) {//先枚举物品for (int j = t; j >= c[i]; j--) {//再枚举背包容量dp[j] = max(dp[j], dp[j - c[i]] + w[i]);}}cout << dp[t];return 0;
}

P1060 [NOIP2006 普及组] 开心的金明

题目链接:P1060 [NOIP2006 普及组] 开心的金明 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <algorithm>
using namespace std;
int v[100010], w[100010], dp[30010];int main() {int n, m;cin >> n >> m;for (int i = 1; i <= m; i++) {scanf("%d %d", &v[i], &w[i]);}for (int i = 1; i <= m; i++) {for (int j = n; j >= v[i]; j--) {dp[j] = max(dp[j], dp[j - v[i]] + v[i] * w[i]);}}cout << dp[n];return 0;
}

P3009 [USACO11JAN]Profits S

题目链接:P3009 [USACO11JAN]Profits S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

最长子段和,注意负数的情况。

#include <iostream>
#include <algorithm>
using namespace std;
int p[100010], dp[100010];int main() {int n, ans = -(1 << 30);cin >> n;for (int i = 1; i <= n; i++) {scanf("%d", &p[i]);}for (int i = 1; i <= n; i++) {dp[i] = max(dp[i - 1] + p[i], p[i]);}for (int i = 1; i <= n; i++) {ans = max(ans, dp[i]);}cout << ans;return 0;
}

P1507 NASA的食物计划

题目链接:P1507 NASA的食物计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

01背包注意防止重复放入,递减枚举。

#include <iostream>
#include <algorithm>
using namespace std;
int v[100], w[100], c[100], dp[500][500];int main() {int vmax, wmax, n;cin >> vmax >> wmax >> n;for (int i = 1; i <= n; i++) {cin >> v[i] >> w[i] >> c[i];}for (int i = 1; i <= n; i++) { //先枚举物品for (int j = vmax; j >= v[i]; j--) { //再枚举体积for (int k = wmax; k >= w[i]; k--) { //再枚举质量dp[j][k] = max(dp[j][k], dp[j - v[i]][k - w[i]] + c[i]);}}}cout << dp[vmax][wmax];return 0;
}

P2430 严酷的训练

题目链接:P2430 严酷的训练 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <algorithm>
using namespace std;
int tx[5010], ty[5010], t[5010], dp[5010], w[5010];int main() {int x, y, m, n, tmax;cin >> x >> y >> m >> n;for (int i = 1; i <= n; i++) {cin >> ty[i];tx[i] = ty[i] * y / x;}for (int i = 1; i <= m; i++) {int j;cin >> j;t[i] = tx[j];cin >> w[i];}cin >> tmax;for (int i = 1; i <= m; i++) {for (int j = tmax; j >= t[i]; j--) {dp[j] = max(dp[j], dp[j - t[i]] + w[i]);}}cout << dp[tmax];return 0;
}

P2663 越越的组队

题目链接:P2663 越越的组队 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

dp[j][k],dp[j][k]==1表示选j人获得k分可以实现

dp[j][k] |= dp[j - 1][k - a[i]]:如果选j人得到k分可以实现,则选j-1人得到k-a[i]分也可以实现,区别在于选不选a[i]

#include <iostream>
#include <algorithm>
using namespace std;
int a[105];bool dp[105][10010];//dp[j][k],dp[j][k]==1表示选j人获得k分可以实现
int main() {int n, sum = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];sum += a[i];}dp[0][0] = 1;for (int i = 1; i <= n; i++) {for (int j = i; j >= 1; j--) {for (int k = sum >> 1; k >= a[i]; k--) {dp[j][k] |= dp[j - 1][k - a[i]];}}}for (int i = sum >> 1; i >= 0; i--) {if (dp[n >> 1][i]) {cout << i;return 0;}}return 0;
}

P2722 [USACO3.1]总分 Score Inflation

题目链接:P2722 [USACO3.1]总分 Score Inflation - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

完全背包:

#include <iostream>
#include <algorithm>
using namespace std;
int dp[10000010], t[10010], p[10010];int main() {int m, n;cin >> m >> n;for (int i = 1; i <= n; i++) {cin >> p[i] >> t[i];}for (int i = 1; i <= n; i++) {for (int j = 0; j <= m; j++) {if (j >= t[i]) {dp[j] = max(dp[j], dp[j - t[i]] + p[i]);}}}cout << dp[m];return 0;
}

P7774 [COCI 2009-2010 #2] KUTEVI

题目链接:P7774 [COCI 2009-2010 #2] KUTEVI - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
using namespace std;
int a[15], b[15];
bool dp[400];int main() {int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = 1; i <= m; i++) {cin >> b[i];}dp[0] = 1;for (int i = 1; i <= n; i++) {for (int j = 0; j <= 1000; j++) {if (j >= a[i]) {dp[j % 360] |= dp[(j - a[i]) % 360];dp[j % 360] |= dp[(j + a[i]) % 360];}}}for (int i = 1; i <= m; i++) {if (dp[b[i]]) {cout << "YES" << endl;} else {cout << "NO" << endl;}}return 0;
}

P1832 A+B Problem(再升级)

题目链接:P1832 A+B Problem(再升级) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <cstring>
using namespace std;
bool prime[1010];
long long dp[1010];int main() {memset(prime, 1, sizeof(prime));prime[0] = prime[1] = 0;//筛法预处理素数for (int i = 2; i <= 1010; i++) {if (prime[i]) {for (int j = i * 2; j <= 1010; j += i) {prime[j] = 0;}}}int n;cin >> n;dp[0] = 1;for (int i = 2; i <= n; i++) {if (prime[i]) {for (int j = i; j <= n; j++) {//j的素数组成方案等于现有的加上选i的方案dp[j] += dp[j - i];}}}cout << dp[n];return 0;
}

P1757 通天之分组背包

题目链接:P1757 通天之分组背包 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

分组背包:

先枚举组再枚举背包容量,第三层循环枚举每组中的物品,就能实现每组选一个物品放入背包。

#include <iostream>
#include <algorithm>
using namespace std;
int v[1010][1010], w[1010][1010], dp[1010], c[1010];int main() {int m, n, t = 0;cin >> m >> n;for (int i = 1; i <= n; i++) {int x, y, z;cin >> x >> y >> z;t = max(t, z);c[z]++;w[z][c[z]] = x;v[z][c[z]] = y;}for (int i = 1; i <= t; i++) {for (int j = m; j >= 0; j--) {for (int k = 1; k <= c[i]; k++) {if (w[i][k] <= j) {dp[j] = max(dp[j], dp[j - w[i][k]] + v[i][k]);}}}}cout << dp[m];return 0;
}

P1569 Generic Cow Protests

题目链接:P1569 Generic Cow Protests - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <algorithm>
using namespace std;
int a[1010], dp[1010];int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];a[i] += a[i - 1];if (a[i] >= 0) {dp[i] = 1;}}for (int i = 1; i <= n; i++) {for (int j = 1; j < i; j++) {if (dp[j] > 0 && a[i] - a[j] >= 0) {dp[i] = max(dp[i], dp[j] + 1);}}}if (dp[n] == 0) {cout << "Impossible";} else {cout << dp[n];}return 0;
}

P1616 疯狂的采药

题目链接:P1616 疯狂的采药 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

完全背包

#include <iostream>
#include <algorithm>
using namespace std;
long long c[10010], v[10010], dp[10000010];int main() {int t, m;cin >> t >> m;for (int i = 1; i <= m; i++) {cin >> c[i] >> v[i];}for (int i = 1; i <= m; i++) {for (int j = 0; j <= t; j++) {if (j >= c[i]) {dp[j] = max(dp[j], dp[j - c[i]] + v[i]);}}}cout << dp[t];return 0;
}

P2871 [USACO07DEC]Charm Bracelet S

题目链接:P2871 [USACO07DEC]Charm Bracelet S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

01背包

#include <iostream>
#include <algorithm>
using namespace std;
int dp[15000], w[5000], v[5000];int main() {int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> w[i] >> v[i];}for (int i = 1; i <= n; i++) {for (int j = m; j >= w[i]; j--) {dp[j] = max(dp[j], dp[j - w[i]] + v[i]);}}cout << dp[m];return 0;
}

P2925 [USACO08DEC]Hay For Sale S

题目链接:P2925 [USACO08DEC]Hay For Sale S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

01背包

#include <iostream>
#include <algorithm>
using namespace std;
int dp[50010], w[5010];int main() {int n, m;cin >> m >> n;for (int i = 1; i <= n; i++) {cin >> w[i];}for (int i = 1; i <= n; i++) {for (int j = m; j >= w[i]; j--) {dp[j] = max(dp[j], dp[j - w[i]] + w[i]);}}cout << dp[m];return 0;
}

P1049 [NOIP2001 普及组] 装箱问题

题目链接:P1049 [NOIP2001 普及组] 装箱问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <algorithm>
using namespace std;
int a[50], dp[20010];int main() {int v, n;cin >> v >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = 1; i <= n; i++) {for (int j = v; j >= a[i]; j--) {dp[j] = max(dp[j], dp[j - a[i]] + a[i]);}}cout << v - dp[v];return 0;
}

P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles

题目链接:P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

递推:

#include <iostream>
#include <algorithm>
using namespace std;
int dp[1010][1010];int main() {int r;cin >> r;for (int i = 1; i <= r; i++) {for (int j = 1; j <= i; j++) {cin >> dp[i][j];}}for (int i = 1; i <= r; i++) {for (int j = 1; j <= i; j++) {dp[i][j] += max(dp[i - 1][j], dp[i - 1][j - 1]);}}int ans = 0;for (int i = 1; i <= r; i++) {ans = max(dp[r][i], ans);}cout << ans;return 0;
}

【动态规划】(零散刷题记录)相关推荐

  1. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

  2. $2019$ 暑期刷题记录 $2$(基本算法专题)

    $ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...

  3. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  4. 蓝桥杯官网刷题记录python

    蓝桥杯官网刷题记录python 由于很多题都会在2020.2021.2022年省赛出现,有的在前面文章里做过的这里就不会再说了 一.空间 小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都 ...

  5. 【刷题记录①】Java从0到1入门|基础知识巩固练习

    JAVA从0到1入门刷题记录 目录 一.类型转换 二.简单运算 三.四舍五入 四.交换变量值 五.计算商场折扣 六.判断体重指数 总结 我几乎每天都会刷题训练来使自己对各种算法随时保持一个清晰的状态. ...

  6. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  7. 【leetcode热题100】刷题记录(5-8)

    [leetcode热题100]刷题记录(5-8) 5. 最长回文子串 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数 5. 最长回文子串 题目链接 给你一个字符串 s,找到 ...

  8. 【刷题记录11】Java工程师丨字节面试真题(五)

    活动地址:CSDN21天学习挑战赛 JAVA面试练习题刷题记录 目录 一.雀魂启动 二.特征提取 三.毕业旅行问题 总结 我几乎每天都会刷题训练来使自己对各种算法随时保持一个清晰的状态.要知道眼过千遍 ...

  9. 重走长征路---OI每周刷题记录---9月21日 2013 AC 17题

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

最新文章

  1. 果蝇大脑研究能够改进计算机相似性搜索算法
  2. GraphQL 初探—面向未来 API 及其生态圈
  3. PLSQL9.0下载及配置oracle,PLSQL登录时常见问题解决
  4. 8086逻辑运算和移位
  5. ubuntu安装javahadoop
  6. Linux-查看操作系统信息
  7. 前端绘制绘制图表_绘制我的文学风景
  8. 61setproperty对象
  9. Windows下安装配置jdk
  10. 华为P50外观定了:居中挖孔
  11. python对日期型数据排序_如何对日期执行数学运算并用Python对它们进行排序?
  12. html语言中 头元素的标记是,HTML元信息标记
  13. 分组卷积和深度可分离卷积
  14. 对话时人品牌咨询首席咨询官:有多少企业倒在了自己的品牌故事上?
  15. latex编辑公式好用的在线网址
  16. LOL喷子专用自动骂人工具,2018更新完整版!
  17. 目标级联分析法( Analytical Target Cascading , ATC )理论matlab程序
  18. 人工智能是真正能够理解人类语言、懂得故事含义、和人类大脑并无二致的AI
  19. 九部比《五十度灰》更血脉喷张的电影,个个看完都会让人欲罢不能!
  20. PMP章节重点 项目经理的胜任力

热门文章

  1. 云盘2t服务器真的要2t硬盘吗,阿里要做云盘了,只要注册就送2T容量,振奋人心!...
  2. LAZADA官方公布:Lazada市场热卖品、潜力产品推荐
  3. qq等级免密查询API接口
  4. 鸿蒙系统有指关节截屏吗,拿了十年华为手机,只会使用组合键来截屏,网友:几千块白花了...
  5. Mybatis - 一对多/多对一映射
  6. mysql获取某个表中除了某个字段名外的所有字段名
  7. UE4:27启动虚幻引擎的步骤崩溃课程4
  8. 速达3000自动启动服务器,怎么增加速达3000服务器用户
  9. SaaS系统:做难有意思的事
  10. 【jupyter 无法启动、运行没反应、不能重命名等问题】【Windows11账户名中文改英文】已解决