会员
周边
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
望舒草
就让失散的誓言飞舞吧,随西风飘荡
管理
[置顶]
构造题, 交互题选做
摘要: 构造题, 交互题选做。还会选入一些其他妙妙题
阅读全文
posted @ 2021-02-02 20:49 duyiblue
阅读(2933)
评论(23)
推荐(14)
2024年5月14日
康复训练
摘要: 主播正在备战 NAC,所以做一些简单的 ICPC 题。QwQ 你一辈子就都是磕 ddtt 的命了,早早地知道了 ddtt 的好,你就再也不会羡慕别人的cp了。你的幸福指数和精神体验都被拉高到了远超其他人的程度,你少走了二十年弯路,找到了世界上最好磕的cp。磕 ddtt 的第一口,就是你最接近神的时刻,戴门!
阅读全文
posted @ 2024-05-14 00:47 duyiblue
阅读(106)
评论(2)
推荐(0)
2022年4月22日
AP Computer Science A 学习笔记
摘要: 只是站在一个前 oier 的个人角度整理了 AP Computer Science A 考试要注意的地方,比较适合有 OI 基础的读者,比如会 C++ 但没学过 Java,懂算法但没学过面向对象编程。祝大家考试顺利!
阅读全文
posted @ 2022-04-22 16:45 duyiblue
阅读(890)
评论(0)
推荐(1)
2022年4月10日
LOJ6807 「THUPC 2022 初赛」最小公倍树
摘要: Kruskal 算法。考虑哪些边有可能被贪心选中。因为最小公倍数的要求太复杂、太苛刻,我们不妨忽略“最小”,只考虑是公倍数。因为这样新产生的边边权更大,不会影响答案。考虑点权是 k 的倍数的点之间的边,发现有用的边其中一个端点一定是大于等于 L 的第一个 k 的倍数。于是有用的总边数就被压缩到了 O(n log n) 级别。直接执行 kruskal 算法即可。此外,我们还可以不事先排序,用 priority_queue 把空间复杂度优化到 O(n)。
阅读全文
posted @ 2022-04-10 18:15 duyiblue
阅读(261)
评论(2)
推荐(1)
CF1656D K-good
摘要: 先考虑 k 是偶数的情况,此时 k 必须是 2n 的约数,且不能是 n 的约数,并且 k 要尽量小,所以令 k = 2 的 (n 里 2 的最高次数 + 1) 次方即可。若 k 还是太大,说明偶数无解,考虑奇数。此时有一个非常巧妙的想法:令 k2 = 2n / k。会发现这个 k2 一定是满足条件的。
阅读全文
posted @ 2022-04-10 13:17 duyiblue
阅读(115)
评论(0)
推荐(1)
2022年3月17日
洛谷P8098 「USACO 2022.1 Gold」Tests for Haybales
摘要: 从 i 向 b[i] + 1 连边,得到一棵树。考虑分层,问题转化为构造一个数组,使得每个节点的值小于父亲的值,但大于父亲同一层左边节点的值。在 dfs 离开一个节点时记录的 dfs 序就满足这个要求。
阅读全文
posted @ 2022-03-17 21:18 duyiblue
阅读(151)
评论(0)
推荐(0)
2022年3月16日
洛谷P8096 「USACO 2022.1 Gold」Drought
摘要: 把所有位置按下标的奇偶性分类。考虑每个前缀里,两类位置上数的和之差。把对 h 的操作,变为对这个差序列的操作。操作变成了每次选一个小于 n 的位置,将它的值减 1。只要想清楚最终差序列的样子,就很容易求出合法差序列的数量了。
阅读全文
posted @ 2022-03-16 22:33 duyiblue
阅读(269)
评论(0)
推荐(1)
2022年3月15日
CF1647F Madoka and Laziness
摘要: 首先,全局最大值一定是其中一个子序列的最大值,所以只需要考虑另一个子序列的最大值是几。根据这两个“最大值”,整个序列被划分为三段,前一段两个序列都递增,中间一增一减,第三段都递减。第一段和第三段可以用简单 DP 完成最优划分。中间段其实也可以用一个类似的 DP 来划分。DP 定义的关键是考虑与 i 不同的另一个子序列最后一个元素是几,转移时考虑 i 和 i - 1 在不在同一个序列中。
阅读全文
posted @ 2022-03-15 14:18 duyiblue
阅读(141)
评论(0)
推荐(1)
2022年2月26日
LOJ3664 「JOI 2022 Final」选举
摘要: 分析题目性质,找出一些最基本的贪心策略(比如把 B 从小到大排序)。然后枚举总共获得了几个协作者,这样就能知道每个仅获得选票的州的用时,进而可以 DP。朴素的 DP 是 O(N^3) 的,总时间复杂度 O(N^4)。进一步观察问题特性后,可以把 DP 优化到 O(n^2)。
阅读全文
posted @ 2022-02-26 16:56 duyiblue
阅读(514)
评论(2)
推荐(3)
2022年1月26日
LeetCode 小水题选做(更新中)
摘要: 退役后智商恢复 and 底层码农防失业。
阅读全文
posted @ 2022-01-26 22:58 duyiblue
阅读(427)
评论(3)
推荐(1)
2021年4月7日
LOJ2313 「HAOI2017」供给侧改革
摘要: lcp 就是后缀树上的 lca。因为字符串随机,所以后缀树树高是 O(log n) 级别的。将询问离线,从小到大枚举 R,暴力跳祖先,更新一些 i 的答案。需要数据结构支持:前缀对一个值取 max,区间求和。发现要取 max 的值是 O(log n) 级别的,对每个值记录最大位置,就可以实现 O(1) 修改,O(log n) 查询。总时间复杂度 O(n log n)。
阅读全文
posted @ 2021-04-07 15:55 duyiblue
阅读(290)
评论(0)
推荐(1)
2021年3月27日
「NOI Online 2021 #1」岛屿探险
摘要: 分 b > d 和 b <= d 两种情况讨论。关于 b, d 做 cdq 分治。每次考虑右边对左边的贡献,这样 b, d 的大小关系就解决了。第一种情况比较简单,就是在可持久化 01 trie 里查询一下就行了第二种可以考虑每个 b 对 d 的贡献,方法就和第一种情况差不多了,也就是把“查询”改成“打标记”。
阅读全文
posted @ 2021-03-27 15:17 duyiblue
阅读(2847)
评论(9)
推荐(8)
2021年3月25日
CF1089I Interval-Free Permutations
摘要: 用总数减去不合法的排列数。考虑不合法的排列里的极长不合法段,那么不合法的排列可以分为两类:有两个极长不合法段的,或者有三个及以上极长不合法段的。对于前者,发现至少有一个不合法段是前缀或后缀,且数值为 1...k,可以递推求出其方案数(二次容斥)。对于后者,不合法段一定不相交。考虑用 DP 对齐进行划分,再用前面处理好的答案算出其排列方案数。
阅读全文
posted @ 2021-03-25 23:18 duyiblue
阅读(214)
评论(0)
推荐(1)
CF1188D Make Equal
摘要: 首先把问题转化为:有一个给定的数组 b[1...n],一个数 x,使得所有 (b[i] + x) 的二进制里 1 的个数之和最小。从低到高逐位 DP,发现要考虑上一位有没有进位,那么状态数是 2^n 的。进一步观察,因为每个数加的 x 是一样的,所以在这些低位上原数值越大,越有可能进位。所以状态里只需要记录有多少个数进位,然后把序列排个序,就知道具体是哪些数进位了
阅读全文
posted @ 2021-03-25 23:12 duyiblue
阅读(224)
评论(0)
推荐(0)
2021年3月16日
CF538H Summer Dichotomy
摘要: 本文提供了两种解法。一种是硬核数据结构做法。将限制转化为一个几何问题(双矩形的交),用扫描线求解。第二种是巧妙的贪心,证明了如何选择 n1, n2 是最有可能有解的,于是在确定 n1, n2 后,直接进行二分图染色即可
阅读全文
posted @ 2021-03-16 17:37 duyiblue
阅读(210)
评论(1)
推荐(1)
2021年3月15日
CF871E Restore the Tree
摘要: 以第一个关键节点为根。根据:v 在 x, y 的路径上,当且仅当 dis(v, x) + dis(v, y) = dis(x, y),可以确定每个关键点到根的路径。接下来按深度从小到大加入剩余的节点。只需要在已经确定的部分里为它找到一个父亲即可
阅读全文
posted @ 2021-03-15 13:09 duyiblue
阅读(246)
评论(2)
推荐(0)
下一页
公告