摘要: 只要知道套差分就没难度了。 因为你要区间添加一个等差数列,等差数列做差分的话,中间的值是一样的。 随便手膜几组数据,就会发现如何处理差分数组了: 对于点$l$:加上首项$k$。 对于区间$(l, r]$:加上公差$d$。 对于点$r + 1$:减掉等差数列的第$n$项。 只要减不要写成加就可以了。。 阅读全文
posted @ 2018-07-30 23:57 Garen-Wang 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 这道题和后面一道题是孪生兄弟。。。 给你两组单调递增的序列,可以拿里面的元素相互相加,要你求出第1至第$m$小的值。 同样是那样的思路,用堆。 设$y = a_i+b_i$,那么就同样有$n$个元素了。 这里固定b的下标先不定,向堆里面添加$a_i+b_1$。 然后执行$m$次出队,每次出队补充另一 阅读全文
posted @ 2018-07-30 23:52 Garen-Wang 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 这道题跟 "P1631 序列合并" 嘻嘻相关 题目给你$n$个二次函数,给你$a$,$b$,$c$。 不过仔细的话可以发现:这三个系数都是正整数! 所以意味着二次函数的对称轴在x轴负半轴,在我们考虑的$[1, +\infty]$中的整数区间都是单调递增的。 所以同一个函数中,$x=1$时的函数值是最 阅读全文
posted @ 2018-07-30 23:46 Garen-Wang 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 注意细节! 我一开始没有分清摄像头和区域,结果都视为一谈。结果只有10分。。。 松鼠敲摄像头的顺序就是拓扑序。 为了方便起见,把区域也视为结点,然后做toposort。 最后能删除多少个摄像头就有多少个摄像头被敲,拿总数$n$来减掉这个就是答案。 代码:(我打成嗲吗) cpp include inc 阅读全文
posted @ 2018-07-30 17:07 Garen-Wang 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 很气。。。 就是给你一个序列,让你支持四种操作: 1. 全体数字加一个数k。 2. 全体数字减一个数k。如果有元素的值小于minv则必须删去。 3. 添加一个元素。当且仅当元素值k小于minv时添加。 4. 查询全局第k大。是真的第k大。 ~~一开始就不会~~ 由于加减都是针对全局的,如果使用laz 阅读全文
posted @ 2018-07-30 00:46 Garen-Wang 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 这道题才是真正的模板题啊! 自信地把那个模板敲下来,只有60。 因为我又不知道如何判无解或者无穷解。 然后在漫长的查资料过程中,我改变了我的写法。 虽然原来那种解法理解起来也很容易,但是~~过不了~~,所以我决定抄另一种高斯消元模板。 代码从这里抄的:https://blog.csdn.net/ya 阅读全文
posted @ 2018-07-30 00:39 Garen-Wang 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 水古董题也不轻松。。。 题目都这么说了,就照它的意思去模拟吧。 但是注意:$0 \leq x \leq 100000$,不优化是会T的。但是优化也非常容易。 只需要记录下每一层楼有梯子的房间数cnt[i]即可。 然后多余的数就是在重复转圈,删除掉即可。 后来发现不能直接取模,在整除的时候加个特判就o 阅读全文
posted @ 2018-07-30 00:32 Garen-Wang 阅读(311) 评论(0) 推荐(0) 编辑