摘要: Time to Raid Cowavans 题意: 询问 下标满足 a + b * k 的和是多少。 题解: 将询问分块。 将b >= blo直接算出答案。 否则存下来。 存下来之后,对于每个b扫一遍数组,然后同时处理相同b的询问。 代码: #include<bits/stdc++.h> using 阅读全文
posted @ 2019-05-18 16:20 Schenker 阅读(206) 评论(0) 推荐(0) 编辑
摘要: Glad to see you! 题解: 交互题一般都是需要用二分去完成。 在二分时候每次检查左边和右边哪边会和答案更近, 然后在更近的那段新区间去重复检查, 知道区间长度为1。 在检查的时候,可以使得答案更近贴近于左边,或者右边。 代码: #include<bits/stdc++.h> using 阅读全文
posted @ 2019-05-18 15:27 Schenker 阅读(227) 评论(0) 推荐(0) 编辑
摘要: Partial Sums 题解: 一个数列多次前缀和之后, 对于第i个数来说他的答案就是 唯一注意的就是这个k会到1e9。 观察可能,其实我们最多也就用了n个组合数, 并且这个C(n, m) 的 m 足够小。 所以我们可以根据定义先把这几个组合数先预处理出来。 代码: #include<bits/s 阅读全文
posted @ 2019-05-18 14:14 Schenker 阅读(278) 评论(0) 推荐(0) 编辑
摘要: Number Transformation II 题解: 对于操作2来说, a - a % x[i] 就会到左边离a最近的x[i]的倍数。 也就是说 [ k * x[i] + 1, (k+1)* x[i] -1 ]这段区间的的数都会走到 k * x[i]上。 所以对于每个位置都先计算出他到右边最远的 阅读全文
posted @ 2019-05-18 12:47 Schenker 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Bear and Polynomials 题解: 如果改变一个其中的一个数,那么需要知道的是,前面的数都可以进到当前位来,如果过不来的话,那么就会因为前面有数导致无法变成0。 所以我们将前面的数不断向高位转移,找到第一个不能往上进位的位置, p。 现在只有在0 <= i <= p 的时候才有解。 然 阅读全文
posted @ 2019-05-18 10:45 Schenker 阅读(202) 评论(0) 推荐(0) 编辑