09 2021 档案

09 2021 档案

09 2021 档案

摘要:特判掉 k=2. 显然,所有集合都用最优。 注意到如果用了 x2 个集合,那么把剩下的数中最大的 (kx) 个单独放一个集合,多余的数,一定能选出一个集合来放进去使得不会对答案产生负贡献。 枚举第一个放入第二个集合是哪个元素 x,在它之前的一定放在同一个集 阅读全文
posted @ 2021-09-29 11:39 do_while_true 阅读(250) 评论(0) 推荐(2) 编辑
摘要:对于集合 S 上的二元关系 <,如果 < 满足自反性、反对称性、传递性、不可比则称其满足严格弱序,形式化地来讲: 非自反性,Irreflexivity:xS,xx; 传递性,Transitivity:\(\forall x,y,z\ 阅读全文
posted @ 2021-09-29 10:24 do_while_true 阅读(497) 评论(0) 推荐(1) 编辑
摘要:原来我不会线段树懒标记以及永久化,呜哇哇。 阅读全文
posted @ 2021-09-28 10:03 do_while_true 阅读(399) 评论(0) 推荐(3) 编辑
摘要:挂成狗了。 A LOJ #6720. 「CodePlus #7」最小路径串 对于每一个点的出边按照到达点的编号大小排序。 dfs 一下。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #includ 阅读全文
posted @ 2021-09-25 15:07 do_while_true 阅读(80) 评论(1) 推荐(2) 编辑
摘要:分别仅考虑 A,C,G,T,把匹配成功的位置取个交集就可以。 使用 FFT 来完成字符串匹配。 现在仅考虑 A,把 S 中不会和 A 匹配上的位置上的字符设为 o,把 T 中不是 A 的字符设为 #,则匹配函数 C(x,y) 阅读全文
posted @ 2021-09-24 18:53 do_while_true 阅读(33) 评论(0) 推荐(1) 编辑
摘要:先钦点 a<b<c,不失一般性。 选择成为先手,如果出现等差数列,且后手上一次不能对最大的进行操作,那么输出公差就赢了。 发现如果让 a,b 变成等差数列最后一项,都是让它们加上 2cab. 那么先输出 2cab,如果后手让 a,b 增加的话就赢麻了, 阅读全文
posted @ 2021-09-24 18:52 do_while_true 阅读(30) 评论(0) 推荐(1) 编辑
摘要:以任意非叶节点为根求 dfs 树,设叶子节点为 k,答案的下界是 k2,现在给出一组构造方案证明这个下界可以达到。 把叶子节点按照 dfn 排序,然后第 i 个叶子连向第 i+k/2 个叶子。 如果每条边 阅读全文
posted @ 2021-09-24 18:51 do_while_true 阅读(37) 评论(0) 推荐(1) 编辑
摘要:设匹配函数 C(x,y) 为字符 x 和字符 y 匹配的值,是我们自己定义的值。 两个字符串匹配的值就是对应位置上的字符匹配的值的和。 对于文本串 S 和模式串 T,现在要求出 TS 中所有匹配的位置。 为了化成卷积的形式,把 T 反转。 这样 T 和 $S 阅读全文
posted @ 2021-09-23 18:29 do_while_true 阅读(185) 评论(0) 推荐(1) 编辑
摘要:假如只把相同颜色的果子放在一起,会剩下 amodk 个红果子,bmodk 个绿果子,这是可以构造出来的答案的下界。 剩下的红果子个数 <k,蓝果子个数 <k,果子和 <2k,最多会凑出一个篮子,所以答案的上界是我们可以轻易构造出 阅读全文
posted @ 2021-09-22 21:25 do_while_true 阅读(38) 评论(0) 推荐(1) 编辑
摘要:设 fi 为仅考虑前 i 个位置的答案。 fi=max{fjsum(j+1,i)+calc(j+1,i),fi1} sum(j+1,i)c 区间和,calc(i,j) 为完全在 [i,j] 中的演出收益和。 做一个扫 阅读全文
posted @ 2021-09-22 21:25 do_while_true 阅读(53) 评论(0) 推荐(1) 编辑
摘要:实际上就是个位运算卷积的背包,只需要每个 Fi=xai+xU 位运算卷积卷起来即可(U 是全集),如果直接暴力把每个 F 都卷起来是 GG 的,注意到这个做 FMT 也就是后缀和,所有位置不是 1 就是 2,或者说只有 ai 的前缀是 阅读全文
posted @ 2021-09-22 21:24 do_while_true 阅读(31) 评论(0) 推荐(1) 编辑
摘要:对于 f(k) 的计算,先计算把 1k 移成连续段,然后再计算逆序对数(最小交换次数使得一个排列排好序)。 至于为什么是对的?感性理解一下,首先排好序一定要有个逆序对的代价,假如两个数之间没有相邻,则交换它们需要一步一步走过去,这样的花费就高了。 考虑 \(f(k-1)\t 阅读全文
posted @ 2021-09-22 21:23 do_while_true 阅读(38) 评论(0) 推荐(1) 编辑
摘要:对图黑白染色,设黑色格子数为 s1,白色格子数为 s2,答案为 min(s1,s2). 最大可能的答案显然是 min(s1,s2),只要证明一定存在方案能达到这个答案即可。 因为两种颜色是对称的,先假设黑色格子数大于白色个数。 如果有两个相邻的长度相同 阅读全文
posted @ 2021-09-22 21:23 do_while_true 阅读(39) 评论(0) 推荐(1) 编辑
摘要:想到点分树就做完了( 假如能维护 cxx 子树内离 x 最近的红色点距离。 一开始想的是树剖这个东西,询问拆成查询它到根的链中最低的红点,和以它到根的链中的点为 LCA 的红点。前者很容易树剖两个 log 解决。如果维护的 cx 都是加上它到重链底 阅读全文
posted @ 2021-09-22 21:23 do_while_true 阅读(53) 评论(0) 推荐(1) 编辑
摘要:orz qyc 小 A,小 B,小 C 在玩游戏。他们每个人分别有 n,m,k 张牌,每张牌上面写着 a,b,c 三个字母中的其中一个,每个回合有一个人出牌,如果出牌为 a 则小 A 下一个回合出牌,如果出牌为 b 则小 B 下一个回合出牌,小 C 同理。若轮到某位玩 阅读全文
posted @ 2021-09-22 21:22 do_while_true 阅读(41) 评论(0) 推荐(1) 编辑
摘要:比赛链接 开了把vp,C降智导致浪费大量时间/dk/dk A 贪心,几种凑 10 的方案的优先度是:(3,3,4),(3,3,2,2),(4,4,2),(2,2,2,2,2),(4,2,2,2) ll a, b, c, ans; void solve() { read(a); read(b) 阅读全文
posted @ 2021-09-22 18:55 do_while_true 阅读(122) 评论(0) 推荐(1) 编辑

This blog has running: 1837 days 12 hours 56 minutes 51 seconds

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