摘要: 暂且不说知识储备问题,就我的常见错误给个总结: 1、数组看情况计算着开,也不能盲目的开大,顶着范围开也有一定概率会挂。 2、有些算法不会计算时间复杂度,我经常因为不确定时间复杂度(经常是因为$O(玄学)$的dfs之类的算法)能否通过题目而一直卡在一道题上。 3、注意题目的特性,善于找性质,不要总是想阅读全文
posted @ 2018-10-17 16:59 蒟蒻--lichenxi 阅读(25) 评论(0) 编辑
摘要: "传送门" 一道小清新题 首先转化一下问题,将题目给出的$t$数组$sort$之后差分一下。 问题就变成了给出一个长度为$n 1$的序列,选出$k$个不相邻的数使得和最小 很容易发现这是一个下凸的函数,$\rm wqs$二分去掉$k$的限制之后那个$dp$就很简单了 设$f[i][0/1]$表示前$阅读全文
posted @ 2019-07-13 15:33 蒟蒻--lichenxi 阅读(5) 评论(0) 编辑
摘要: "传送门" 首先应该考虑一下,多加一条边对树上路径的影响是什么 可以发现多加一条边就会出现一颗基环树 我们发现所有经过环的路径都会翻倍 那么假设$x$是$y$的父亲,$x$在环内,那么将$y$加入环的贡献就是$(size[x] size[y]) size[y]$ 然后类似求树的直径做两遍$bfs$(阅读全文
posted @ 2019-07-13 14:20 蒟蒻--lichenxi 阅读(8) 评论(0) 编辑
摘要: "传送门" 可以发现,选的电缆越多,权值和越大,并且斜率呈单调递增,图像是一个下凸壳的形式 那么我们就可以$\rm wqs$二分解决这个问题 二分斜率,我们就可以去掉那个$k$的限制 设$f[i][0/1]$表示前$i$个数,第$i$个数选/不选的最小代价 由贪心可知,我们选的电缆一定是相邻的 所以阅读全文
posted @ 2019-07-09 11:38 蒟蒻--lichenxi 阅读(8) 评论(0) 编辑
摘要: "传送门" wqs二分果题 就是切线对应多个点有点烦,别的很好想 当切线对应多个点时,就取横坐标最小的决策点,最后取横坐标最大的决策点求答案。 代码:阅读全文
posted @ 2019-07-06 16:48 蒟蒻--lichenxi 阅读(2) 评论(0) 编辑
摘要: "传送门" 众所周知,两个后缀的最长公共前缀就是两个后缀在$\rm sam$上的$\rm lca$ 那么对于这个题,我们发现那个式子其实就是$\rm sam$上的两点间的距离 我们就可以直接对于每条边算出贡献$(len_x len_{fa_x}) size_x (n size_x)$ 然后就是答案了阅读全文
posted @ 2019-07-01 19:56 蒟蒻--lichenxi 阅读(5) 评论(0) 编辑
摘要: "传送门" 好像概率期望也写过一些题了,但是没啥用,还是不会套路,看了题解才会写 首先设$f[x]$为$x$到$n$的期望最少步数,$deg_x$表示$x$的度数 不考虑不动,显然$f[x]=\sum_{(x,y)\in E}\frac{f[y]+1}{deg_x}$ 由于可以不动,$f[x]=\s阅读全文
posted @ 2019-06-27 19:35 蒟蒻--lichenxi 阅读(10) 评论(0) 编辑
摘要: "传送门" 解法1: 膜题解,分类讨论题 考虑设$f[i][j][0/1]$表示填了$i$个数,前$i$个数相邻的有$j$对,$i$和$i 1$是否相邻 然后就是对于每次插进来一个数疯狂的分类讨论去转移就行了。 其实知道状态后面的方程就不难推了,~~随便推推就AC了~~ 解法2: 猜测有规律,打表。阅读全文
posted @ 2019-06-20 18:15 蒟蒻--lichenxi 阅读(9) 评论(0) 编辑
摘要: "传送门" 计数$\rm dp$,容斥 首先,我们可以将每个数都看成本质不同的 然后我们设$f(i,j)$表示当前考虑了前$i$种颜色,有$j$个位置保留的是原来的数,设$\rm cnt[i]$为第$\rm i$种颜色的数量 那么转移显然就是 $$ f(i,j)=\sum_{k=0}^{min(cn阅读全文
posted @ 2019-06-20 16:03 蒟蒻--lichenxi 阅读(25) 评论(0) 编辑
摘要: "Codeforces Round 499 (Div. 1)" 这场本来想和同学一起打$\rm virtual\ contest$的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解。 "B.Rocket" 极其简单的一道交互题,有些位置会说反的,那么就选一个数来询问直接选出所有的这样的位阅读全文
posted @ 2019-06-20 15:32 蒟蒻--lichenxi 阅读(16) 评论(0) 编辑
摘要: 罚时有点小严重,但是div.3确实快乐. "A.Wrong Subtraction" 模拟,暴力模拟. "B.Two gram" $O(n^2)$暴力枚举. "C.Less or Equal" ~~小清新~~的判断题,sort就可以了,判断很小清新的. c++ include include inc阅读全文
posted @ 2019-06-15 18:57 蒟蒻--lichenxi 阅读(14) 评论(0) 编辑
摘要: "传送门" 好妙的一道题,题目要求的其实是这个式子 $$ \sum_{i=1}^{n}\sum_{j=i+1}^{n}\binom{a_i+b_i+a_j+b_j}{a_i+a_j} $$ 但是直接计算显然是$O(n^2)$的,看起来也没法优化 由于$n$比较大,而坐标范围比较小,我们发现,~~我才阅读全文
posted @ 2019-05-30 19:30 蒟蒻--lichenxi 阅读(11) 评论(0) 编辑
摘要: "传送门" 这个题考虑组合数的实际意义,可以将题意转化为从$nk$个数里面选$m$个数$(m\%k=r)$的方案数 这个可以$dp$求解 设$f[i][j]$表示前$i$个数选出$j$个数($j$是对于$k$取mod后的)的方案数 显然有$f[i][j]=f[i 1][j]+f[i 1][(j 1+阅读全文
posted @ 2019-05-27 19:05 蒟蒻--lichenxi 阅读(14) 评论(0) 编辑
摘要: "传送门" 直接对于每种颜色都建一棵LCT就行了,至于判断能否修改,有一个特殊情况就是修改前和修改后的颜色可能相同 还有就是修改点权记得update 代码:阅读全文
posted @ 2019-05-27 11:10 蒟蒻--lichenxi 阅读(39) 评论(0) 编辑
摘要: "传送门" LCT模板题 讲一下几个细节: 1、cut的时候如果只是将$x$定为根,然后将它的右儿子以及$y$的父亲清空是错的,因为$x$此时的右儿子不一定是$y$ 所以记得需要提取路径,然后再将深度小的那个节点的左儿子和深度大的节点的父亲清空 2、对于标记的问题,建议将点权表示为$p v_i+q$阅读全文
posted @ 2019-05-23 16:18 蒟蒻--lichenxi 阅读(8) 评论(0) 编辑
摘要: "传送门" 首先我们可以将计算出所有上升序列的答案,然后自由组合乘上个$n!$就行了 我们设$f(n)$为长度为$n$的上升序列的答案,$f(n,x)$为长度为$n$并且包含$x$的上升序列的答案 那么显然有 $$ f(n)=\frac{1}{n}\sum_{i=1}^{A}f(n,i) $$ 也有阅读全文
posted @ 2019-05-19 21:56 蒟蒻--lichenxi 阅读(10) 评论(0) 编辑
摘要: "luogu" 普通版题解:https://www.cnblogs.com/lcxer/p/10876856.html 在普通版里,我们考虑对于$n$对情侣,恰好$k$对是和谐的方案数是 $$ ans[n][k]=\binom{n}{k}A^k_n2^kg(n k) $$ 然而这样做是$O(n^2)阅读全文
posted @ 2019-05-16 21:15 蒟蒻--lichenxi 阅读(68) 评论(0) 编辑
摘要: "luogu" 考虑对于$n$对情侣,恰好$k$对是和谐的方案数是 $$ ans[n][k]=\binom{n}{k}A^k_n2^kg(n k) $$ $g(n)$为全部$n$对情侣不和谐的方案数 容易知道去掉所有合法的就是不合法的 $$ g(n)=(2n)! \sum_{i=1}^{n}ans[阅读全文
posted @ 2019-05-16 17:20 蒟蒻--lichenxi 阅读(13) 评论(0) 编辑
摘要: "luogu" ~~显然这是个背包题~~ 显然物品的数量是不用管的 所以考虑大小为$v$的物品可以装的体积用生成函数表示一下 $$ f(x)=\sum_{i=0}^{+\infty}x^{vi}=\frac{1}{1 x^v}\\ ans=\prod_{i=1}^{n}\frac{1}{1 x^{v阅读全文
posted @ 2019-05-15 18:40 蒟蒻--lichenxi 阅读(10) 评论(0) 编辑
摘要: "bzoj" "luogu" 生成函数做起来挺简单的 首先,答案显然是 $$ ans=[x^n]\sum_{i=1}^{+\infty}Fib^i(x)=[x^n]\frac{Fib(x)}{1 Fib(x)} $$ 然后有 $$ Fib(x)=\frac{1}{1 x x^2} $$ 证明如下(知阅读全文
posted @ 2019-05-14 18:59 蒟蒻--lichenxi 阅读(10) 评论(0) 编辑
摘要: "bzoj传送门" "luogu" 生成函数,多项式 首先考虑这个题最显然的$dp$方程,设$f(n)$为根节点权值为$n$的二叉树个数,$g(n)$为权值为$n$的点是否存在 当$n=0$,$f(n)=1$ 当$n\neq 0$ $$ f(n)=\sum_{i=1}^{n}g(n)\sum_{j=阅读全文
posted @ 2019-05-13 20:13 蒟蒻--lichenxi 阅读(14) 评论(0) 编辑
摘要: "传送门" 生成函数 设生成函数$f(x)$,可以将系数定为选的方案数,指数定为代价 那么 $$ f(x)=\sum_{i=1}^{n}x^{w_i} $$ 然后答案就是$f^3(x)+f^2(x)+f(x)$然后去掉重复的情况 然后我们设 $$ A(x)=\sum_{i=1}^{n}x^{2w_i阅读全文
posted @ 2019-05-11 14:11 蒟蒻--lichenxi 阅读(11) 评论(0) 编辑
摘要: "传送门" 生成函数的模板题 前置知识: $$ \sum_{i=0}^{+\infty}x^i=\frac{1}{1 x} $$ 其实就是等比数列求和公式,这就是公比为$x$的等比数列,然后取$x\in( 1,1)$ 也就是你只要会等比数列求和就行了 也就有 $$ (1+x+x^2+x^3+x^4+阅读全文
posted @ 2019-05-09 18:23 蒟蒻--lichenxi 阅读(97) 评论(0) 编辑
摘要: "传送门" 思路还是很巧妙的。 显然能对答案产生贡献的最多颜色为$min\{m,n/S\}$ 设$f(i)$为出现次数为$S$的颜色种类至少有$i$种的涂色方案 那么 $$ f(i)=\binom{m}{i}\frac{n!}{(S!)^i(n iS)!}(m i)^{n iS} $$ 然后让我们分阅读全文
posted @ 2019-05-08 21:48 蒟蒻--lichenxi 阅读(11) 评论(0) 编辑
摘要: "传送门" 正反两边dijkstra染色,然后枚举一下边,求出最小值就好啦 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; bool ok; for(o阅读全文
posted @ 2019-05-04 18:49 蒟蒻--lichenxi 阅读(19) 评论(0) 编辑
摘要: "传送门" 这个题好像 "bzoj4455:[Zjoi2016]小星星" 然后就可以类比那个思路将树形dp改为矩阵树定理,然后就做完了 代码: c++ include include include include using namespace std; void read(int &x) { c阅读全文
posted @ 2019-05-03 15:17 蒟蒻--lichenxi 阅读(15) 评论(0) 编辑
摘要: "传送门" 考虑假如不考虑重复映射 那么显然可以得到一个$O(n^3)$的树形dp 然后考虑如何去掉不合法的情况? 容斥,考虑每次只能从一个点集$S$里选点(也就是至多$|S|$个点的映射的方案数) 那么显然就可以枚举点集$S$,做树形dp,然后容斥一下就做完了 总复杂度:$O(2^nn^3)$ 代阅读全文
posted @ 2019-05-01 16:35 蒟蒻--lichenxi 阅读(16) 评论(0) 编辑
摘要: "传送门" 感觉这个题是真的神仙啊,思路是真的难想 首先设$f(i)$为$i$个点的无向连通图个数,然后设$g(i)$为$i$个点的图的个数(注意,此处不一定联通) 那么我们考虑枚举$1$号点所在的联通块的大小 显然有 $$ g(n)=\sum_{i=1}^nf(i)\binom{n 1}{i 1}阅读全文
posted @ 2019-04-25 13:31 蒟蒻--lichenxi 阅读(20) 评论(0) 编辑
摘要: "传送门" 首先我们需要知道第二类斯特林数的通项公式 $$ S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}( 1)^k\binom{m}{k}(m k)^n $$ 然后我们就可以将题目给的式子里的第二类斯特林数拆开 $$ f(n)=\sum_{i=0}^{n}\sum_{j=0}阅读全文
posted @ 2019-04-24 12:05 蒟蒻--lichenxi 阅读(12) 评论(0) 编辑
摘要: "传送门" ~~这里提供智障的$O(n^2)$做法~~ 其实是有$O(logn)$做法的,但是我太菜了想不出来 Solution: 首先可以发现生成的序列一定是一个两边向中间单调递减的序列 这样就可以发现我们的删除序列也是一个有两个单调递减的子序列的序列 然后我们就可以设$f[i][j]$为当前确定阅读全文
posted @ 2019-04-23 18:26 蒟蒻--lichenxi 阅读(12) 评论(0) 编辑
摘要: "传送门" 这个是真的简单题,随便手玩一下就可以发现最优策略一定是给$1$加上自环 然后就可以dfs一下看哪些点子树里深度最深的点到当前点的距离会等于$k 1$,然后将当前点连向$1$(当然特判一下父亲节点是不是$1$),就好了 代码: c++ include include include inc阅读全文
posted @ 2019-04-22 14:01 蒟蒻--lichenxi 阅读(15) 评论(0) 编辑
摘要: "传送门" 其实有一个显然的性质嘛:对于每个数,其实只要考虑它最右能被换到的位置就好了 然后设$f[i][j]$表示已经处理完了前$i 1$位,当前还有$j$个$1$可以自由支配(注意这里说的是当前可以自由支配,不是总共可以自由支配的$1$) 代码: c++ include include incl阅读全文
posted @ 2019-04-22 11:17 蒟蒻--lichenxi 阅读(15) 评论(0) 编辑
摘要: "传送门" 这个题只要想到移动机器人和移动出口是等价的就好做了 考虑设$f[i][j][k][t]$为最远向左移动$i$,向右移动$j$,向上移动$k$,向下移动$t$,这个矩形内最多能救的机器人 转移就记录一个前缀和来辅助转移,这样复杂度就在能通过的范围内了 但是转移还是比较麻烦的,还需要考虑当前阅读全文
posted @ 2019-04-20 17:39 蒟蒻--lichenxi 阅读(11) 评论(0) 编辑
摘要: "传送门" 智障爆搜题 可以发现题目给出的式子可以移项 然后就是$rev(N) N=D$ 然后假设$N=a_1 10^{n 1}+a_2 10^{n 2}+...+a_{n}$ 那么$rev(N)=a_n 10^{n 1}+a_{n 1} 10^{n 2}+...+a_{1}$ 就容易得到$\sum阅读全文
posted @ 2019-04-20 12:58 蒟蒻--lichenxi 阅读(27) 评论(0) 编辑
摘要: "传送门" 显然$a b$的情况下才有解 考虑先找出一个诚实的人,然后剩下的都可以在$n$次以内问出来了 发现如果一个人说另一个人是说谎的那么这两个人必有一个是说谎的,由于诚实的人严格多于不诚实的人,我们就可以把他们都丢掉 我们可以考虑维护一个栈,这样找出来的栈顶一定是诚实的人,总次数也在$2n$以阅读全文
posted @ 2019-04-19 16:43 蒟蒻--lichenxi 阅读(9) 评论(0) 编辑
摘要: "传送门" 这个题是真的巧妙 首先一个很巧妙的思路,差分 考虑假如$a_i!=a_{i 1}$,则$b_i=1$,否则$b_i=0$ 这样一来,一个区间的翻转就变成了对于两个数的取反了 然后我们来考虑一下取反的代价(没错这个题我就只想到了这个) 1、假如距离是奇质数,只要1步,显然 2、假如距离是偶阅读全文
posted @ 2019-04-19 16:28 蒟蒻--lichenxi 阅读(17) 评论(0) 编辑
摘要: "传送门" 考虑到一个很显然的事实:水是逃不掉的,一定要接的 所以我们就可以得到一个结论:如果当前的水温比上次低,就混合起来(因为水是逃不掉的),如果高就保留(因为我可以将前面的全部抛弃,只取这个高的) 维护一个单调递增队列,复杂度$O(n)$,然后就做完了,答案就在做的过程中统计就好了 代码: c阅读全文
posted @ 2019-04-18 21:52 蒟蒻--lichenxi 阅读(12) 评论(0) 编辑
摘要: "传送门" 这个题网上有两种做法,一种是树状数组的,还有一种是暴力模拟的,暴力模拟显然不够优美,所以我用的树状数组 显然可以从初状态推到目标状态,我们也可以考虑倒推回去 首先可以容易发现每列的数字是不变的,所以可以把一些奇奇怪怪的情况先处理掉 每次旋转会使矩阵翻转并且每列取反,发现行其实没什么用,可阅读全文
posted @ 2019-04-17 21:27 蒟蒻--lichenxi 阅读(14) 评论(0) 编辑
摘要: "传送门" 按理说想到转化问题之后就不难了吧,可是我还是不会写 一个很容易想到的转化就是差分,将银币数和铜币数都减去金币数,这样就转化为$x+y+z$个钱币选$y$个银币和$z$个铜币的最大数量了 ~~然后我这个菜逼就不会做了~~ 设总钱币数为$n$,银币$x[i]$个,铜币$y[i]$个,就可以按阅读全文
posted @ 2019-04-17 15:13 蒟蒻--lichenxi 阅读(25) 评论(0) 编辑
摘要: "传送门" 好神的状压dp啊 首先考虑一个性质,删掉之后的图一定是个联通图 并且每个点最多只与保留下来的那条路径上的一个点有边相连 然后设状态:$f[s][t]$代表当前联通块的点的状态为$s$和路径结尾的点$t$ 然后考虑转移,要么拓展一个点作为路径,要么挂一个联通块到当前路径结尾的点上 代码: 阅读全文
posted @ 2019-04-16 18:42 蒟蒻--lichenxi 阅读(23) 评论(0) 编辑
摘要: "传送门" 还是猜结论呢 然后我们就想我们可以每次去掉尽量多的位数来保证次数最小,假装这是对的,先写一发,A了 考虑如何去掉尽量多的位数,我们可以找到最大的几位的不下降序列,把最后一个 1,后面全部改成9,这样我们就得到了一个每次去掉数字最前的一个不下降序列,然后将最后一位+1的做法 然后发现有一种阅读全文
posted @ 2019-04-15 13:04 蒟蒻--lichenxi 阅读(13) 评论(0) 编辑