好困#7

A https://www.codechef.com/problems/CHPLGNS

因为题意说清楚了一个套住一个
所以可以直接对点排序从左往右标记
(我觉得被耍了)
http://paste.ubuntu.com/25152854/

需要学习的地方:对题目的描述多理解一下 尝试简化问题

B http://codeforces.com/problemset/problem/86/D
莫队水题

C http://www.lydsy.com/JudgeOnline/problem.php?id=1483

set+启发式合并
学习hzwer学长的代码
感觉很神奇并不用更新fa[i]
实际上是因为set的size会被替换掉 交换等于变相更新了fa[i]

http://paste.ubuntu.com/25153653/

D http://codeforces.com/contest/295/problem/B

倒序插入点
floyd求最短路

http://paste.ubuntu.com/25154492/

E http://codeforces.com/problemset/problem/339/C

明显的dp
dpijk表示第i次选了k比另一边多j
需要注意的是j状态不能限死在1-9
http://paste.ubuntu.com/25153226/

F https://www.hackerrank.com/contests/hourrank-16/challenges/leonardo-and-lucky-numbers
水题
exgcd后 让y不为负数再检查xy是否都为非负数
G https://www.hackerrank.com/contests/101hack38/challenges/sorted-subsegments

二分枚举答案x
把原序列换成01串并按输入排序
检查结果a[k]是否为1
枚举这样的最小x

大概说一下自己理解的这个做法的正确性
假设先按它的要求排好序 按这种操作变换之后
那位置k的答案应该是1
因为我枚举的是ans 小于ans的都是0 都会在那个位置的前面
如果ak为0了就说明不是这个答案 应该让x小一点
而x大了又可能让k前面也是1 所以继续二分check下去

http://paste.ubuntu.com/25155293/

H https://www.codechef.com/problems/FNCS

对函数分块
用树状数组维护序列
把每个块中的函数值直接算出来
然后查询的时候覆盖整个块的直接加上
另外的暴力使用bit计算每个函数

更新的时候使用每个块的差分数组来更新块中的总值
再更新树状数组 和 单点的值

http://paste.ubuntu.com/25155970/

你可能感兴趣的:(补题)