洛谷
Philosophiofantasia
这个作者很懒,什么都没留下…
展开
-
洛谷P2000 拯救世界(NTT+生成函数)
题目链接这题还是蛮不错的,去年noip之前就推出了通项,但因为FFT被卡了精度就一直没写和那道食物差不多的推式子方法kkksc03大神召唤方法:金神石的块数必须是6的倍数。1+x6+x12+...=1x6−11+x^6+x^{12}+...=\frac{1}{x^6-1}1+x6+x12+...=x6−11木神石最多用9块。1+x+x2+...+x9=x10−1x−11+x+x^2...原创 2019-02-21 20:38:55 · 409 阅读 · 0 评论 -
洛谷 P4707 重返现世(kth-max)
题目链接min-max进行一波扩展可以查询kth-maxmin-max看这里同样设一个容斥函数kth−max{S}=∑T⊆SF(∣T∣)min{T}kth-max\{S\}=\sum_{T\subseteq S}F(|T|)min\{T\}kth−max{S}=∑T⊆SF(∣T∣)min{T}还是一样的列出每个min的出现次数F(x)=∑i=0x(xi)f(i+1)F(x)=\sum_...原创 2019-04-08 18:42:11 · 228 阅读 · 0 评论 -
洛谷 P3175 [HAOI2015]按位或(FMT+minmax容斥)
题目链接minmax容斥又称最值反演,是一种针对集合min->max或者max->min的反演结论公式为max{S}=∑T⊆S(−1)∣T∣+1min{T}max\{S\}=\sum_{T\subseteq S}(-1)^{|T|+1}min\{T\}max{S}=∑T⊆S(−1)∣T∣+1min{T}min{S}=∑T⊆S(−1)∣T∣+1max{T}min\{S\}=\s...原创 2019-04-06 09:08:23 · 396 阅读 · 0 评论 -
洛谷 P3784 [SDOI2017]遗忘的集合(任意模数NTT+多项式求ln)
题目链接emmm,只要做过付公主的背包,这题就还算清真了首先还是对生成函数求逆,我们知道ln(f(x))=∑i=1naix∗[x %ai =0]ln(f(x))=\sum_{i=1}^{n}{\frac{a_i}{x}*[x\, \%a_i\,=0]}ln(f(x))=∑i=1nxai∗[x%ai=0]假设我们已经求出了这个逆...原创 2019-03-21 19:23:54 · 231 阅读 · 0 评论 -
洛谷P4173 残缺的字符串(FFT匹配字符串)
首先考虑完整两串的匹配(我知道可以kmp,但是模糊匹配的思路需要从这里引出假设短串a长为lena长串b长为lenb我们知道两串如果完整匹配,他们每一个位置都要相同,即a[i]−b[y+i]=0a[i]-b[y+i]=0a[i]−b[y+i]=0所以说a要完整匹配要满足:∑i=0lenaa[i]−b[y+i]=0\sum_{i=0}^{lena} a[i]-b[y+i]=0i=0∑lena...原创 2019-03-13 10:25:44 · 319 阅读 · 0 评论 -
洛谷 P4389 付公主的背包(多项式exp)
题目链接这题乍一眼应该是个生成函数题我们可以把体积转化成生成函数f(x)=[xf(x)=[xf(x)=[x%v==0]v==0]v==0]然后跑1e5次FFT就可以了emmm,感觉有点不妙啊,1e5次FFT什么的好像肯定要T啊我们感受下复杂度主要集中在卷积上面因为求ln能化乘为加,所以可以对生成函数求一波ln康康好的,发现很有规律f(x)=[xf(x)=[xf(x)=[x%v==0]...原创 2019-03-17 20:51:04 · 187 阅读 · 0 评论 -
洛谷 P4169 [Violet]天使玩偶/SJY摆棋子(模板 带插入K-D tree)
题目链接说起来k-d tree这玩意也很暴力啊建树的话每次取剩下数列下一维中位数的点做儿子(其实随机哪维也行,就跟点分找重心一样,这只是一个复杂度的问题查询就是一个暴力剪枝估价为这个子树代表的包含所有点的矩形离查询点的最近距离(具体方法一言难尽,直接看估价函数就好懂了插入就直接二分插入,但是这样显然是会被卡成链之类的东西的,显然像替罪羊树一样定期重构就可以了#include<bi...原创 2019-03-12 14:27:27 · 513 阅读 · 0 评论 -
洛谷 P4770 [NOI2018]你的名字(后缀自动机+线段树合并)
题目链接emmm,这题其实也不是特别难,个人感觉比之前做过的两道线段树合并right的后缀自动机都要简单不少(另两道都至少长2k……首先考虑一下询问区间就是整串的情况我们先对长串S建SAM然后把询问串T在长串上跑匹配,假设1−Ti1-T_i1−Ti能匹配的长度为len,显然i−leni-leni−len个串不会在SSS中出现,我们把答案加上即可但是吧,你仔细一看题,发现他要统计的是串的...原创 2019-03-20 16:05:55 · 393 阅读 · 0 评论 -
洛谷 P2617 Dynamic Rankings(毒瘤卡常题 带修主席树/TLE的树套树)
题目描述一道垃圾的区间带修第k大写了一天线段树套splay TLE优化成两个log TLE套替罪羊树 TLE套权值线段树 TLE算了吧,就当模板带修主席树吧带修主席树这玩意真暴力就用个树状数组把一堆线段树套起来然后求的时候把每个树状数组里的点都暴力提取出来,直接暴力对每个点对应的数统计答案,树上二分模板题也没什么好说的,垃圾……代码如下:#include<bits/s...原创 2019-03-11 22:19:25 · 316 阅读 · 0 评论 -
洛谷 P4841 城市规划(分治FFT+容斥)
题目链接推一波式子首先如果不要求联通的话公式很简单,令n个点不要求联通的方案数为gng_ngngn=2n∗(n−1)2g_n=2^{\frac{n*(n-1)}{2}}gn=22n∗(n−1)因为每条边都可以选或不选然后假设要求联通的方案数为fnf_nfn可以找出gng_ngn与fff的关系gn=∑i=1n(n−1i−1)fign−ig_n=\sum_{i=1}^n {n-...原创 2019-03-11 16:08:05 · 272 阅读 · 0 评论 -
洛谷P4091 [HEOI2016/TJOI2016]求和(NTT+第二类斯特林数)
求∑i=0n∑j=0nS(i,j)×2j×(j!)\sum_{i=0}^{n}\sum_{j=0}^{n}S(i,j)\times2^j\times(j!)i=0∑nj=0∑nS(i,j)×2j×(j!)emmm,显然后面两个只带j的跟i没啥关系,扔到前面去∑j=0n2j×(j!)∑i=0nS(i,j)\sum_{j=0}^{n}2^j\times(j!)\sum_{i=0}^{n}S(...原创 2019-03-04 18:36:50 · 232 阅读 · 0 评论 -
洛谷P4457 [BJOI2018]治疗之雨(期望+高斯消元)
题目链接推下式子假设就先不管加血对mmm个人随机搞kkk次,掉jjj第血的概率为p[j]p[j]p[j]显然就是从kkk次里选jjj次刚他,得到公式p[j]=Ckj(1m+1)j(mm+1)k−jp[j]=C_k^j(\frac{1}{m+1})^j(\frac{m}{m+1})^{k-j}p[j]=Ckj(m+11)j(m+1m)k−j嘛,这个东西是可以线性推出来的。那么接着...原创 2019-03-07 07:54:19 · 317 阅读 · 1 评论 -
洛谷 P4595 [COCI2011-2012#5] POPLOCAVANJE(SAM)
题目链接emmm,为什么最近天天碰到卡这种那种的题目啊,真的自闭了……首先吧,这题最暴力的两种做法建5000*5000的ac自动机建带线段树合并的SAM思路都比较简单,而且如果不卡空间的话复杂度都挺对但可惜它卡空间……这个时候对应的有两种优化方法分块定期重构的ac自动机暴力SAM……因为SAM比较好想就写了SAM思路是先对长串建SAM,把每个短串都在SAM里匹配一遍,如果能完...原创 2019-03-13 22:27:39 · 622 阅读 · 0 评论 -
洛谷P4847 银河英雄传说V2(LCT)
题目链接不知道该如何评价这题……我觉得这种做法不是很算得上LCT,应该只是splay写颗假的lct,同在一个序列里的都用实边相连每次link将第一个序列的头找到,第二个序列的尾找到,头尾之间连实边打通每次cut直接提到根把实边直接断掉查询的时候分别拎出两个点,做前缀和式的查询就行了,如果答案小于等于零就换下这两个点的位置代码如下:#include<bits/stdc++.h&g...原创 2019-03-03 20:11:52 · 179 阅读 · 0 评论 -
洛谷P3768 简单的数学题(莫比乌斯反演+杜教筛+狄利克雷卷积)
题目链接我错了,杜教筛不是只背板子就够的qwq跟着神仙yyb推了一遍式子,感觉这题还是很神仙题意是求∑i=1n∑j=1nijgcd(i,j)\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j)i=1∑nj=1∑nijgcd(i,j)显然先把gcd枚举一下,假设gcd(i,j)==k原式就为∑k=1nk∑i=1n∑j=1nij[gcd(i,j)==k]\su...原创 2019-03-03 17:30:38 · 244 阅读 · 0 评论 -
洛谷P4719 【模板】动态dp
题目链接ddp就是通过加法对min/max的分配率把原来不好维护的dp转移搞成可以遵循分配率的矩阵形式,自然就以用一些数据结构去维护比如说这题求最大权独立集先写出转移方程dp[u][0/1]表示该点取或者不取时该点为根的子树的最大权独立集dp[u][0]=∑\sum∑max(dp[v][0],dp[v][1])dp[u][1]=(∑\sum∑dp[v][0]) +val[u]数据结构...原创 2019-02-25 19:17:17 · 167 阅读 · 0 评论 -
洛谷P3172 [CQOI2015]选数(莫比乌斯反演+杜教筛)
嘛,主要是为了学杜教筛然后发现其实可以背板子?那么就假装会用杜教筛求比较大的莫比乌斯函数的前缀和了这个时候愉快的推出公式整除分块一波就可以过了代码如下:#include&lt;bits/stdc++.h&gt;#define N 2000010#define mod 1000000007using namespace std;int vis[N],p[N],mu[N];int...原创 2019-02-28 22:32:16 · 165 阅读 · 0 评论 -
洛谷 P2056 [ZJOI2007]捉迷藏(动态点分治)
题目链接冒着滥用此题将封号的风险测了七发RP才过……每个点建两个双堆,堆a表示这个点所在的子树里所有点到他点分树中父亲的距离,堆b表示所有点分树子树中到他距离最大的个点的距离,堆c用来存全局答案,显然全局答案就是每个堆b中最大值和次大值的和点分树上暴跳父亲复杂度是log的,所以总复杂度是nlog2nnlog^2nnlog2n代码如下:#include<bits/stdc++.h&g...原创 2019-02-27 16:40:22 · 268 阅读 · 0 评论 -
洛谷 P4630 [APIO2018] Duathlon 铁人两项(圆方树)
题目链接这题一直忘做了考虑只是一棵树的情况,我们可以枚举中点,显然每个点作为中点产生的贡献就是经过它的所有路径的条数,这是一个很简单的树型DP那么对于无向图而言,我们只要建出圆方树,就可以跑同样思路的树型DP,我们对于方点记录它所表示的点双的大小,因为两个点之间路径经过的任意一个点双上的任意一个点都可以做中点,所以方点的贡献要额外乘以点双的大小,但显然这样会有重复,得去重,考虑两个点之间的简...原创 2019-04-03 10:54:31 · 226 阅读 · 0 评论