虚树    2018-11-27 11:19:35    388    2    0
Solution 首先我们建立一棵虚树,然后先 dfs" role="presentation" style="position: relative;">dfsdfsdfs 两次求出离虚树上每个点最近的议事处在哪。 然后对于虚树上每条链(x,y)" role="presentation" style="position: relative;">(x,y)(x,y)(x,y)进行分析。 令 z" role="presentation" style="position: relative;">zzz 为 若此链两点最近的议事处相同,则链上的所有点(sz[z]&
2018-11-22 23:57:25    340    0    0
Solution 结果显然是 Cnm∗d[n−m]" role="presentation" style="position: relative;">Cmn∗d[n−m]Cnm∗d[n−m]C_n^m*d[n-m] d[i]" role="presentation" style="position: relative;">d[i]d[i]d[i] 表示 i" role="presentation" style="position: relative;">iii 个数错排数 d[i]=(i−1)&
整体二分    2018-11-22 23:51:02    398    0    0
Problem 有一棵树,其中有一些盘子(树上的链)。 询问一些水果(树上链),其中完全覆盖的盘子的第 k" role="presentation" style="position: relative;">kkk 小的值是多少。 Solution 整体二分.... 假如我们不考虑第 k" role="presentation" style="position: relative;">kkk 小的问题 对于一个水果 (u,v)" role="presentation" style="position: relative;">(u,v)(u,v)(u,v)
数位dp 记忆化搜索    2018-11-12 15:09:02    228    0    0
Solution 数位dp 枚举数的和,这样我们就可以记忆化了! 只有我不知道系列:存入记忆化数组时,要存无限制的,有限制的不存...存了就慢好多??? 懵.jpg Code #include <cstdio>#include <cstring>#define ll long longll l,r,dp[22][200][200];int len,a[22],mod;ll dfs(int pos,int now,int sum,int lim){ //该第pos位 当前数模mod(自定义)是now,数字和是sum //lim是否是
欧拉回路 学习笔记    2018-11-12 14:08:29    250    0    2
码一下欧拉回路代码 Qw #include <cstdio>#define N 100010int ty,m,n,num=0,top=0,out[N],in[N],vis[N<<1],sta[N<<1],h[N];struct node{int to,next;}mp[N<<2];inline char gc(){ static char *S,*T,buf[1<<16]; if(T==S){T=(S=buf)+fread(buf,1,1<<16,stdin);if(T==S) return EOF;
splay    2018-11-12 14:08:25    359    0    0
Solution splay" role="presentation" style="position: relative;">splaysplaysplay 维护... 一、二操作直接做即可。 三操作,我们在 L" role="presentation" style="position: relative;">LLL 处插入一个 0" role="presentation" style="position: relative;">000 ,R" role="presentation" style="position: relative;">RRR 和 R+1"
欧拉回路    2018-11-12 14:08:21    219    0    0
Solution 对于长度为 k" role="presentation" style="position: relative;">kkk 的01串,显然结果最长的是 2k" role="presentation" style="position: relative;">2k2k2^k 即想求一条欧拉回路。 我们对于 k&#x2212;1" role="presentation" style="position: relative;">k−1k−1k-1 位的01串,暴力向后连 0 或 1,找到字典序最小即可。 Code #include &l
数学 矩阵快速幂    2018-11-12 14:08:17    211    0    0
Solution 我们想求 (b+d2)n" role="presentation" style="position: relative;">(b+d√2)n(b+d2)n(\frac{b+\sqrt{d}}{2})^n ,但这个不好算啊... 因此我们再加上一个 (b&#x2212;d2)n" role="presentation" style="position: relative;">(b−d√2)n(b−d2)n(\frac{b-\sqrt{d}}{2})^n 我们令 A=(b+d2)" role="presentation" style="positio
状压dp 爆搜    2018-11-12 14:08:14    193    0    0
Solution 首先个数最多只有 3628800" role="presentation" style="position: relative;">362880036288003628800 种,爆搜就可以。 s长度不超过 10 ,因此状压dp 也可以。 还是爆搜好写啊... Code \\状压dp#include <cstdio>#include <cstring>int T,d,len,ans,dp[1025][1001],a[11],flag[11];char s[11];inline void solve(){ scanf(
数位dp    2018-11-02 12:07:44    339    0    1
数位dp.... 不会写啊... 写的..太复杂了... Code #include <cstdio>#include <cstring>#define ll long longll L,R,f[15][15][5][5][5][5];int num[15];ll dfs(int a,int b,int f1,int f2,int f3,int f4){ /* 第 a 位选了 b f1=0 4没出现过;f1=1 4出现过 f2=0 8没出现过;f2=1 8出现过 f3=0 三位条件已满足;f3=1 已连了1位;
文档导航