摘要: 暂且不说知识储备问题,就我的常见错误给个总结: 1、数组看情况计算着开,也不能盲目的开大,顶着范围开也有一定概率会挂。 2、有些算法不会计算时间复杂度,我经常因为不确定时间复杂度(经常是因为$O(玄学)$的dfs之类的算法)能否通过题目而一直卡在一道题上。 3、注意题目的特性,善于找性质,不要总是想阅读全文
posted @ 2018-10-17 16:59 蒟蒻--lichenxi 阅读(22) 评论(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 阅读(2) 评论(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 阅读(1) 评论(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 阅读(5) 评论(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 阅读(3) 评论(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 阅读(5) 评论(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 阅读(6) 评论(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 阅读(4) 评论(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 阅读(89) 评论(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 阅读(5) 评论(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 阅读(12) 评论(0) 编辑
摘要: "传送门" 这个题好像 "bzoj4455:[Zjoi2016]小星星" 然后就可以类比那个思路将树形dp改为矩阵树定理,然后就做完了 代码: c++ include include include include using namespace std; void read(int &x) { c阅读全文
posted @ 2019-05-03 15:17 蒟蒻--lichenxi 阅读(13) 评论(0) 编辑
摘要: "传送门" 考虑假如不考虑重复映射 那么显然可以得到一个$O(n^3)$的树形dp 然后考虑如何去掉不合法的情况? 容斥,考虑每次只能从一个点集$S$里选点(也就是至多$|S|$个点的映射的方案数) 那么显然就可以枚举点集$S$,做树形dp,然后容斥一下就做完了 总复杂度:$O(2^nn^3)$ 代阅读全文
posted @ 2019-05-01 16:35 蒟蒻--lichenxi 阅读(13) 评论(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 阅读(19) 评论(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 阅读(6) 评论(0) 编辑
摘要: "传送门" ~~这里提供智障的$O(n^2)$做法~~ 其实是有$O(logn)$做法的,但是我太菜了想不出来 Solution: 首先可以发现生成的序列一定是一个两边向中间单调递减的序列 这样就可以发现我们的删除序列也是一个有两个单调递减的子序列的序列 然后我们就可以设$f[i][j]$为当前确定阅读全文
posted @ 2019-04-23 18:26 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 这个是真的简单题,随便手玩一下就可以发现最优策略一定是给$1$加上自环 然后就可以dfs一下看哪些点子树里深度最深的点到当前点的距离会等于$k 1$,然后将当前点连向$1$(当然特判一下父亲节点是不是$1$),就好了 代码: c++ include include include inc阅读全文
posted @ 2019-04-22 14:01 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 其实有一个显然的性质嘛:对于每个数,其实只要考虑它最右能被换到的位置就好了 然后设$f[i][j]$表示已经处理完了前$i 1$位,当前还有$j$个$1$可以自由支配(注意这里说的是当前可以自由支配,不是总共可以自由支配的$1$) 代码: c++ include include incl阅读全文
posted @ 2019-04-22 11:17 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 这个题只要想到移动机器人和移动出口是等价的就好做了 考虑设$f[i][j][k][t]$为最远向左移动$i$,向右移动$j$,向上移动$k$,向下移动$t$,这个矩形内最多能救的机器人 转移就记录一个前缀和来辅助转移,这样复杂度就在能通过的范围内了 但是转移还是比较麻烦的,还需要考虑当前阅读全文
posted @ 2019-04-20 17:39 蒟蒻--lichenxi 阅读(7) 评论(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 阅读(6) 评论(0) 编辑
摘要: "传送门" 显然$a b$的情况下才有解 考虑先找出一个诚实的人,然后剩下的都可以在$n$次以内问出来了 发现如果一个人说另一个人是说谎的那么这两个人必有一个是说谎的,由于诚实的人严格多于不诚实的人,我们就可以把他们都丢掉 我们可以考虑维护一个栈,这样找出来的栈顶一定是诚实的人,总次数也在$2n$以阅读全文
posted @ 2019-04-19 16:43 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 这个题是真的巧妙 首先一个很巧妙的思路,差分 考虑假如$a_i!=a_{i 1}$,则$b_i=1$,否则$b_i=0$ 这样一来,一个区间的翻转就变成了对于两个数的取反了 然后我们来考虑一下取反的代价(没错这个题我就只想到了这个) 1、假如距离是奇质数,只要1步,显然 2、假如距离是偶阅读全文
posted @ 2019-04-19 16:28 蒟蒻--lichenxi 阅读(9) 评论(0) 编辑
摘要: "传送门" 考虑到一个很显然的事实:水是逃不掉的,一定要接的 所以我们就可以得到一个结论:如果当前的水温比上次低,就混合起来(因为水是逃不掉的),如果高就保留(因为我可以将前面的全部抛弃,只取这个高的) 维护一个单调递增队列,复杂度$O(n)$,然后就做完了,答案就在做的过程中统计就好了 代码: c阅读全文
posted @ 2019-04-18 21:52 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 这个题网上有两种做法,一种是树状数组的,还有一种是暴力模拟的,暴力模拟显然不够优美,所以我用的树状数组 显然可以从初状态推到目标状态,我们也可以考虑倒推回去 首先可以容易发现每列的数字是不变的,所以可以把一些奇奇怪怪的情况先处理掉 每次旋转会使矩阵翻转并且每列取反,发现行其实没什么用,可阅读全文
posted @ 2019-04-17 21:27 蒟蒻--lichenxi 阅读(8) 评论(0) 编辑
摘要: "传送门" 按理说想到转化问题之后就不难了吧,可是我还是不会写 一个很容易想到的转化就是差分,将银币数和铜币数都减去金币数,这样就转化为$x+y+z$个钱币选$y$个银币和$z$个铜币的最大数量了 ~~然后我这个菜逼就不会做了~~ 设总钱币数为$n$,银币$x[i]$个,铜币$y[i]$个,就可以按阅读全文
posted @ 2019-04-17 15:13 蒟蒻--lichenxi 阅读(5) 评论(0) 编辑
摘要: "传送门" 好神的状压dp啊 首先考虑一个性质,删掉之后的图一定是个联通图 并且每个点最多只与保留下来的那条路径上的一个点有边相连 然后设状态:$f[s][t]$代表当前联通块的点的状态为$s$和路径结尾的点$t$ 然后考虑转移,要么拓展一个点作为路径,要么挂一个联通块到当前路径结尾的点上 代码: 阅读全文
posted @ 2019-04-16 18:42 蒟蒻--lichenxi 阅读(11) 评论(0) 编辑
摘要: "传送门" 还是猜结论呢 然后我们就想我们可以每次去掉尽量多的位数来保证次数最小,假装这是对的,先写一发,A了 考虑如何去掉尽量多的位数,我们可以找到最大的几位的不下降序列,把最后一个 1,后面全部改成9,这样我们就得到了一个每次去掉数字最前的一个不下降序列,然后将最后一位+1的做法 然后发现有一种阅读全文
posted @ 2019-04-15 13:04 蒟蒻--lichenxi 阅读(5) 评论(0) 编辑
摘要: "传送门" 还是看题解的啦 先考虑一个显而易见的结论:A和B二进制下最高的几位相同是没用的(设去掉的那些位之和为sum) 然后我们设$d$为二进制下从高位到低位第一位不相同的,$k$为B从高位到低位第二个不为0的 然后我们分几段来统计答案 首先,$[A,2^d 1+sum]$显然是可以凑出来的 然后阅读全文
posted @ 2019-04-14 21:57 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 感觉性质挺好想的,就是二分答案怎么就是想不到呢 考虑先二分出一个值,比他大的设为1,比他小的设为0 然后就可以$O(n)$地推出第一行是0还是1: 1、如果没有两个相邻且相等的,那么中间那个也就是第一行的 2、如果有两个相邻且相等的,那么第一行显然就是离底层最近的那个相邻且相等的 性质就阅读全文
posted @ 2019-04-14 10:43 蒟蒻--lichenxi 阅读(8) 评论(0) 编辑
摘要: "传送门" 乍一看像是一个计算几何,然后想到了BFS,但是苦于无奈$O(n^2)$不会优化 然后以下参考zjq_shadow大佬的思路 显然发现曼哈顿距离很麻烦,除了暴力枚举貌似没什么很好的办法 考虑将坐标轴旋转$45^\circ$,然后就可以将曼哈顿距离转化为切比雪夫距离,坐标为$(x,y)$的点阅读全文
posted @ 2019-04-12 15:23 蒟蒻--lichenxi 阅读(37) 评论(0) 编辑
摘要: "传送门" 考虑到这样一个性质,一个入度为0的点连一条边到一个DAG中,依然是一个DAG 于是设$f(i)$为$i$个点组成的DAG方案数, 那么$n$个节点的DAG中至少有$i$个节点入度为$0$方案数为$f(n i)\binom{n}{i}2^{i(n i)}$ 但是入度为$0$的点数为$0$时阅读全文
posted @ 2019-04-11 19:20 蒟蒻--lichenxi 阅读(7) 评论(0) 编辑
摘要: "传送门" ~~dp套dp的板子题~~ 对于我这种垃圾来说:神仙题 考虑到最长公共子序列的dp做法 $dp[i][j]=max{dp[i 1][j],dp[i][j 1],dp[i 1}[j 1]+(a[i]==b[i])$ 然后发现对于一种状态,我们只需要考虑当前这个字符填的是什么就好了 那么这个阅读全文
posted @ 2019-04-11 13:02 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 惯用套路 $$ f(d)=d\sum_{i=1}^{n}\sum_{j=1}^{n}ij[gcd(i,j)==d]\\ $$ 然后简单的莫比乌斯反演一下,得到 $$ f(d)=d^3\sum_{T=1}^{n/d}\mu(T)T^2\sum_{i=1}^{n/Td}\sum_{j=1}^阅读全文
posted @ 2019-04-10 20:51 蒟蒻--lichenxi 阅读(11) 评论(0) 编辑
摘要: "传送门" 简单dp题,容易得到一个结论,填的数字一定单调不降 设$f[i][j]$表示当前是第$i$个,上一次填的数字是$j$ 对于dp转移,如果暴力转移,那么时间复杂度是$O(nk^2)$,无法通过 所以考虑记下前缀min,复杂度就可以优化到$O(nk)$ 代码: c++ include inc阅读全文
posted @ 2019-04-10 16:28 蒟蒻--lichenxi 阅读(4) 评论(0) 编辑
摘要: "传送门" "%%%myy" 考虑30分做法:暴力bfs,$f[i][j]$表示$i$到$j$可以形成回文串 ~~然而为什么我场上只想到了70分做法,完全没想到30分怎么写。。~~ 100分: 考虑缩边,对于每条边分3种情况:标号同为1,标号同为0,标号不同 1、同为1:考虑如果这是个二分图,那么可阅读全文
posted @ 2019-04-08 19:58 蒟蒻--lichenxi 阅读(13) 评论(0) 编辑
摘要: Day 0 说好的9点坐大巴出发貌似因为大雾的原因,变成了高铁,并且咕到了12点,早上就在机房里写了个模板列表,准备当天写完(然而最后只完成了$\frac{1}{3}$) 到长沙后就完全忘却了写模板的事了,然后写模板的事就推到了晚上 然后晚上睡觉前想起来了,忽然感到心里好慌,然后晚上12点爬起来写了阅读全文
posted @ 2019-04-08 16:44 蒟蒻--lichenxi 阅读(13) 评论(0) 编辑
摘要: "传送门" 作为$HNOI2018$最简单的题,这个题确实不算难 虽然我一开始也没想出满分 看了眼题解,考虑到了倒推,这题差不多就没了 当走到叶子节点的时候考虑一下选了多少条公路翻修和多少条铁路翻修 对于非叶子节点就枚举翻修哪条边,转移就好了 一个小插曲: 本来写的记搜,由于看错题了,以为自己写错了阅读全文
posted @ 2019-04-03 20:54 蒟蒻--lichenxi 阅读(6) 评论(0) 编辑
摘要: "传送门" 这真的是个很简单的树形背包,~~因为我都会写~~ 首先设$f[i][j][0/1][0/1]$表示$i$节点的子树内放了$j$个监听器,$i$点上是否放了监听器,$i$是否被监听 接下来推方程(情况有点多,但是确实好想): $son$为$i$节点的子节点集合 1、$i$节点没有被监听也没阅读全文
posted @ 2019-04-03 16:28 蒟蒻--lichenxi 阅读(5) 评论(0) 编辑
摘要: "传送门" 首先设$m$为随从个数,$k$为暗影打击装甲的个数,$p$为剩余生命值,$n$为生命上限 然后考虑每个回合受到伤害,设$A_i$为每个回合被攻击$i$次的概率 $$ A_i=C^{i}_{k} (\frac{1}{m+1})^i (\frac{m}{m+1})^{k i}\\ $$ 然后阅读全文
posted @ 2019-04-02 22:10 蒟蒻--lichenxi 阅读(8) 评论(0) 编辑
摘要: "传送门easy" "传送门hard" ~~切水题的感觉真好~~ 看到数据范围这么小,所以暴力枚举所有的可能,然后用map+vector存下每种值的区间,然后贪心去选 代码: c++ include include include include include include using name阅读全文
posted @ 2019-04-02 15:03 蒟蒻--lichenxi 阅读(20) 评论(0) 编辑
摘要: "传送门" 这居然是个 1800的题,有点无法接受,可能自己$dp$方面确实差了点 考虑按位$dp$,从高位到低位枚举,然后用$dp$去判断是否可行。 然后设$f[i][j]$表示前$i$个分成$j$块能否满足当前枚举的答案 代码: c++ include include include inclu阅读全文
posted @ 2019-04-01 21:48 蒟蒻--lichenxi 阅读(102) 评论(0) 编辑