
数学
文章平均质量分 58
lahlah_
沉浸 尊重
展开
-
CF891E Lust
https://www.luogu.com.cn/problem/CF891E推一下不难发现,最后答案就是∏ai−∏(ai−bi)\prod a_i-\prod(a_i-b_i)∏ai−∏(ai−bi)bib_ibi表示最终第iii个位置的减少量,主要是考虑后面那个东西怎么求对于一组∑bi=k\sum b_i=k∑bi=k,它的期望是1nkk!∏bi!∏(ai−bi)\frac{1}{n^k}\frac{k!}{\prod b_i!}\prod(a_i-b_i)nk1∏bi!k!∏(a原创 2022-04-12 08:53:37 · 395 阅读 · 0 评论 -
luogu P3750 [六省联考 2017]分手是祝愿
https://www.luogu.com.cn/problem/P3750k=nk=nk=n给了808080分可还行首先考虑k=nk=nk=n,不难想到一个贪心,从大到小枚举每个开关,如果为111就把按,这样一定是最优的,就做完了考虑k<nk<nk<n,先跑一边上面的得到gsgsgs把期望的式子写出来E(i)=inE(i−1)+n−inE(i+1)+1E(i)=\frac{i}{n}E(i-1)+\frac{n-i}{n}E(i+1)+1E(i)=niE(i−1)+nn−iE原创 2022-04-02 11:26:50 · 461 阅读 · 0 评论 -
luogu P3600 随机数生成器
https://www.luogu.com.cn/problem/P3600每一步转换都不难,但许多步连在一起就不简单了考虑怎么计算最大值为xxx的概率这个也不好算,考虑算≤x\le x≤x的概率也就是说对于每个区间,至少有一个数是≤x\le x≤x的概率概率不好算,考虑算方案数总的方案数显然是mnm^nmn,考虑dpdpdp设f[i][j]f[i][j]f[i][j]表示已经填了前iii,填了jjj个≤x\le x≤x的,钦定第iii个是≤x\le x≤x的方案数不难发现对于每个xxx,可原创 2022-03-31 20:50:00 · 320 阅读 · 0 评论 -
AT3871 [AGC021E] Ball Eat Chameleons
https://www.luogu.com.cn/problem/AT3871建议先做[SCOI2010]生成字符串好了直接来分析这一题假设红蓝球数为R,BR,BR,BR+B=kR+B=kR+B=k首先一定要满足R≥BR\ge BR≥B如果R≥B+nR\ge B+nR≥B+n显然随便拍就行,容易计算(R+BR)\binom{R+B}{R}(RR+B)如果R<B+nR < B+nR<B+n 必定是每个变色龙先吃红,再吃蓝,再吃红交替刚好有R−BR-BR−B个变色龙红的比蓝的原创 2022-03-11 21:38:05 · 353 阅读 · 0 评论 -
CF1119H Triple(再谈FWT)
https://www.luogu.com.cn/problem/CF1119H模拟赛做到类似的trick,感觉很nb,被杨队怒斥这不是sb套路?!!加深了我对FWTFWTFWT的理解回忆一下FWTFWTFWT的位矩阵or1 01 1and1 10 1xor1 11 -1这对应的都是左乘一个[a[k],a[k+(len>>1)][a[k],a[k+(len>>1)][a[k],a[k+(len>>1)]IFWTIFWTIFWT就是求逆原创 2022-03-09 22:00:31 · 340 阅读 · 0 评论 -
CF1043F Make It One
https://www.luogu.com.cn/problem/CF1043F注意到质因子的个数不会很多,然后每次操作至少要减少一个,所以答案的上界很小考虑美枚举答案,但是要求gcdgcdgcd为1的并不好求考虑将判定性问题变为计数类问题容斥,枚举gcdgcdgcd,容易得到f[d]=(cnt[d]ans)f[d]=\binom{cnt[d]}{ans}f[d]=(anscnt[d]),容斥系数就是μ\muμ至于模数随便选一个即可,反正冲突概率极小cnt[i]cnt[i]cnt[i]我是用高原创 2022-03-04 14:44:49 · 275 阅读 · 0 评论 -
AT4119 [ARC096C] Everything on It
https://www.luogu.com.cn/problem/AT4119你说原来那个题面蛮好的你换了它干什么你告诉我截一张qiuly神仙的翻译换汤不换药啊设f[i]f[i]f[i]表示iii种酱原创 2022-02-25 21:57:26 · 274 阅读 · 0 评论 -
AT3576 Popping Balls
https://www.luogu.com.cn/problem/AT3576又盯了半个多小时才看懂之前写的是啥妙妙组合数学思维题啊啊首先不管s,ts,ts,t,要拿红球肯定是从111开始拿,不亏假设要拿第一个蓝球了,那么我们可以把ttt设到当前蓝球第一个位置,不亏假设ttt那个位置已经没有球了,但还是想要拿篮球,那把sss设到现在蓝球的第一个位置,不亏然后就可以考虑计算了假设从ttt处拿了iii个蓝球,那么要从111处拿B−iB-iB−i个蓝球,才能让ttt那个位置没有球,进入第三步假设从原创 2022-02-19 10:41:32 · 364 阅读 · 0 评论 -
luogu P5406 [THUPC2019]找树
https://www.luogu.com.cn/problem/P5406首先要意识到这题不是最优化问题,而是计数类问题(光这点就不简单了)考虑矩阵树定理计算的是什么∑T∏we∈T\sum_{T}\prod w_{e\in T}T∑∏we∈T这里∏\prod∏不一定是乘法,题目给出的这几个运算爷可以于是乎可以构造集合幂级数xwx^{w}xw,注意到FWTFWTFWT是线性运算,可以叠加,先FWTFWTFWT完,求个行列式,然后再IDFTIDFTIDFT回去即可code:#include&原创 2022-02-18 09:24:37 · 203 阅读 · 0 评论 -
CF1267G Game Relics
https://www.luogu.com.cn/problem/CF1267G麻了,回头看的时候一下子不会算贡献了白写了可还行首先考虑抽卡的期望,假设已经抽了iii个圣遗物出来,要出i+1i+1i+1个圣遗物的期望是E(i)=in(E(i)+x2)+n−in×(x+E(i+1))E(i)=\frac{i}{n}(E(i)+\frac{x}{2})+\frac{n-i}{n}\times(x+E(i+1))E(i)=ni(E(i)+2x)+nn−i×(x+E(i+1))E(i)−E(i+1)原创 2022-02-17 08:24:16 · 174 阅读 · 0 评论 -
luogu P3185 [HNOI2007]分裂游戏
https://www.luogu.com.cn/problem/P3185把每个碗里的状态全部记下来显然是不现实的,分析一下发现可以把每个豆子看作一个独立的游戏然后就变成相当于要将iii移动到nnn,这个反过来跑个SGSGSG函数即可按照SGSGSG函数的定理做就好了好像就是Multi−SGMulti-SGMulti−SG具体可以参考代码code;#include<bits/stdc++.h>#define N 200050using namespace std;int n原创 2022-02-16 08:34:07 · 130 阅读 · 0 评论 -
luogu P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈
不会证明,记一波结论n<mn<mn<m当(m−n)∗1+52==n(m-n)*\frac{1+\sqrt{5}}{2}==n(m−n)∗21+5==n的时候后手必胜否则先手必胜code:#include<bits/stdc++.h>using namespace std;const double K = (1.0 + sqrt(5.0)) / 2.0;int n, m;int main() { scanf("%d%d", &n, &m);原创 2022-02-15 20:45:24 · 2452 阅读 · 0 评论 -
多项式板子
丢个好看一点的polypolypoly板子多项式求逆lnexp#include<bits/stdc++.h>#define N 800050#define sz(x) ((int)x.size())#define poly vector<int>#define mod 998244353using namespace std;int add(int x, int y) { x += y; if(x >= mod) x -= mod; r原创 2022-01-08 21:38:25 · 579 阅读 · 0 评论 -
luogu P4705 玩游戏
https://www.luogu.com.cn/problem/P4705又碰到一个自己不会的套路,麻了首先把要计算的式子写出来∑i=1n∑j=1m(ai+bj)k\sum_{i=1}^n\sum_{j=1}^m(a_i+b_j)^ki=1∑nj=1∑m(ai+bj)k首先二项式展开∑i=1n∑j=1m∑t=0k(kt)aitbjk−t\large \sum\limits_{i=1}^n\sum\limits_{j=1}^m\sum\limits_{t=0}^k\binom{k}{t}a原创 2022-01-08 21:33:08 · 2178 阅读 · 0 评论 -
luogu P6271 [湖北省队互测2014]一个人的数论
https://www.luogu.com.cn/problem/P6271设G(n)=∑i=1n[i⊥n]ikG(n)=\sum\limits_{i=1}^n [i \perp n] i ^kG(n)=i=1∑n[i⊥n]ik按照套路显然有G(n)=∑i=1n∑d∣n,d∣iμ(d)ikG(n)=\sum\limits_{i=1}^n \sum\limits_{d|n,d|i}\mu(d) i^kG(n)=i=1∑nd∣n,d∣i∑μ(d)ik=∑d∣nμ(d)∑i=1n/d(id)k= \原创 2022-01-07 19:04:16 · 459 阅读 · 0 评论 -
[清华集训2016] 如何优雅地求和
https://www.luogu.com.cn/problem/P6667和20年省选很像,一下子没想出来怎么做,还是不够熟练fff由点值给出,考虑到后面有组合数,还有幂函数,不妨考把fff写成下降幂多项式的形式原创 2021-12-22 07:40:23 · 316 阅读 · 0 评论 -
luogu P7531 [USACO21OPEN] Routing Schemes P
https://www.luogu.com.cn/problem/P7531玄妙DP题被BEST定理淦过去的这个出题人Benq就是逊啊首先回忆一把BESTBESTBEST定理是什么一个有向图欧拉回路的数量设为FFF,一个以rtrtrt为根的内向生成树个数为GGGT=G∏i=1n(in[i]−1)!T=G\prod_{i=1}^n (in[i]-1)!T=Gi=1∏n(in[i]−1)!即每个内向树对应∏(in[i]−1)!\prod(in[i]-1)!∏(in[i]−1)!条欧拉回路,证明考虑双原创 2021-12-21 16:34:18 · 175 阅读 · 0 评论 -
luogu P5667 拉格朗日插值2
https://www.luogu.com.cn/problem/P5667主要是要知道可以把它先便偏移一下,然后再卷积b[i]=1m−n+ib[i]=\frac{1}{m-n+i}b[i]=m−n+i1code:#include<bits/stdc++.h>#define ll long long#define mod 998244353#define N 1600050using namespace std;int add(int x, int y) { x += y;原创 2021-12-19 15:59:29 · 191 阅读 · 0 评论 -
CF997C Sky Full of Stars
https://www.luogu.com.cn/problem/CF997Cf(i,j)f(i,j)f(i,j)表示的是钦定iii行jjj列相同的方案数大力推式子即可code:#include<bits/stdc++.h>#define ll long long#define N 2000050#define mod 998244353using namespace std;ll qpow(ll x, ll y) { if(y < 0) return qpow原创 2021-12-17 09:02:20 · 431 阅读 · 0 评论 -
luogu P4707 重返现世
https://www.luogu.com.cn/problem/P4707kthmin−maxkthmin-maxkthmin−max容斥入门题懒得证明了式子就是max(S)=∑T⊆S(−1)∣T∣−k(∣T∣−1k−1)min(T)\max(S)=\sum_{T⊆S}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T)max(S)=T⊆S∑(−1)∣T∣−k(k−1∣T∣−1)min(T)设计DPf[i][j][k]f[i][j][k]f[i][j][k]表示考原创 2021-12-17 08:59:11 · 171 阅读 · 0 评论 -
luogu P2791 幼儿园篮球题
https://www.luogu.com.cn/problem/P2791赞美出题人(bushi如果做过luogu P6031 CF1278F Cards 加强版这题,按照套路推一推就可以推出来了注意其中有一步要用范德蒙德卷积code:#include<bits/stdc++.h>#define ll long long#define mod 998244353#define M 20000050#define N 800050using namespace std;i原创 2021-12-17 08:43:47 · 189 阅读 · 0 评论 -
luogu P3643 [APIO2016]划艇
https://www.luogu.com.cn/problem/P3643经典题把范围离散化后转移可以做到O(n3)O(n^3)O(n3)方案数可以用用组合数计算code:#include<bits/stdc++.h>#define mod 1000000007#define N 2005#define ll long longusing namespace std;int n, a[N], b[N], c[N], gs;ll f[N], C[N], inv[N];i原创 2021-12-16 20:57:23 · 278 阅读 · 0 评论 -
luogu P6031 CF1278F Cards 加强版
https://www.luogu.com.cn/problem/P6031首先发现每次洗牌都是独立的,所以概率P=1mP=\frac{1}{m}P=m1要计算的实际上是∑i=0n(ni)pi(1−p)n−iik\sum_{i=0}^n\binom{n}{i}p^i(1-p)^{n-i}i^ki=0∑n(in)pi(1−p)n−iik按照套路拆开iki^kik∑j=0kS(k,j)j!∑i=jk(ij)(ni)pi(1−p)n−i\sum\limits_{j=0}^{k}S(k,j)j!\s原创 2021-12-13 20:03:28 · 829 阅读 · 0 评论 -
CF605E Intergalaxy Trips
https://www.luogu.com.cn/problem/CF605E首先肯定对E排序式子推出来这样然后类似dijkstra一样转移即可有1点阴间code;#include<bits/stdc++.h>#define N 2050using namespace std;int n, vis[N];double p[N][N], prod[N], E[N];int main() { scanf("%d", &n); for(int i = 1原创 2021-12-10 11:18:56 · 576 阅读 · 0 评论 -
CF1325E Ehab‘s REAL Number Theory Problem
https://www.luogu.com.cn/problem/CF1325E有些启发性的题目首先发现23>72^3 > 723>7 那么每个数最多为两个质数的乘积如果有两个一样的数,或者本身就是完全平方数,直接输出即可对于本身就是质数的,你补一个111(虚点)假设一个数可以表示为x∗yx*yx∗y,x,yx,yx,y都是质数(或虚点1)然后考虑每个质数为一个点,一个数就让x−>yx->yx−>y就转换成了求最小环然后发现还是不太好做,枚举每个点跑bfs原创 2021-12-04 08:08:12 · 132 阅读 · 0 评论 -
luogu P6811 「MCOI-02」Build Battle 建筑大师
https://www.luogu.com.cn/problem/P6811考虑建立子序列自动机,可以得到DPf[i]=1+∑i+1≤j≤i+mf[j]f[i]=1+\sum_{i +1 \le j \le i+m} f[j]f[i]=1+i+1≤j≤i+m∑f[j]答案就是f[0]f[0]f[0]考虑把整个DP数组反过来f[i]=1+∑i−m≤j≤i−1f[j]f[i]=1+\sum_{i - m \le j \le i-1} f[j]f[i]=1+i−m≤j≤i−1∑f[j]有个常数项感原创 2021-11-15 09:18:26 · 1247 阅读 · 0 评论 -
luogu P1857 质数取石子
https://www.luogu.com.cn/problem/P1857SG函数经典题首先每个人都必胜必败态是可以DP出来的SG[i]∣=!SG[i−prime[j]]SG[i]|=!SG[i-prime[j]]SG[i]∣=!SG[i−prime[j]]然后考虑步数胜方尽可能拖延,即看那些SG[i−prime[j]]==0SG[i-prime[j]]==0SG[i−prime[j]]==0的,找一个最小的f[i−prime[j]]f[i-prime[j]]f[i−prime[j]]来转移即可原创 2021-11-10 07:47:33 · 142 阅读 · 0 评论 -
AT1983 [AGC001E] BBQ Hard
https://www.luogu.com.cn/problem/AT1983由基本的组合数知识,我们知道(ai+bi+aj+bjai+aj)\binom{a_i+b_i+a_j+b_j}{a_i+a_j}(ai+ajai+bi+aj+bj)相当于是从(0,0)(0,0)(0,0)走到(ai+aj,bi+bj)(a_i+a_j,b_i+b_j)(ai+aj,bi+bj)的方案数然而i,ji,ji,j还是没有分开,依然不好做我们考虑坐标偏移一下上面的那个组合数也可以相当于是从原创 2021-10-31 17:41:27 · 197 阅读 · 0 评论 -
AT1999 [AGC002E] Candy Piles
https://www.luogu.com.cn/problem/AT1999考虑将aaa从大到小排序每次操作相当于是删掉最左边的一列,或最下面的一行然后转换成从(0,0)开始,每次向上或向右走一格走到边界就输了把SG换书的标打出来大概是这样然后直接找左下角为原点的最大的正方形即可code:#include<bits/stdc++.h>using namespace std;int cmp(int x, int y) { return x > y;}int原创 2021-10-31 17:22:17 · 205 阅读 · 0 评论 -
luogu P7044 「MCOI-03」括号
https://www.luogu.com.cn/problem/P7044首先考虑k=0k=0k=0怎么做显然最后括号剩下的一定是...)))(((......)))(((......)))(((...答案记为f(l,r)f(l, r)f(l,r)考虑每个右括号往左第一个匹配到的左括号记为pre[x]pre[x]pre[x]然后考虑扫描线,rrr每向右移动一个位置pre[x+1]pre[x+1]pre[x+1]及之前到括号匹配数为+1,对应的fff会-1pre[x]pre[x]pre[x]之后原创 2021-10-29 08:37:50 · 168 阅读 · 0 评论 -
AT2307 [AGC010F] Tree Game
https://www.luogu.com.cn/problem/AT2307考虑枚举一个点uuu做根那么一定是走向一棵子树vvv,不然没有意义如果vvv是必败的,后手一定会移回uuu,所以必须要满足a[u]>a[v]a[u]>a[v]a[u]>a[v]才能移向vvv推出这两点就可以做的code:#include<bits/stdc++.h>#define N 3005using namespace std;struct edge { int v, n原创 2021-10-18 20:28:44 · 194 阅读 · 0 评论 -
AT2064 [AGC005F] Many Easy Problems
https://www.luogu.com.cn/problem/AT2064考虑每个点uuu对答案的贡献对于一个kkk先把uuu设为根那么它的对答案的贡献就是(nk)−∑v∈son[u](size[v]k)\binom{n}{k}-\sum_{v\in son[u]}\binom{size[v]}{k}(kn)−v∈son[u]∑(ksize[v])然后发现和具体这个节点是什么没有啥关系,只与size[v]size[v]size[v]有关所以把这个所有儿子的sizesizesize和n原创 2021-10-18 20:18:58 · 122 阅读 · 0 评论 -
AT2371 [AGC013E] Placing Squares
https://www.luogu.com.cn/problem/AT2371首先把转移方程列出来f[i]=∑j=0i−1f[j](i−j)2f[i]=\sum_{j=0}^{i-1}f[j](i-j)^2f[i]=j=0∑i−1f[j](i−j)2对于iii为关键点的f[i]=0f[i]=0f[i]=0然后再考虑i+1i+1i+1后的转移f[i+1]=∑j=0if[j](i+1−j)2=∑(i−j)2f[j]+2∑(i−j)f[j]+∑f[j]f[i+1]=\sum_{j=0}^{i}f[j]原创 2021-10-18 19:32:05 · 166 阅读 · 0 评论 -
luogu P5377 [THUPC2019]鸽鸽的分割
https://www.luogu.com.cn/problem/P5377考虑欧拉公式F+V−E=2F+V-E=2F+V−E=2对于这题V=n+(n4)V=n+\binom{n}{4}V=n+(4n)(每两条线就有一个交点)E=n+(n2)+2(n4)E=n+\binom{n}{2}+2\binom{n}{4}E=n+(2n)+2(4n)(有nnn段弧,每两个点连成一条线,然后一个交点把多出两条线)然后就可以算出F=2+(n2)+(n4)F=2+\binom{n}{2}+\binom{n原创 2021-10-13 15:41:46 · 178 阅读 · 0 评论 -
AT2155 [ARC064D] Rotated Palindromes
只有循环同构的字符串才能互相转换考虑循环节的长度为ddd,那么若ddd为偶数,那么如果循环d/2d/2d/2次会得到一个新的回文串,会计算重复,贡献为d/2d/2d/2若为奇数,那么贡献为ddd.可以随便循环那么只需要计算出每个循环节长度为ddd的字符串个数乘上面的贡献再求和就可以得到答案了code:#include<bits/stdc++.h>#define ll long long#define N 200050#define mod 1000000007using原创 2021-10-12 21:43:07 · 124 阅读 · 0 评论 -
AT2038 [ARC060B] 桁和 / Digit Sum
https://www.luogu.com.cn/problem/AT2038考虑根号分治对于b<=nb<=\sqrt{n}b<=n的,直接暴力判断对于b=nb=\sqrt{n}b=n的,只有可能是个两位数,假设为xb+yxb+yxb+y联立可以得到x+y=s,xb+y=nx+y=s,xb+y=nx+y=s,xb+y=n做差可以得到x(b−1)=n−sx(b-1)=n-sx(b−1)=n−s枚举约数判断即可注意求的是最小的(垃圾翻译)code:#include<原创 2021-10-12 21:17:24 · 117 阅读 · 0 评论 -
CF1342E Placing Rooks
https://www.luogu.com.cn/problem/CF1342E一看就很容斥第一个限制条件相当于强制每行都有或每列都有可以只考虑一个,然后最后让答案∗2*2∗2(当kkk不为000时)假设每一行都有,mmm列有棋子,那么会产生n−mn-mn−m对,所以m=n−km=n-km=n−k把nnn个不同的棋子塞到mmm列里面,显然是第二类斯特林数答案就是(nn−k)S(n,n−k)(n−k)!\binom{n}{n-k}S(n,n-k)(n-k)!(n−kn)S(n,n−k)(n−k)原创 2021-10-12 07:25:50 · 143 阅读 · 0 评论 -
CF1427E Xum
https://www.luogu.com.cn/problem/CF1427E首先设y=x<<ty=x<<ty=x<<t,使得y的最低位与xxx对齐然后令z=x⊕yz=x \oplus yz=x⊕y, 再令o=z+yo=z+yo=z+y然后令o⊕(y<<1)⊕xo\oplus(y<<1)\oplus xo⊕(y<<1)⊕x就可以得到yyy的第二低位然后一路往上把yyy消得只剩下最低位,即xxx的最高位然后把xxx的最高位消掉原创 2021-10-11 16:24:27 · 156 阅读 · 0 评论 -
AT4168 [ARC100C] Or Plus Max
https://www.luogu.com.cn/problem/AT4168高维前缀和这题每一位都是0/10/10/1,一共nnn维考虑一维一维的加入,然后把包含这一维的状态都更新一遍这样就完成了高维前缀和具体实现就是求出最大值和次大值code:#include<bits/stdc++.h>using namespace std;const int N = (1 << 18) + 5;struct A { int x, y;} a[N];int b原创 2021-10-11 08:09:26 · 140 阅读 · 0 评论 -
CF1244C The Football Season
https://www.luogu.com.cn/problem/CF1244C先把下面那个条件转换一下变成x+y≤nx+y\le nx+y≤n注意到d<wd<wd<w,所以y越小越好移一下项p−yd=xwp-yd=xwp−yd=xw然后如果y>=wy>=wy>=w那么必然无解(根据扩展欧几里得(exgcd),可以得到y必然<w)直接枚举即可code:#include<bits/stdc++.h>#define ll long lon原创 2021-10-10 21:47:38 · 161 阅读 · 0 评论