- 博客(102)
- 收藏
- 关注
原创 【T】03
枚举x然后判断算出对应y是否满足gcd,lcm就行,可能要特判。除以一个数等于乘以它的逆元,逆元可以用费马小定理求。数据不大的话,每个数都直接用质数判断法也能过。一堆预处理,质数+线性求逆+阶乘。求三个数的最小公倍数。
2023-10-26 18:50:48
324
原创 [T]字符串
字符串入门(ken)教程字符:一个’a’,‘x’,'1’都可以是字符字符串:多个字符串起来,如"abcabcabc##String篇###一、几种定义方式,记第一个就行###二、输入输出###三、一些string操作,没太大必要了解这么多,我也不知道###四、总结会cin,cout,再多就s1+s2是拼接,其他函数看喜好学习和使用##char篇###一、定义与输入输出字符串时,几乎完全类比于数组处理。
2023-10-24 20:19:04
127
原创 [T]一些基本的
简单理解为把一些数据和函数封装(打包)成一块,这种块也可理解为一种高级的数据类型。建议会算空间复杂度,个数*类型大小/1024/1024(转MB)不想算的话,一般一维最大。
2023-10-24 20:18:24
109
原创 [T]素数与gcd
判断质数可以OnO(\sqrt n)On找范围内质数,低端局用朴素算法筛,高端局用线筛理解线筛当然最好#gcd 最大公因数原理:辗转相除法网上找的份详解博客不想知道原理记代码就行y?其中会反复自己调用gcd函数(递推与递归)一份几乎是板子的题一份不是板子的题。
2023-10-24 20:17:41
440
原创 【鸽巢原理】CF618F Double Knapsack
题目门求两可重集中元素和相等的两子集,元素大小不超过元素个数题解一晚上一开就是这道神题。。。可以证明两个子集中一定存在都是连续子集的解:SaiSa_iSai表示aaa的前缀和SbiSb_iSbi表示bbb的前缀和若San>SbnSa_n>Sb_nSan>Sbn,可以找到一个最大的jjj满足Sai≥SbjSa_i\geq Sb_jSai≥Sbj,则由范围可得0≤Sai−Sbj<n0\leq Sa_i-Sb_j<n0≤Sai−Sbj<n于是
2020-09-11 19:57:19
236
原创 【生成函数】CF865G Flowers and Chocolate
门终于AC了这道神题。。。题目商店里有A种花,每种花一朵有aia_iai片花瓣;有B种巧克力,每种一盒有bib_ibi 问N朵花的有序花束和多盒有序的巧克力方案数且要求巧克力数和花瓣数相同题解普通DP若fif_ifi表示花瓣数iii的方案数,gig_igi表示巧克力数iii的方案数则普通背包就可以了发现N极大,就炸了但如果是生成函数,还是可以尝试一下F(x)=(∑i=1Axai)NG(x)=∑j=0∞(∑i=1Bxbi)j=11−∑i=1BxbiAns=∑k[xk]F(x)
2020-08-07 15:50:19
293
转载 【多项式全家桶vector板】可能以后常用的板库
LOJ菜题没有标题非常亲民的板子,只有7K不到(包括火车头,vector不加O2就凉了)以后可以来调调常数#pragma GCC optimize(3)#pragma GCC target("avx")#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma GCC optimize("-fgcse")#pragma GCC optimize("-fgcse-lm")#pragma GCC optimize("-
2020-08-04 14:48:34
350
原创 省选模拟(8.3)
好久没写考试博客了,来水水T1 循环流题目弱连通图且只有a条权值1的边,b条权值2的边,问是否存在流量平衡的图题解乱七八糟找规律,发现a=1或n=2a=1或n=2a=1或n=2自己特判一下,其他因为其他≥n+1\geq n+1≥n+1都可以通过环拼接T2 整除分块题目f(n)f(n)f(n)表示⌊ni⌋\lfloor\frac n{i}\rfloor⌊in⌋中最小未出现的自然数求∑l≤i≤rf(i)\sum_{l\leq i\leq r}f(i)∑l≤i≤rf(i)题解打表。
2020-08-03 15:26:55
143
原创 【分块】铃铛计数问题
应该算分块的好题,因为我没想到题目求树上∑i=lrsi\sum_{i=l}^rs_i∑i=lrsi,其中sis_isi表示子树权值和,带修题解O(nn)O(n\sqrt n)O(nn)分块,一个维护原标号,一个维护dfndfndfn序修改时,更改第一种块需要用到dpi,kdp_{i,k}dpi,k表示iii标号会在第kkk块中计算几次。用第二种块维护散点权值,将原本单点修改变为区间修改单点查,依次做到之后查询O(1)O(1)O(1)查询时,第一种块爆加,散块在第二种块里查#incl
2020-08-01 15:23:37
211
原创 【斯坦纳树】【模板】
题目使关键点联通的最小边权题解一般关键点很少,用状压fi,s<=Min(fi,t+fi,s−t)fi,s<=Min(fj,s+valj,i)f_{i,s}<=Min(f_{i,t}+f_{i,s-t})\\f_{i,s}<=Min(f_{j,s}+val_{j,i})fi,s<=Min(fi,t+fi,s−t)fi,s<=Min(fj,s+valj,i)前者状压DP,后者最短路DP最后统计答案,然后就水了一篇板子#include<bi
2020-08-01 11:40:44
173
1
原创 【二分图匹配】[HNOI2013]消毒
题目abc的长方体中选若干个小长方体,使之包含所有特殊点,且权值最小,权值为min(a,b,c)题解二维的很容易想到,以行和列分别当一侧的点,然后就是常见的二分图匹配然后三维情况,分析到最小的一维肯定不大于17,然后状压枚举这一维选择的,其他的压成二维再二分图好啦,水题就这么完了...
2020-07-29 08:39:46
92
原创 【DP】【Burnside】【多项式】烷基计数
原本想做烷烃的,但发现烷烃是在烷基基础上想的,所以就咕了题目n个碳的烷基同分异构个数,不考虑立体异构(有根树,且每个节点儿子个数≤\leq≤ 3)题解一.n≤400n \leq 400n≤400LOJ6185O(n3)fiO(n^3)f_iO(n3)fi表示用了iii个的方案数应该没有人和我一样fi=∑fjfkfi−1−j−k(j≤k≤i−1−j−k)f_i=\sum f_jf_kf_{i-1-j-k}(j\leq k\leq i-1-j-k)fi=∑fjfkfi−1−j−k(j
2020-07-29 08:25:43
482
原创 【上下界网络流】支线剧情
门题目每条边至少走一次,起点为1的有向无环图,最少走的权值最小题解。。。明显就是源点为1的下界为1上界INF的费用流但上下界咋做来着有源汇需要汇向源连(INF,0)的边变成无源汇要假设全都到了下界,然后将剩余流量改为upi−lowiup_i-low_iupi−lowi然后看这样流进的和流出的大小关系,in>outin>outin>out就连S−>iS->iS−>i,反之连i−>Ti->Ti−>T最后跑遍普通网络流即可#inclu
2020-07-24 10:22:40
90
原创 【FWT】学习笔记
因为考试遇见了所以来学习一下,虽然好像之前有个神仙来讲过,但啥都记不到了FWT(快速沃尔什变换)相比FFT的ci=∑j+k=iaj∗bkc_i=\sum_{j+k=i}a_j*b_kci=j+k=i∑aj∗bkFWT其实很简单 ci=∑j⨁k=iaj∗bkc_i=\sum_{j\bigoplus k=i}a_j*b_kci=j⨁k=i∑aj∗bk其中⨁⊂\bigoplus \subset⨁⊂{|,&,^}三种位运算首先需要类似的,把多项式补为2x2^x2x项,然后就可以根据
2020-07-21 14:54:54
150
原创 【二次剩余】【模板】
二次剩余门俗称膜意义下开根证明等一系列看懂了,但之后还是不会退,所以背板吧QAQ#include<bits/stdc++.h>#define ll long longusing namespace std;int mod;int add(int a,int b) {return a+b>=mod?a+b-mod:a+b;}int del(int a,int b) {return a<b?a+mod-b:a-b;}int mul(int a,int b) {retu
2020-06-19 21:31:30
171
原创 【多项式全家桶】假装的板子库
我是目录【板】任意模数NTT【板】任意模数NTT三个模数NTT,中国剩余定理转换答案即可#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e6+10;const ll mod1=998244353,mod2=1004535809,mod3=469762049,G=3;ll mul(ll a,ll k,ll mod){ ll ans=1;a%=mod; while(k) {
2020-06-17 20:57:08
215
1
原创 【树剖】CF1017G The Tree
门题目自己看去题解通过脑子和观察发现 我没有脑子染一个点就在此加1,查询时判断从此节点向上的连续区间最大值是否大于等于0,记得赋初值(num,maxx都要赋成-1)清零就让该子树每个点查询值为-1,操作来说就是子树点权都变成-1,该节点赋为负的(查询值+1)负的(查询值+1)负的(查询值+1)即可树剖记得初始化赋为-1#include<bits/stdc++.h>using namespace std;const int N=1e5+10,M=N,INF=1e9;int n
2020-06-15 21:35:45
208
原创 【K-DTree】P4357 [CQOI2016]K远点对
门题目第K远点对距离题解因为K≤100K\leq100K≤100可以尝试乱搞经过Pu巨讲解简单了解了K−DTreeK-DTreeK−DTree这一乱搞 高级的数据结构简单说来K−DTreeK-DTreeK−DTree维护了K维信息,在树形结构上每一层按一定方式rand 维护某一维的中间值,然后进行暴搜 查值常见维护顺序rand(rand大法好啊)方差排序轮换对于本题,用一个保存了2*k(因为[a,b][b,a]算一对)个值的堆进行维护答案,每次换成比堆中更大的值K-DTree要
2020-06-15 10:14:57
273
原创 【最小割树】【模板】P4897 最小割树(Gomory-Hu Tree)
板子板子X2板子X3题目快速求出无向图中任意两点的最小割题解n次最小割,每次将图分成两部分,新图中连上(u,v,maxflow)(u,v,maxflow)(u,v,maxflow)边后两部分递归处理询问时查路径最小值即可详细证明#include<bits/stdc++.h>using namespace std;const int N=650,M=6e3+10;int read(){ int ans=0,f=1;char s=getchar(); while(!is
2020-06-14 22:00:42
198
原创 【广义后缀自动机】 [ZJOI2015]诸神眷顾的幻想乡
门这种数据结构的话,还是封装吧。。。经常用的变量名重了会很难受的题目树上所有路径获得序列的本质不同串个数题解很难想到要用后缀自动机怎样乱搞经过不认识的巨佬博客了解一下广义的写法这里用比较简单的离线,在Trie树上bfs建SAM的方法#include<bits/stdc++.h>using namespace std;const int N=2e6+10,M=2*N;int n,m;int s[N];int head[N],nex[M],to[M],tot;void
2020-06-12 21:44:20
144
原创 【树剖】 [TJOI2015]旅游
门题目一棵带点权的树上每次询问查找x−>yx->yx−>y的路径上先经过uuu,再经过vvv,av−aua_v-a_uav−au的最大值之后将x−>yx->yx−>y路径每个点权加vvv题解额。。。不知道是出题人还是我的语文有问题,我开始认为是一次询问可以多次买入卖出,然后就搞了一个乱七八糟的序列dp,然后炸掉。。。树剖好 题思考怎样求答案假设我们己经将左边,右边的求好了,要合并信息到一起一共三种情况①ans=ansl②ans=ansr③ans
2020-06-12 20:06:15
143
原创 【状压DP】【矩阵加速】 [TJOI2015]棋盘
门题目给你n×mn\times mn×m的方格,在里面放棋子,并给出3×p3\times p3×p矩阵作为棋子攻击范围求方案数题解首先!吐槽出题人!为什么没有说起始是第000行第000列!,所以棋子在攻击范围的第二行,直接0分,调了几个小时一眼看数据范围,肯定是状压没跑了冷静分析一波,状态数64,对当前状态有影响的只有上一行,所以f[n][s0][s1]f[n][s0][s1]f[n][s0][s1]三维数组,用回滚数组滚掉第一维技巧通过观察发现我们的n次转移过程完全一样,于是我们可以将
2020-06-12 19:47:30
117
原创 【后缀数组】[TJOI2015]弦论
门题目不同位置相同子串算一个,以及不同位置相同子串算多个,求第K小的子串题解SA好题啊! 考场写挂。。。前一个问简单后一个问思考二分 算一个的排名验证比它小的个数,
2020-06-12 19:16:08
133
原创 【Dilworth定理】[TJOI2015]组合数学
门题目网格图从左上到右下的最小链覆盖,带点权题解根据Dilworth定理,最小链覆盖等于最长反链覆盖原序是左上到右下,反序为左下到右上,反序dp一下即可这么简单要什么代码
2020-06-10 20:31:51
112
原创 【最小割】[TJOI2015]线性代数
门这是基于最小割模型的一道题,但还没来得即过手,就挂掉了题目选iii获得cic_{i}ci损失对于选中的二元组(i,j)(i,j)(i,j)获得bi,j+bj,ib_{i,j}+b_{j,i}bi,j+bj,i(iii可以等于jjj)题解感谢这位大佬的讲解先假设全部bbb贡献都能获得,再建图减掉最小割我们要将iii分成两组,一组会有cic_ici贡献,一组会有bi,ib_{i,i}bi,i单独贡献和bi,j+bj,ib_{i,j}+b_{j,i}bi,j+bj,i二元组贡献
2020-06-10 19:47:58
134
原创 【点分树】[ZJOI2007]捉迷藏
门点分树不卡常就别想过了。。。题目问树中最远黑点对距离带修改题解点分树入门作原图先乱跑一次点分治,保存点分治的每个root之间的父子关系,得到一颗点分树。然后我们的原图除了求dis就可以不管了学习题解中不认识的大佬所说的套路:点分治得到点分树每个点用S1,S2S_1,S_2S1,S2两个数据结构维护,依次容斥修改和查询都是树高(logn)×\times×数据结构修改查询复杂度初始化可以视为n次修改此题用堆维护①第一种堆:维护当前节点的每个点分树子树中的maxdis②第二
2020-06-09 21:57:24
144
原创 【题单——后缀数组】
目录P4051 [JSOI2007]字符加密P2870 [USACO07DEC]Best Cow Line GP2852 [USACO06DEC]Milk Patterns GP4248 [AHOI2013]差异SP705 SUBST1 - New Distinct SubstringsP3181 [HAOI2016]找相同字符SP1811 LCS - Longest Common SubstringP5341 [TJOI2019]甲苯先生和大中锋的字符串P2463 [SDOI2008]Sandy的卡片P2
2020-06-05 16:21:56
309
原创 【后缀数组】[NOI2015]品酒大会
门题目求所有lenlenlen长公共前缀的两子串的方案数和对应权值最大值题解容易想到后缀数组用heightheightheight查lcplcplcp因为如果两子串有lenlenlen长公共前缀,则1,2...,len−11,2...,len-11,2...,len−1都成立数据结构什么的很烦人,我们就差分吧,查两子串最长的公共前缀,最后倒着累加起来方案数比较简单,用找不同子串的方式,单调栈,将方案数累加到ans1[height[i]]ans1[height[i]]ans1[height[i]
2020-06-05 15:38:45
147
原创 【后缀数组】[AHOI2013]差异
门题目∑i=1n∑j=i+1nlcp(Ti,Tj)\sum_{i=1}^n\sum_{j=i+1}^nlcp(T_i,T_j)i=1∑nj=i+1∑nlcp(Ti,Tj)题解即求heightheightheight数组所有的区间最小值我竟然忘了单调栈怎么做。。。又忘了s[i]-'a’后的+1…调了一上午。。。#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=5e6+1
2020-06-04 11:31:24
147
原创 【莫反】「P6156 简单题」加强版
门题目∑i=1n∑j=1n(i+j)kgcd(i,j)μ2(gcd(i,j))\sum_{i=1}^n\sum_{j=1}^n(i+j)^kgcd(i,j)\mu^2(gcd(i,j))i=1∑nj=1∑n(i+j)kgcd(i,j)μ2(gcd(i,j))题解∑i=1n∑j=1n(i+j)kgcd(i,j)μ2(gcd(i,j))∑d=1ndk+1μ2(d)∑i=1⌊nd⌋∑j=1⌊nd⌋(i+j)k[gcd(i,j)==1]∑d=1ndk+1μ2(d)∑i=1⌊nd⌋∑j=1⌊nd⌋(i+j
2020-06-03 09:10:46
156
原创 【数学】Product
门毒瘤卡空间,卡时间,不推荐做题目∏i=1n∏j=1nlcm(i,j)gcd(i,j)\prod_{i=1}^n\prod_{j=1}^n\frac{lcm(i,j)}{gcd(i,j)}i=1∏nj=1∏ngcd(i,j)lcm(i,j)题解∏i=1n∏j=1nlcm(i,j)gcd(i,j)∏i=1n∏j=1nijgcd2(i,j)(∏i=1n∏j=1nij)∗(∏i=1n∏j=1n1gcd2(i,j))(∏i=1ninn!)∗(∏i=1n∏j=1ngcd(i,j))−2(∏i=1nin
2020-06-02 20:36:15
515
原创 【莫比乌斯反演】[AGC038C] LCMs
门(洛谷的门不知道什么时候修好)题目∑i=1n∑j=i+1nlcm(ai,aj)\sum_{i=1}^n\sum_{j=i+1}^nlcm(a_i,a_j)i=1∑nj=i+1∑nlcm(ai,aj)题解∑i=1n∑j=i+1nlcm(ai,aj)∑i=1n∑j=1nlcm(ai,aj)−∑i=1nai2\sum_{i=1}^n\sum_{j=i+1}^nlcm(a_i,a_j)\\\frac {\sum_{i=1}^n\sum_{j=1}^nlcm(a_i,a_j)-\sum_{i=1
2020-06-02 14:52:53
420
原创 【莫比乌斯反演】[SDOI2014]数表
门题目∑i=1n∑j=1mσ1(gcd(i,j))[σ1(gcd(i,j))≤A]\sum_{i=1}^n\sum_{j=1}^m\sigma_1(gcd(i,j))[\sigma_1(gcd(i,j))\leq A]i=1∑nj=1∑mσ1(gcd(i,j))[σ1(gcd(i,j))≤A]题解先不考虑A∑i=1n∑j=1mσ1(gcd(i,j))∑d=1upσ1(d)∑i=1⌊nd⌋∑j=1⌊md⌋[gcd(i,j)==1]∑d=1upσ1(d)∑i=1⌊nd⌋∑j=1⌊md⌋∑e∣g
2020-06-02 11:43:10
167
原创 【莫比乌斯反演】【杜教筛】简单的数学题
门题目∑i=1n∑j=1nijgcd(i,j)\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j)i=1∑nj=1∑nijgcd(i,j)题解∑i=1n∑j=1nijgcd(i,j)∑d=1nd3∑i=1⌊nd⌋i∑j=1⌊nd⌋j[gcd(i,j)==1]∑d=1nd3∑i=1⌊nd⌋i∑j=1⌊nd⌋j∑e∣gcd(i,j)μ(e)\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j)\\\sum_{d=1}^nd^3\sum_{i=1}^{\lfloor \f
2020-06-01 21:38:16
214
原创 【莫比乌斯反演】[SDOI2018]旧试题
门题目∑i=1A∑j=1B∑k=1Cd(i,j,k)\sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^Cd(i,j,k)i=1∑Aj=1∑Bk=1∑Cd(i,j,k)题解前置:d(i,j,k)=∑a∣i∑b∣j∑c∣k[gcd(a,b)==1][gcd(a,c)==1][gcd(b,c)==1]d(i,j,k)=\sum_{a\mid i}\sum_{b\mid j}\sum_{c\mid k}[gcd(a,b)==1][gcd(a,c)==1][gcd(b,c)==1]d
2020-06-01 17:35:49
145
原创 【题单——莫比乌斯反演】
假装我是目录P5495 [Dirichlet 前缀和](https://www.luogu.com.cn/problem/P5495)P3455 [[POI2007]ZAP-Queries](https://www.luogu.com.cn/problem/P3455)P2257 [YY的GCD](https://www.luogu.com.cn/problem/P2257)P2522 [[HAOI2011]Problem b](https://www.luogu.com.cn/problem/P2522)
2020-05-31 20:53:14
254
原创 【莫比乌斯反演】ZAP-Queries
P3455 [POI2007]ZAP-Queries题目∑i=1n∑j=1m[gcd(i,j)==k]\sum_{i=1}^n \sum_{j=1}^m[gcd(i,j)==k]i=1∑nj=1∑m[gcd(i,j)==k]题解莫反入坑作∑i=1n∑j=1m[gcd(i,j)==k]∑i=1⌊nk⌋∑j=1⌊mk⌋[gcd(i,j)==1]∑i=1⌊nk⌋∑j=1⌊mk⌋∑d∣gcd(i,j)μ(d)∑d=1min(n,m)∑i=1⌊nkd⌋∑i=1⌊mkd⌋1∑d=1min(n,m)⌊n
2020-05-31 20:11:01
176
原创 【数学】【模板】Dirichlet 前缀和
门题目狄利克雷前缀和题解n=p1k1p2k2...pmkma=p1b1p2b2...pmbm∀i,bi≤kig(n)=∑f(a)n=p_1^{k_1}p_2^{k_2}...p_m^{k_m}\\a=p_1^{b_1}p_2^{b_2}...p_m^{b_m}\\ \forall i, b_i\leq k_i \\g(n)=\sum f(a)n=p1k1p2k2...pmkma=p1b1p2b2...pmbm∀i,bi≤kig(n)=∑f(a)将任意一个数质因数分解
2020-05-30 16:51:37
402
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人