![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
殇
这个作者很懒,什么都没留下…
展开
-
背包问题记录最优方案的方法
问题概述在 n 个物品每个选取 ai 个总量不超过 m 的最优解解决思路最优解的一定有确定的来源,因此只要利用最优解来源,再利用最优解的来源记录它的来源,依次迭代得到完整路径输出方法void print(int x,int y){ if(x==0)return ; int k=flag[x][y];//记录的来源 print(x-1,y-k);//利用dfs迭代 printf("%d %d\n",x,k);}记录方法if(sum[i][j]<sum[原创 2021-11-06 23:44:34 · 426 阅读 · 1 评论 -
2021CCPC河南 1001收集金币(dp)
题目描述小辣在玩奇怪的的小游戏。在这一关中,游戏的主角的任务是收集金币。这时有n个事件依次发生,事件分为两种:1、LOST x 表示主角丢失x枚金币,如果此时主角的金币不足x枚,则主角丢失所有金币。2、GET x 表示主角获得x枚金币。主角当然想要获得更多的金币,因此他获得了一个技能:当一个事件发生时,他可以选择跳过。当然,这项技能最多只能使用一次。现在按顺序给定每个事件,请问主角最后能获得多少枚金币?输入第一样一行一个正整数T(T≤10)代表数据组数。对于每组数据,第一行输入一个正整数原创 2021-11-03 23:47:02 · 561 阅读 · 0 评论 -
最长上升子序列的两种解法
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数 N。第二行包含 N 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>usi原创 2021-06-16 18:35:04 · 639 阅读 · 0 评论 -
poj-1742-Coins(多重组合问题)
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn=200010;int n,m,a[110],b[110],f[maxn],g[maxn];int main(){ int n,m; while(~scanf("%d %d",&n,&m)){ if(n==0)break;原创 2021-06-05 12:35:59 · 135 阅读 · 0 评论