387 div2 cf 4
来源:互联网 发布:出库单软件 编辑:程序博客网 时间:2024/06/08 00:04
C 题意:
有n个服务器 1 ~n
有m个任务,t代表任务开始的时间,k代表任务要占用的服务器数量,d代表占用时间。
m<=1e5
每个任务占用服务器时会选择使用编号最小的服务器
输出每个任务占用的服务器编号总和,没有则-1
暴力模拟就好了。=_=虽然感觉会T。。但是试着交了发
struct TASK { int t, k, d;} task[maxn];set<int>S;set<pair<int,int> >END;queue<int>Q[maxn];int ans[maxn];void init() { cin >> n >> m; for(int i = 0; i < m; i++) { scanf("%d%d%d", &task[i].t, &task[i].k, &task[i].d); } for(int i = 1; i <= n; i++) S.insert(i); int ed = 0, last = 101; for(int i = 0; i < m; i++) { set<pair<int,int> >::iterator it = END.begin(); while(END.size()>0&&task[i].t > (*it).X) { while(!Q[(*it).Y].empty()) { int num = Q[(*it).Y].front(); Q[(*it).Y].pop(); S.insert(num); } pair<int,int> tp = *it; it++; END.erase(tp); } if(S.size() >= task[i].k) { set<int>::iterator it = S.begin(); int sum = 0; for(int j = 0; j < task[i].k; j++) { int k = *it; sum += *it; it++; Q[i].push(k); S.erase(k); } ans[i] = sum; ed = task[i].t + task[i].d - 1; last = i; END.insert(mp(ed,last)); } else { ans[i] = -1; } } for(int i = 0; i < m; i++) { cout << ans[i] << endl; }}
给了n天的温度,有两个轮胎,夏天的轮胎和冬天的轮胎
夏天的轮胎能在温度>=0时使用,冬天的不受限制,
冬天的轮胎最多用k天,夏天的不受限制。
问最少换几次轮胎?(循环使用)
n<=2e5
贪心:
记录下冬天出现的次数winter
然后k-winter就是冬天轮胎能多跑的天数,ans =winter*2就是最大的答案
记录下每个冬天间隔的长度,对这些长度排序,尽量选短的
每选一个ans-=2(边界特判)
这样答案就尽量小了。
int n, m, k;int a[maxn];int pos[maxn];void init() { cin >> n >> k; int winter = 0; for(int i = 0; i < n; i++) { cin >> a[i]; if(a[i] < 0)pos[winter++] = i; } if(!winter) { puts("0"); return ; } if(winter > k) { puts("-1"); return ; } vector<int>Q; for(int i = 1; i < winter; i++) Q.push_back(pos[i] - pos[i - 1] - 1); sort(Q.begin(), Q.end()); k = k - winter; int cnt = 0,ans = winter*2; for(int i = 0; i < Q.size(); i++) { if(k >= Q[i]) cnt++, k -= Q[i]; } ans -= cnt*2; int R = pos[winter - 1] + k; if(R >=n-1){ ans--; } cout << ans << endl;}
0 0
- 387 div2 cf 4
- cf 131 DIV2 B
- CF #148 DIV2 E
- CF #137 DIV2
- CF 149 div2感想
- CF-div2--149
- CF 154 Div2
- cf-#170-div2-后记
- cf#168div2
- cf#167div2
- cf#166div2
- CF 183(div2)
- CF 173(div2) B
- cf#div2--184
- CF 174(div2) D
- CF 165(div2)
- CF 168(div2)
- CF 167(div2)
- 驱动框架
- 35岁
- QLabel自适应内容大小
- Shell—文件的引入
- Android内存监测工具DDMS->Heap,内存分析工具->MAT
- 387 div2 cf 4
- java线程深度解析(一)——java new 接口?匿名内部类给你答案
- 现在完成时与过去完成时的区别
- java线程深度解析(二)——线程互斥技术与线程间通信
- C
- MT6582编译到preloader报错
- 编写jQueryUI插件(widget)
- WEB
- Linux的shell脚本换行符引起的unexpected syntax errror: ‘最简单方法