【解题报告】 Task
题目:任务
解题思路:
贪心
我们可以贪心每个任务的等级,再贪心每个任务的时间,我们这样排一下序,再循环一下,就可以得到正确的答案了
AC代码
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const long long maxn=100010; long long n,m; struct task { long long x; long long y; }; task f[maxn]; task e[maxn]; long long cnt[105],ans,num; long long cmp(task a,task b) { if(a.x==b.x) return a.y>b.y; return a.x>b.x; } int main() { cin>>n>>m; for(long long i=1;i<=n;i++) cin>>e[i].x>>e[i].y; for(long long i=1;i<=m;i++) cin>>f[i].x>>f[i].y; sort(e+1,e+1+n,cmp); sort(f+1,f+1+m,cmp); long long j=1; for(long long i=1;i<=m;i++) { while(j<=n&&e[j].x>=f[i].x) { cnt[e[j].y]++; j++; } for(long long k=f[i].y;k<=100;k++) { if(cnt[k]) { num++; cnt[k]--; ans+=500*f[i].x+2*f[i].y; break; } } } cout<<num<<" "<<ans<<endl; return 0; }
PS:实在不懂为什么别人的代码要用pair
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。