codefoeces 732D 377D

题目一开始读错了,我把d[i]数组的含义理解错误,d[i]数组的含义其实是那一天我只能考第d[i]的那门科目,比如d[i] = 2, i = 4.意思就是我第四天可以考编号为2的这个科目,其它编号的科目我不能在这一天考。

所以我们怎么想这个题目?一开始的时候我总是纠结那个0天怎么去处理,是不是要分散开来处理。后来觉得不对,我们可以枚举天数,将天数给固定出来,我们就可以从这一天往前面扫过去,遇到一个可以考试的,就加一下,然后标记,这样我们只要看是不是扫描结束之后,所有的都被我们标记了,就可以判断我们要把天数扩大还是减小,总的复杂度就是nlogn的复杂度。

时间: 2024-08-13 03:43:15

codefoeces 732D 377D的相关文章

codefoeces 814

A 给你 n  k 然后第二行 n个数 其中有k个0  然后第三行 k个数 让k个数代替 0   问  能不能出现 非递增 k>=2   那么肯定可以出现  (数不一样) k=1   那么 放进去  跑一下就可以 O(n) #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; #define inf 1000000007 #define MAXN 110 int

CodeForces 732D Exams

二分. 二分答案,然后贪心验证一下即可. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<map> #include<set> #include&l

Codefoeces 387E - George and Cards 贪心+线段树

首先要知道每次拿走最小才会达到最优,因为最小的不会给其他的提供任何加分,只有可能减小加分. 删除卡片的次序确定了,剩下的就是确定每段区间的左右端点. pos[i] 表示数字 i 在初始序列中的位置. 首先枚举i (i = 1 -> n),如果不需删除,则将pos[i]放入set<int> S中,如果不需删除,则在S中二分查找上下界. 总的时间复杂度为o(  (n-k)*log(k)  ). #include <algorithm> #include <iostream&

codefoeces 610 C

H - Harmony Analysis 给你一个k 求一个由 * +  组成的 2^k *2^k  的矩阵 条件是  任意两行  对应项乘积的和 为0  + 为 +1   * 为-1 + ++ +* ++++ +*+* ++** +**+ 右上角 = 左下角 = 左上角    右下角 =左上角取反 #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #inclu

codeforce 732D . Exams

D . Exams 题意:一共有n天 m个考试 di表示第i天可以进行第m个考试 ai 表示第i个考试需要准备ai天才能通过考 问最少需要多少天才能通过所有考试 思路: 二分时间 每一次判断一下能否通过所有考试 得到最优解  每次二分到第x天时 从后面开始计算 尽量在后面的时间里考试 留更多的时间给前面的考试(比如第一次考试,如果可以在第5天和第7天考 如果第5天可以通过考试(即准备的时间大于等于ai),那么在第7天也一定可以通过,但是如果在第7天可以通过,在第5天不一定可以通过,所以一律选择时

codefoeces problem 671D——贪心+启发式合并+平衡树

D. Roads in Yusland Mayor of Yusland just won the lottery and decided to spent money on something good for town. For example, repair all the roads in the town. Yusland consists of n intersections connected by n?-?1 bidirectional roads. One can travel

CodeFoeces GYM 101466A Gaby And Addition (字典树)

gym 101466A Gaby And Addition 题目分析 题意: 给出n个数,找任意两个数 “相加”,求这个结果的最大值和最小值,注意此处的加法为不进位加法. 思路: 由于给出的数最多有 1e6 个,且每个数的值最大为 1e18 ,又因为特殊的加法运算,我们自然无法用常规的方法解决 注意到这个加法运算可以分配到每一位上进行运算,而且最大为1e18,十九位数,那么我们就可以用字典树来存储每个数,并进行计算,为了将字典树每个结点的深度和数的位数对应起来,我们可以将每个数都处理为19位数,

2016暑假集训补题系列

Codefoeces 496E(贪心+二分) 题意:一场演出有N段演奏,每段演奏都有一个音域,有M个演唱家,每个演唱家也分别有自己的音域,而且同一场演出中能演唱最多K次.问是否能够使所有的演奏都能进行,如果能应该怎样分配演唱顺序. 思路:先排个序,把每段演奏以及每个人都按照音域[L,R],R小的优先,相同的情况下,L小的优先.然后对每个人依次操作.每次操作把演奏的R小于等同于该演唱者的R的部分放入multiset中(这里要用到其自动排序和可二分查找的功能),然后二分找到集合中刚好满足演奏的L大于

一场由nginx优化引起的tcp/ip及tcpdump研究

在这里不得不再吐槽下国内整个IT粗糙浮躁,度娘下来的中文文档几尽抄袭~google下来的文档英文文档质量远高于国内中文文档. 用ie或没有安装插件的浏览器访问,不然可能会有其它访问请求数据干扰分析 IP数据包结构 TCP数据包结构 // tcpdump需root权限 # tcpdump -x -i eth1 ip host58.246.240.122 or 58.246.3.218 tcpdump: verbose outputsuppressed, use -v or -vv for full