1 条题解
-
1
#include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> #include <queue> #define MAXN 200200 using namespace std; int n; int T;//T指遍历时经过了多久时间 int ans; struct node { int w; //这个是题解中的ai int t; }a[MAXN]; priority_queue<int> Q;//优先队列 bool cmp (node x, node y) { return x.t < y.t;//按t从小到大排序 } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d%d", &a[i].w, &a[i].t); sort(a + 1, a + n + 1, cmp); for(int i = 1; i <= n; i++) { if(T + a[i].w > a[i].t)//如果无法修复此楼 { if(a[i].w < Q.top())//ai < aj { T -= Q.top();//注意这里要减掉 Q.pop(); Q.push(a[i].w); T += a[i].w; } } else { Q.push(a[i].w); ans++; T += a[i].w; } } printf("%d\n", ans); return 1; //防抄 }
- 1
信息
- ID
- 2985
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 18
- 已通过
- 2
- 上传者