Codeforces732D Exams
显然要二分答案,然后对于一个天数,我们来判断是否可以通过所有考试,这里就贪心来安排就好了。
首先我们希望每门课的考试时间越晚越好,然后就是先复习最早开始的考试。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 vector<int> pos[100010]; 5 int d[100010]; 6 int a[100010]; 7 int n, m; 8 9 bool judge(int mid) 10 { 11 vector<pair<int, int>> course; 12 for (int i = 1; i <= m; i++) 13 { 14 vector<int>::iterator it = upper_bound(pos[i].begin(), pos[i].end(), mid); 15 if (it == pos[i].begin()) 16 return false; 17 it--; 18 course.push_back({*it, i}); 19 } 20 sort(course.begin(), course.end()); 21 int used = 0; 22 for (auto &c : course) 23 { 24 if (c.first - 1 - used < a[c.second]) 25 return false; 26 used += a[c.second] + 1; 27 } 28 return true; 29 } 30 31 int main() 32 { 33 scanf("%d%d", &n, &m); 34 for (int i = 1; i <= n; i++) 35 { 36 scanf("%d", d + i); 37 if (d[i] > 0) 38 pos[d[i]].push_back(i); 39 } 40 for (int i = 1; i <= m; i++) 41 scanf("%d", a + i); 42 int l = 1, r = n; 43 if (!judge(n)) 44 puts("-1"); 45 else 46 { 47 while (l < r) 48 { 49 int mid = l + r >> 1; 50 if (judge(mid)) 51 r = mid; 52 else 53 l = mid + 1; 54 } 55 printf("%d", l); 56 } 57 return 0; 58 }
转载于:https://www.cnblogs.com/iRedBean/p/5975454.html
Codeforces732D Exams相关推荐
- codeforces732D Exams(二分)
题意: 给出一串数字,代表了第i天能够进行哪场考试,如果为0就不能考试,每天只能考一场.一共要考m场试,每门科目要a[i]的复习时间,所以问最快第几天能够考完所有科目. 要点: 一开始我觉得BFS可以 ...
- 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...
- F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 ...
- 【小罗的hdlbits刷题笔记2】补码运算中溢出的问题(Exams/ece241 2014 q1c)
关于补码运算中进位溢出的问题及延伸,hdlbits中Exams/ece241 2014 q1c给出了很好的解释,首先来看问题: Assume that you have two 8-bit 2's c ...
- Verilog刷题HDLBits——Exams/ece241 2014 q7a
Verilog刷题HDLBits--Exams/ece241 2014 q7a 题目描述 代码 结果 题目描述 Design a 1-12 counter with the following inp ...
- 【URAL】1091 Tmutarakan Exams
题意:取k个不同的数,每个数不超过s,问种数. 若kx1,kx2,...,kx3满足条件,则x1,x2,...,x3必然满足条件. 因此枚举素数容斥,2*3*5*7>50,所以枚举之多三层. 1 ...
- URAL 1091. Tmutarakan Exams
http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:给你两个数K,S,让你从1~S中挑选K个数使得他们的最大公约数大于1,问你有多少种方法 ...
- RETIRED CERTIFICATIONS AND EXAMS AND BADGES(VMware 正式命名方式变更以及考试退役时间)
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/certification/vmw-certification-re ...
- HDLBits Exams/ece241 2013 q4 水库题
题目和简述 题目内容翻译: 大型水库可为多个用户提供服务.为了使水位足够高,三个传感器以5英寸的间隔垂直放置.当水位高于最高传感器(S3)时,输入流量应为零.当液位低于最低传感器(S1)时,流量应最大 ...
最新文章
- 数据科学家需要了解的5大聚类算法
- 如何建立应付暂估明细查询
- java面试设计模式
- ReactiveX流式编程—从xstream讲起
- ImportError: No module named _caffe
- struts2入门之action获取表单提交数据
- 《Entity Framework 6 Recipes》中文翻译——第十二章自定义EntityFramework对象(一)...
- TCP实现消息传输和文件传输,UDP实现消息发送和聊天,URL下载文件
- Emacs 新闻组 之四 联系人管理
- 智齿客服网页端接入文档V2.3
- oracle-外币记账时总账余额表gl_balance变化(上)
- MIUI v5内测版泄漏!
- sql server之T-SQL语句创建数据库创建表
- 牛顿迭代法计算平方根
- linux系统--文件目录
- 所有Android 开发者都要知道的开发常识
- 超星系统登录,信息爬取
- 一点儿考研经验+这一年的总结0.0
- Fluent Meshing 高效准确读入CAD模型343攻略
- 目录:什么是设计模式