1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N=1.5e5+5; struct node{int t,d;}a[N]; bool cmp(node n1,node n2){if(n1.d!=n2.d)return n1.d<n2.d;return n1.t<n2.t;} //确保按结束时间排序,没有= priority_queue<int>Q; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d%d",&a[i].t,&a[i].d); sort(a+1,a+n+1,cmp);//排序 int t=0,ans=0;//t=时间 ans=计算能够做完的作业个数 for(int i=1;i<=n;i++) { Q.push(a[i].t);//放入栈中 t=t+a[i].t; //加时间 ans++; //总作业数增加1个 if(t>a[i].d) //如果因时限有矛盾。 { t=t-Q.top(); //消去时间影响 Q.pop(); //弹出用时最长的作业 ans--; //总作业数减少1个 } } printf("%d",ans); return 0; }
- 1
信息
- ID
- 2682
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 301
- 已通过
- 74
- 上传者