随笔分类 -  acm / 二分

摘要:GCD + st表 + 二分 Problem - 1632D - Codeforces 题意 给出一个长度为 n;(1<=n<=2105) 的数组 a[i];(1<=a[i]<=109), 可以修改任何一个位置的数为任何一个正整数,对于任意一段区间 $[l,r];(1<=l<=r<=n 阅读全文
posted @ 2022-10-17 14:01 hzy0227 阅读(23) 评论(0) 推荐(0) 编辑
摘要:三分 or 分类讨论 [D-Walker_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(重现赛)@hzy0227 (nowcoder.com)](https://codeforces.com/gym/103202/problem/I) 题意 有 10000 组测试数据 每组给出 阅读全文
posted @ 2022-10-05 13:23 hzy0227 阅读(47) 评论(0) 推荐(0) 编辑
摘要:D - String Deletion 贪心、链表 要想操作次数最大,设当前已经删到了第 i 个字符,那第一步操作就要找到 i 后面第一个有连续0/1的串,删掉其中一个 找到 i 后面第一个有连续0/1的串:将这些可以被删去的位置记录到 set 里,二分找到 i 后面第一个,找到了就删去 删去元素后 阅读全文
posted @ 2022-05-31 16:20 hzy0227 阅读(23) 评论(0) 推荐(0) 编辑
摘要:D - Pond 二分 + 前缀和 求一个子矩阵中元素的中位数,可二分中位数,check 过程中将矩阵变为 01 矩阵,若小于 mid 则为 1,用二维前缀和求出有多少元素小于 mid 复杂度 O(n2log(max(Ai))) 注意二分求中位数的细节 若有 n 个数,则中位数为 阅读全文
posted @ 2022-05-23 14:11 hzy0227 阅读(57) 评论(0) 推荐(0) 编辑
摘要:C - 1D Sokoban 二分 + 找性质 可分正负的箱子分别讨论 本题的关键是发现一个重要的性质:因为推箱子这个过程会让被推到的箱子成为连续的一段,若想让在特殊位置的箱子最多,则这一段的终点一定要在特殊位置上(起点也可以, 这里的一定不是说不在特殊位置就取不到最优,而是在特殊位置上的某些情况一 阅读全文
posted @ 2022-05-23 12:25 hzy0227 阅读(27) 评论(0) 推荐(0) 编辑
摘要:D - Present 位运算 + 思维 + 二分(双指针) 按位考虑,第 k 位是 0 还是 1 只跟前 k 位有关,因此算第 k 位的答案时可对 a 数组的元素 mod2k+1 赋给 bbi+bjk 位是 阅读全文
posted @ 2022-05-19 19:11 hzy0227 阅读(19) 评论(0) 推荐(0) 编辑
摘要:D - Toss a Coin to Your Graph... 二分 + 判环 + DAGDP 最大值最小化可以想到二分答案 check过程为只给小于等于答案的点之间连边,虽然 k 很大,但如果存在环则一定可以,不存在环就求当前图的最长路,如果最长路 ⇐ k - 1 则可以 判环和求最长路都可用拓 阅读全文
posted @ 2022-05-19 00:02 hzy0227 阅读(39) 评论(0) 推荐(0) 编辑
摘要:POJ - 3579 Median 二分套二分 Median - POJ 3579 - Virtual Judge (vjudge.net) 对数轴上的点排序后,可枚举左端点,固定左端点后,区间长度关于右端点是单调递增的,因此可以二分 二分答案 check 返回有多少区间小于当前的二分值,求有多少区 阅读全文
posted @ 2022-05-17 21:45 hzy0227 阅读(20) 评论(0) 推荐(0) 编辑
摘要:POJ - 3685 Matrix 二分套二分 Matrix - POJ 3685 - Virtual Judge (vjudge.net) f(i,j)=i2+105i+j2105j+ij f 关于 i 单调递增,关于 j 单调递减 要找第 \(m\ 阅读全文
posted @ 2022-05-17 21:41 hzy0227 阅读(30) 评论(0) 推荐(0) 编辑
摘要:C - Water the Trees 二分 因为奇数天 +1, 偶数天 +2,所以找到最大的 h[i] 记为 maxn,最后的高度只能在 maxn, maxn + 1 中,因为如果答案为 maxn + 2,则可以去掉一些操作,使最大高度为 maxn 二分答案即可 #include <ios 阅读全文
posted @ 2022-05-12 20:27 hzy0227 阅读(27) 评论(0) 推荐(0) 编辑
摘要:C - Set or Decrease 一定是先对最小的元素使用 -1 操作 再从大到小把元素变为最小值 这样一定是最少操作将序列和减到 k 一下 操作数 = 操作 1 的个数 + 操作 2 的个数,操作 1 可能有很多次,操作 2 是将较大的元素变为最小值,所以可能是 [0, n - 1] 次,所 阅读全文
posted @ 2022-05-12 20:23 hzy0227 阅读(98) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示