CodeForces
来源:互联网 发布:故宫淘宝与故宫旗舰店 编辑:程序博客网 时间:2024/06/06 00:15
Selling Souvenirs
CodeForces - 808E题意:01背包,重量为1-3,价值1-1e9
解:按照重量1-3分类,价值贪心从大到小排序,遍历重量记录中间过程最优价值的1-2-3物品使用个数
#include <iostream>#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 3e5+10;int num[4];LL a[4][N], sum[N];int cmp(LL x,LL y){ return x>y;}struct node{ int c1,c2; LL v;}dp[N];int main(){ int n, m, w; scanf("%d %d", &n, &m); for(int i=0;i<n;i++) { LL c; scanf("%d %lld", &w, &c); a[w][++num[w]]=c; } for(int i=1;i<=3;i++) sort(a[i]+1,a[i]+num[i]+1,cmp); for(int i=1;i<=num[3];i++) sum[i]=sum[i-1]+a[3][i]; dp[0].c1=dp[0].c2=0,dp[0].v=0; for(int i=1;i<=m;i++) { dp[i]=dp[i-1]; if(dp[i].v<dp[i-1].v+a[1][dp[i-1].c1+1]) { dp[i].v=dp[i-1].v+a[1][dp[i-1].c1+1]; dp[i].c1=dp[i-1].c1+1; dp[i].c2=dp[i-1].c2; } if(i>=2&&dp[i].v<dp[i-2].v+a[2][dp[i-2].c2+1]) { dp[i].v=dp[i-2].v+a[2][dp[i-2].c2+1]; dp[i].c1=dp[i-2].c1; dp[i].c2=dp[i-2].c2+1; } } for(int i=0;i<=num[3];i++) { if(m>=i*3&&dp[m].v<dp[m-i*3].v+sum[i]) { dp[m].v=dp[m-i*3].v+sum[i]; } } cout<<dp[m].v<<endl; return 0;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 多进程爬虫
- 专注于windows系统安全 与 asp.net开发
- .Net读取xlsx文件Excel2007
- 【LeetCode】48. Rotate Image
- HBase1.2.0 windows单机版安装配置
- CodeForces
- 观察者模式--众多通知,一步到位(行为模式06)
- 纯CSS美化表格单元格背景效果,效果很帅
- UBUNTU系统镜像定制
- 二叉树的非递归遍历方法
- 调试svo 中遇到的问题
- Django 之 (6)模型(数据库)
- 算法提高 学霸的迷宫
- Android:Welcome,一个容易使用和扩展的引导页控件