CSP2019题解】的更多相关文章

CSP2019题解 格雷码 按照生成的规则模拟一下即可. 代码 括号树 看到括号匹配首先想到用栈,然后又在树上就可以想到可追溯化栈. 令\(a_i=1\)表示\(i\)号节点上的括号为(,否则为), 记栈为\(stk\),其中元素个数为\(top\). 设\(f_i\)表示加上节点\(i\)所对应的括号所增加的贡献,\(g_i\)表示这个点的答案,转移很显然: \[ \begin{aligned} \begin{cases} f_i=0&(a_{fa_i}=1)\\ f_i=f_{fa_i}&am…
CSP2019 题解 D1T1 格雷码(code) 题目传送门 https://loj.ac/problem/3208 题解 按照题意模拟就可以了. 对于第 \(i\) 位,如果 \(k \geq 2^i\) 那么这一位就是 \(1\),然后把 \(k\) 变成 \(2^{i + 1} - k - 1\).否则这一位为 \(0\),\(k\) 不变. 代码 https://loj.ac/submission/687508 D1T2 括号树(brackets) 题目传送门 https://loj.…
本题当然可以通过大力讨论每棵子树的size的大小关系,然后用各种数据结构暴力维护.但是我更倾向于用一种更为性质的做法. 首先讲一下我在考场上想到的做法(没写).就是考虑换根,在换根的过程中计算每一条边删去后得到的两棵子树的重心, 由于重心的一些性质,如果我们把以点v的所有儿子为根的子树的重心求了出来,那么我们要求以点v为根的子树的重心时,可以保证重心一定在v的重儿子子树的重心到v的链上,那么我们就可以通过链上倍增来实现对多棵子树的重心的合并.在换根时维护每个点子树size,以及子树内的重心,换根…
qwq 由于窝太菜了,实在是不会,所以在题解的帮助下过掉了这道题. 写此博客来整理一下思路 正文 传送 简化一下题意:现在有\(n\)行\(m\)列数,选\(k\)个数的合法方案需满足: 1.一行最多选一个 2.一列最多选\(\lfloor \frac{k}{2} \rfloor\)个数 当然,如果你在某一行里选了0,就相当于没有在这一行里选数 选一次对答案的贡献是你选的所有不为零的数的乘积.对于任意的\(k\),只要有合法方案,就能取. (希望没有把题目变得更复杂叭) 根据上面的要求,我们发现…
题面 这是一道典型的部分分启发正解的题. 所以我们先来看两个部分分. Part 1 菊花图 这应该是除了暴力以外最好想的一档部分分了. 如上图(节点上的数字已省略),如果我们依次删去边(2)(1)(3)(4),那么操作完后2号点上的数字就会跑到1号点上,1号点数字会跑到3号点上,3号点数字跑到4号点上--依此累推.那么我们相当于把五个节点连成了一个环( 5 -> 2 -> 1 -> 3 -> 4 -> 5 ),每一个结点上的数字都会跑到环上的下一个结点上去,我们就是要求能使最…
这题在考场上只会O(n^3 m),拿了84分.. 先讲84分,考虑容斥,用总方案减去不合法方案,也就是枚举每一种食材,求用它做超过\(\lfloor \frac{k}{2} \rfloor\) 道菜的方案数,从总方案中减去. 先枚举一种食材x,设f[i][j][k]为前i种烹饪方法中,做j道菜,其中k道是食材x做的的方案数,转移考虑第i种烹饪方案 不做菜/做食材x的菜/做其他食材的菜 三种情况.最后所有f[n][j][j/2+1 ~ n]的和即是不合法情况. 考虑怎么优化,设一种方案中有k道菜,…
诈个尸 先挖坑 虽然连去都没去但还是想做做 今年貌似比去年还毒瘤啊... yrx.hjw都进了省队线tql orz (myh:没AK真丢脸 Day1T1 格雷码 Day1T2 括号树 Day1T3 树上的数 Day2T1 Emiya家今天的饭 Day2T2 划分 Day2T3 树的重心…
D1T1 code 签到题,大家都会. 可以从高位往低位确定,如果遇到 \(1\),则将排名取反一下. 注意要开 unsigned long long. #include <bits/stdc++.h> typedef unsigned long long u64; const int MaxN = 100; u64 n, K; bool ans[MaxN]; inline void solve(u64 dep, u64 k) { if (dep == 0) return; u64 lsze…
\(\text{orz}\) 一波现场 \(\text{A}\) 掉 \(\text{D1T3}\) 的神仙 D2T3 centroid Solution 考虑每个点 \(u\) 作为重心的贡献 假设以 \(u\) 为根时,存在 \(u\) 的一个子节点 \(v\) 现在要在 \(v\) 的子树内删掉一个子树,使得 \(u\) 成为重心 考虑删子树之后,\(v\) 的子树大小需要满足什么条件 设 \(u\) 除 \(v\) 之外,所有子树大小的和为 \(s\) ,最大子树大小为 \(m\) (1…
至于为什么是 \(\text{Part A}\) 而不是 \(\text{Day 1}\) 那是因为 Day1 T3 还没改 (那这六题的 \(\text{solution}\) 就按难度顺序写吧) 感觉今年的画风和 \(\text{NOIP 2016}\) 有点像? D1T1 code Solution 直接模拟 如果 \(k<2^{n-1}\) 就输出 \(0\) 否则输出 \(1\) 并把 \(k\) 变成 \(2^n-1-k\) 然后 \(n\) 减掉 \(1\) 继续进行下去直到 \(…