express
来源:互联网 发布:粒子群算法matlab实例 编辑:程序博客网 时间:2024/06/05 06:27
贪心,先满足,再加最大的
#include<cstdio>#include<algorithm>using namespace std;#define ll long longll n,m,s,k;struct st{ ll t,s,u;}a[219999];int f[219999];int cmp(const st &a,const st &b){ if(a.t>b.t||a.t==b.t&&a.s>b.s)return 1; return 0;}int comp(const st &a,const st &b){ if(a.s>b.s)return 1; return 0;}int main(){ scanf("%lld%lld%lld%lld",&n,&m,&s,&k); for(int i=1;i<=m;i++)scanf("%lld%lld",&a[i].t,&a[i].s); sort(a+1,a+m+1,cmp); ll ss=0,ans=0; for(int i=1;i<=m+1;i++){ a[i].u=i,a[i].s-=2; if(a[i].t!=a[i-1].t) { if(ss>=k||i==1){ ans+=ss,ss=a[i].s,f[i]=1,s--;if(i==m+1)s++; } else { printf("-23333333"); return 0; } if(i==m+1)break; if(s<=0) { printf("-23333333"); return 0; } } else { if(ss>=k)continue; else ss+=a[i].s,s--,f[i]=1; if(s<=0) { printf("-23333333"); return 0; } } } sort(a+1,a+m+1,comp); for(int i=1;i<=m;i++){ if(!f[a[i].u]&&a[i].s>0) ans+=a[i].s,s--; if(s<=0) break; } printf("%lld\n",ans);}
阅读全文
0 0
- express
- express
- Express
- express
- Express
- express
- Express
- express
- Express
- express
- express
- Express
- Express, Express, Express
- express 与 express-generator
- Express express-session
- Dev Express
- express.exe
- PCI Express
- 【DBSDFZOJ 4445】棋盘(组合数学-错排公式+高精度)
- DES实现加密算法
- python学习笔记--命名元组(Namedtuple)
- python字符编码错误 UnicodeEncodeError: 'gbk' codec can't encode character '\xxx'
- dp:矩阵连乘问题
- express
- codevs 2822 爱在心中 Tarjan 解题报告
- springmvc文件上传报错
- Qt常用类QPixmap
- 文件系统的简单操作
- 树莓派变身Aria2下载服务器
- Java——创建线程的两种方式
- 《着色器和屏幕特效》读书笔记第三章-光照模型
- P1436 棋盘分割