从零开始的dp生活
穷源溯流
路很长,尽管走便是。
展开
-
洛谷 P1757 通天之分组背包(分组背包)
这应该是分组背包的裸体了分组背包其实就是将每一组看作 01 背包,然后求解,那么对于每一组来说该怎么办是接下来讨论的问题;for(int j=m;j>=0;j--){ for(int k=1;k<=n;k++){ dp[j]=max(dp[j],dp[j-w[k]]+v[k]) }} 上面这段代码需要理解,意思是从 n 件物品中选出 1 件可以容纳下的物品的最大价值,所以分组背包的解决方法也就清楚了const int N=1e3+5; int n,m,.原创 2021-05-16 15:11:20 · 525 阅读 · 0 评论 -
洛谷 P1833 樱花(混合背包+二进制优化)
const int N=1e4+5; int n,m; int i,j,k; //int a[N]; int dp[N]; struct Pack { int w,v,p; void read(){ sddd(w,v,p); if(p==0) p=1e6; } }b[N],a[N<<5]; int tot=0; int...原创 2021-05-16 13:30:43 · 328 阅读 · 0 评论 -
洛谷 P1095 [NOIP2007 普及组] 守望者的逃离(dp)
const int N=3e5+5; int n,m,_; int i,j,k; int a[N]; int dp[N]; int main(){ //IOS; int t; while(~sddd(m,n,t)){ for(int i=1;i<=t;i++){ if(m>=10){ dp[i]=dp[i-1]+60; ...原创 2021-05-11 17:14:57 · 370 阅读 · 0 评论 -
洛谷 P1020 [NOIP1999 普及组] 导弹拦截(dp)
const int N=2e5+5; int n,m,_; int i,j,k; int a[N]; int dp[N]; bool vis[N]; int main(){ //IOS; n=0; while(~sd(a[++n])){} n--; int maxx=0,ans=0; for(int i=1;i<=n;i++){ dp[i]=1; for...原创 2021-05-11 16:00:59 · 588 阅读 · 0 评论