摘要:##「JOISC 2020 Day1」扫除 题目链接 先不考虑加点. 那么一个$H$操作影响的范围是$(x,n - l]$ $x$是在这个$H$操作之前的$V$操作所影响的最大的横坐标 $V$操作类似 画个图理解一下大概就是: 红色部分为$H$可以影响的范围(黄色的部分灰尘被移出去了) 然后这个可以 阅读全文
posted @ 2020-05-31 22:40 zzy2005 阅读(88) 评论(0) 推荐(0) 编辑
摘要:灭虫 题目链接 【问题描述】 你需要在一条无限长的道路上喷洒杀虫剂。 在这条道路上,总共有 N 个投放点,其中第 i 个投放点在数轴上坐标 pi 处。在每一 个投放点,你可以选择往左喷洒或往右喷洒。但是由于风向和地理环境的影响,向左喷洒和 向右喷洒的效果不一定相同。具体来说,在一个位置向左喷洒,可以 阅读全文
posted @ 2019-09-21 22:43 zzy2005 阅读(178) 评论(0) 推荐(0) 编辑
摘要:二进制集合枚举子集 枚举一个二进制集合的子集,可以看做原集合忽略0之后不断 1 就有了这样一种算法: i 1使得末尾的0全部变成1,但是由于&s,原来是0的位无论如何也不会变成1,但是原来是1的位就形成了不断 1的模式 卡空间 mx占18位,ls和rs占23位 斐波拉契数列 $f[i] = f[i 阅读全文
posted @ 2018-12-30 16:25 zzy2005 阅读(147) 评论(3) 推荐(0) 编辑
摘要:LCA Tarjan代码: KMP模板 EXBSGS cpp include using namespace std; define LL long long const int Mod = 1e5 + 7; int gcd(int x, int y) { return !y ? x : gcd(y 阅读全文
posted @ 2018-12-29 17:26 zzy2005 阅读(187) 评论(1) 推荐(0) 编辑
摘要:分析一波,发现是棵树。 我们先假设是一颗外向树, 考虑$u$是以它为根的子树最先抽出来的, 设子树$W$和为$S_u$,全局$W$和为$S$。 有$p=\frac\sum_{i\ge0}(\frac)^i=\frac$ 那么我们设$f[u][S_u]$,转移就是背包一样转移。 现在我们有一些向根的边 阅读全文
posted @ 2020-11-21 08:38 zzy2005 阅读(27) 评论(0) 推荐(0) 编辑
摘要:(global-linum-mode t) (setq default-cursor-type 'bar) (setq default-tab-width 4) (setq c-default-style "awk") (global-set-key [f8] 'compile) (global-s 阅读全文
posted @ 2020-11-20 12:16 zzy2005 阅读(17) 评论(0) 推荐(0) 编辑
摘要:这个题和榕树之心很像? 我们枚举一个根,判断能不能使得所以点跳到根。 把一个点拆成到$dep-1$个点,每个祖先(包括自己,不包括根)放一个棋子。 现在我们对于一个子树,可以消掉不属于同一个子树的点。 设$f_u$表示这个子树内最少剩多少点。 依然有 \(f_u=sum[u]\mod 2 (sum[ 阅读全文
posted @ 2020-11-18 16:27 zzy2005 阅读(15) 评论(0) 推荐(0) 编辑
摘要:设$f_i$表示$i$子树最少扩展多少次,$siz_i$表示子树大小。 那么有 \(f_u=siz[u] \mod 2(siz[u]-siz[v]-1\ge f[v])\) 否则$f_u=siz[v]+1-(siz[u]-siz[v]-1)$ 其中$v$是$u$的重儿子。 第一个式子是因为,考虑重儿 阅读全文
posted @ 2020-11-18 16:21 zzy2005 阅读(15) 评论(0) 推荐(0) 编辑
摘要:首先有一个性质,达到下界的充要条件是排不能存在长度大于$2$的下降子序列。 证明: 要想达到下界$\frac{1}{2}\sum|i-p_i|$,等于每次交换相邻两个数时,这两个数一定是往目的方向移动。 如果存在长度大于$2$的下降子序列,那么第一次,对于这个子序列中的中间的一个数$x$,之前比$x 阅读全文
posted @ 2020-11-18 16:16 zzy2005 阅读(18) 评论(0) 推荐(0) 编辑
摘要:首先,我们可以知道可以作为第一个的一定是度数$<3$的点。 那么我们找到最小的度数$<3$的点,先把它作为根。 显然它并不能作为根,我们要对根进行调整。 $dp$出$f_i$表示$i$子树内最小的度数$<3$的点。 假设根在$u$, 如果它只有$1$个儿子$v$,且$v$<\(u\),那么根在$v$ 阅读全文
posted @ 2020-11-18 16:14 zzy2005 阅读(15) 评论(0) 推荐(0) 编辑
摘要:如果我们知道了图,我们统计交错路的方法: 设$g_i$表示以$i$结尾的交错路数量的奇偶性。 按照拓扑序转移 \(g_v=(1+\sum{g_u}) \mod 2\),\(ans=(\sum g_i)\mod 2\)。 我们考虑从$1 \sim n$加入点, 首先,如果和$i$相连的$j$与$i$异 阅读全文
posted @ 2020-11-18 16:12 zzy2005 阅读(30) 评论(0) 推荐(0) 编辑
摘要:首先可以得到一个$O((S+n)\log_2n)$的贪心做法。 考虑到相同的$K_i$可以合并在一起询问,因为$\sum K_i \leq n$所以不同的$K_i$只有$\sqrt n$个, 然后对于两个人$[l_i,r_i],[l_j,r_j]$如果$l_i,l_j \in [K_i, K_{i+ 阅读全文
posted @ 2020-11-18 16:11 zzy2005 阅读(21) 评论(0) 推荐(0) 编辑
摘要:组合数学 ##一些基础的 组合数 \(n\choose m\)=\(n-1\choose m\)+\(n-1\choose m-1\) \(\sum{n\choose i}=2^n\) \(\sum_{i=0}^m{i\choose n}={m+1\choose n+1}\) 卡特兰数 \(C(n) 阅读全文
posted @ 2020-10-29 11:27 zzy2005 阅读(18) 评论(0) 推荐(0) 编辑
摘要:如果我们知道每个高度$h_i$,如何判断其最后是否留下? 我们从后往前扫,如果$h_i$被占了,就减一,直到找到一个没被占的占掉, 如果没有找到,那么说明$i$不能被留下。 每个数选两次太复杂了,我们把一个数拆成两个“不同”的数,最后方案除掉$2n$, 然后就有一个状压$dp$,设到了第$i$位,位 阅读全文
posted @ 2020-10-03 22:37 zzy2005 阅读(60) 评论(0) 推荐(0) 编辑
摘要:如果我们知道了图,我们统计交错路的方法: 设$g_i$表示以$i$结尾的交错路数量的奇偶性。 按照拓扑序转移 \(g_v=(1+\sum{g_u}) \mod 2\),\(ans=(\sum g_i)\mod 2\)。 我们考虑从$1 \sim n$加入点, 首先,如果和$i$相连的$j$与$i$异 阅读全文
posted @ 2020-09-26 16:38 zzy2005 阅读(88) 评论(0) 推荐(0) 编辑
摘要:首先,我们可以知道可以作为第一个的一定是度数$<3$的点。 那么我们找到最小的度数$<3$的点,先把它作为根。 显然它并不能作为根,我们要对根进行调整。 $dp$出$f_i$表示$i$子树内最小的度数$<3$的点。 假设根在$u$, 如果它只有$1$个儿子$v$,且$v$<\(u\),那么根在$v$ 阅读全文
posted @ 2020-09-24 16:56 zzy2005 阅读(33) 评论(0) 推荐(0) 编辑
摘要:首先有一个性质,达到下界的充要条件是排不能存在长度大于$2$的下降子序列。 证明: 要想达到下界$\frac{1}{2}\sum|i-p_i|$,等于每次交换相邻两个数时,这两个数一定是往目的方向移动。 如果存在长度大于$2$的下降子序列,那么第一次,对于这个子序列中的中间的一个数$x$,之前比$x 阅读全文
posted @ 2020-09-24 15:02 zzy2005 阅读(46) 评论(0) 推荐(0) 编辑
摘要:题面链接 动态dp #include<bits/stdc++.h> #define LL long long #define RG register using namespace std; template<class T> inline void read(T &x) { x = 0; RG c 阅读全文
posted @ 2020-09-20 14:42 zzy2005 阅读(73) 评论(0) 推荐(0) 编辑
摘要:##min-max容斥 给定集合$S$,设$max(S)$为其中最大值,$min(S)$为最小值 有 \(max(S)=\sum_{T \in S}(-1)^{|T|+1}min(T)\) \(min(S)=\sum_{T \in S}(-1)^{|T|+1}max(T)\) ##k-th min- 阅读全文
posted @ 2020-08-18 16:57 zzy2005 阅读(38) 评论(0) 推荐(0) 编辑