CF Round#169
来源:互联网 发布:阿里云ubuntu镜像下载 编辑:程序博客网 时间:2024/04/30 21:18
AB 水题
C 简单的贪心
大意是给出一个数组,然后和一些区间和查询,现可以在进行查询前对数组进行重排。求通过重排能得到的最大的查询总和。
求出每个位置被查询的次数,具体做法是用一个辅助数组A,当查询l,r时。做++A[l],--A[r+1],则前缀和S[i]就代表着第i个位置被查询的次数。
然后对给出数组进行排序,将最大的放到被查询最多的位置,第二大的放到查询第二多的位置……
D 给定区间[L,R]求出区间内两数,使得其异或最大
随便搞几组数据就可以发现答案都是2^n-1这种类型的,所以我们大概猜想对于二进制的每一位都能异或出1来。
因为对于a,b两数(a>b)当某一位a与b的值相同时,若为0则可将b那一位变为1,若为1则可将a那一位变为0。在这个操作中a不断变小,b不断变大。所以我们一开始将a,b取值为R,L。
不过还得避免越界,即要有a>=L, b<=R。所以我们从最高位开始找第一个L与R值不相同的位i,必有L[i]为0,R[i]为1,则之后的位在进行上述操作的时候仍然能保持a>b的性质,自然也不会越界了。
也就是说答案从第i位开始皆为1。
E 大意: 给一个星型的树,也就是说除了根结点1外其余的结点的度数最大为2。所有结点初始都有一个值0。然后有两种操作,一种是给距离结点x不到d的所有结点(包括x)加上t。另一种操作是给查询结点x的值。
由根结点向外延伸出去了很多的链,对于每一条链都可以维护一个前缀和数组,然后单独为根结点维护一个前缀和数组,就可以了。
- CF Round#169
- cf round 200->round 200
- CF Round#2
- CF Round#5
- CF Round#8
- CF Round#10
- CF Round#11
- CF Round#14
- CF Round#17
- CF Round#167
- CF Round#168
- CF Round 192
- CF round#205 D
- CF round 235
- CF round 236 div1
- CF Round#240题解
- CF round 259
- CF - round # 280 - D
- 【PHP HTML DOM解析器】PHP Simple HTML DOM Parser
- C++ - 对象模型之 类对象在执行时是如何生成的
- 电脑小知识(一)
- 奋斗黑马程序员----Java之static关键字详解
- UIImageView 添加手势实现点击
- CF Round#169
- linux下 rm 删除非空目录
- excel的常用技巧
- mysql innodb表空间损坏补救方法
- mysql 分库分表
- Android中的DI(依赖注入)框架--RoboGuice
- Symmetric NAT and It’s Problems
- Lambdas, auto, and static_assert: C++0x Features in VC10, Part 1
- 列存储、行存储