摘要:
实际上就是个位运算卷积的背包,只需要每个 \(F_i=x^{a_i}+x^{U}\) 位运算卷积卷起来即可(\(U\) 是全集),如果直接暴力把每个 \(F\) 都卷起来是 GG 的,注意到这个做 FMT 也就是后缀和,所有位置不是 \(1\) 就是 \(2\),或者说只有 \(a_i\) 的前缀是 阅读全文
posted @ 2021-09-22 21:24
do_while_true
阅读(45)
评论(0)
推荐(1)
摘要:
对于 \(f(k)\) 的计算,先计算把 \(1\sim k\) 移成连续段,然后再计算逆序对数(最小交换次数使得一个排列排好序)。 至于为什么是对的?感性理解一下,首先排好序一定要有个逆序对的代价,假如两个数之间没有相邻,则交换它们需要一步一步走过去,这样的花费就高了。 考虑 \(f(k-1)\t 阅读全文
posted @ 2021-09-22 21:23
do_while_true
阅读(58)
评论(0)
推荐(1)
摘要:
对图黑白染色,设黑色格子数为 \(s_1\),白色格子数为 \(s_2\),答案为 \(\min(s_1,s_2)\). 最大可能的答案显然是 \(\min(s_1,s_2)\),只要证明一定存在方案能达到这个答案即可。 因为两种颜色是对称的,先假设黑色格子数大于白色个数。 如果有两个相邻的长度相同 阅读全文
posted @ 2021-09-22 21:23
do_while_true
阅读(53)
评论(0)
推荐(1)
摘要:
想到点分树就做完了( 假如能维护 \(c_x\) 为 \(x\) 子树内离 \(x\) 最近的红色点距离。 一开始想的是树剖这个东西,询问拆成查询它到根的链中最低的红点,和以它到根的链中的点为 LCA 的红点。前者很容易树剖两个 \(\log\) 解决。如果维护的 \(c_x\) 都是加上它到重链底 阅读全文
posted @ 2021-09-22 21:23
do_while_true
阅读(65)
评论(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
阅读(58)
评论(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
阅读(139)
评论(0)
推荐(1)
浙公网安备 33010602011771号