知识
文章平均质量分 52
.
Jacky_50
请多指教 :)
展开
-
H. Excluded Min (思维、线段树)
简而言之,学会了一种套路,求一些线段中选出不被任何一个线段完全覆盖的所有线段,支持删除线段操作。写了一坨答辩代码,已经神志不清了,后面再补上思路吧,先给上题解的描述还有草稿纸上一些图。原创 2022-11-25 13:49:48 · 496 阅读 · 1 评论 -
J. Counting Trees (树,卡特兰数)
大意就是,规定一棵二叉树,每个节点的值都大于等于其父节点的值。给出一个中序遍历值序列,问有多少棵这样的树满足其中序遍历是这个。节点数范围 1e6,节点值范围 1e6。原创 2022-09-04 14:30:32 · 576 阅读 · 0 评论 -
kuangbin 斜率优化题单 代码
题单链接推荐:1,2,5。原创 2022-08-15 17:00:10 · 161 阅读 · 0 评论 -
kuangbin 线段树题单 代码
题单链接https://vjudge.net/article/752原创 2022-07-12 11:39:30 · 213 阅读 · 0 评论 -
第46屆ICPC亚洲区域赛(昆明)G.Glass Bead Game(数学)
题目https://ac.nowcoder.com/acm/contest/32708/G思路直接看每个数对 (i, j) 的贡献:只有当后面那个数被选到,并往前跨了,才有一个贡献。因为 m 足够大,所以第 m 次开始之前,i 在 j 前面的概率是 a[i]/(ai+aj),在后面的概率是 aj/(ai+aj),然后这一对的贡献就是 aj*(ai/(ai+aj)) + ai*(aj/(ai+aj))总的答案就是两倍的 sum ai*aj/(ai+aj)代码#include <cstd原创 2022-04-17 17:41:05 · 1505 阅读 · 5 评论 -
E. Fair Share (思维,欧拉回路)
题目https://codeforces.com/contest/1634/problem/E题意大概:给出 m 个偶数长度的数字串,要你把全部数字分到两个集合(L, R)中,使得每个串中一半数字在L,另一半在 R,且最终两个集合成分相同。若可以构造,要给出一种构造;若无法构造,则输出NO。思路https://codeforces.com/blog/entry/99563看了题解做的。题解很巧妙地把这个问题转化为了图论问题,求欧拉环。先看看怎样会无解:若所有数列算在一起,某个数字只出现了奇数原创 2022-02-08 17:06:19 · 712 阅读 · 0 评论 -
斜率优化几道题
1https://codeforces.com/contest/713/problem/C#include <bits/stdc++.h>using namespace std;const int MAXN = 3005;const long long INF = 1e14;int n;long long a[MAXN];long long b[MAXN];long long f[MAXN][MAXN];long long g[MAXN][MAXN];void原创 2022-01-25 18:46:31 · 377 阅读 · 0 评论 -
G. Rikka with Intersections of Paths (树上差分)
题目2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest G. Rikka with Intersections of Pathshttps://codeforces.com/gym/102012/problem/H大意就是给一棵 n 个点的树,和其中 m 条简单路径,以及一个数 k 。要你在这 m 个路径中选 k 个,使得这 k 个路径至少包含一个公共点。问有多少种选法。n,m: 1e5k: m多组数据思路考虑对每个点,要是知道通过它的路径数为原创 2021-10-02 09:57:01 · 467 阅读 · 0 评论 -
大整数类代码
#include <cstdio>#include <vector>#include <iostream>using namespace std;namespace NTT { const long long P=998244353; // =119*2^23+1 const long long G=3; vector<int> r; long long qpow(long long x, int k) { int ret原创 2021-09-27 12:26:13 · 174 阅读 · 0 评论 -
kuangbin题单9-连通图
题单链接:https://vjudge.net/article/752推荐:1,1. POJ-1236 Network of SchoolsTarjan,缩点缩完点后,第一问就是 “入度为零的点” 的个数,第二问就是 “入度为零的点的个数” 与 "出度为零的点的个数"的最大值,因为每次找一个出度为零的点 x,和一个入度为零的点 y,添加一条边 x->y,就各减少了一个点。总可以构造,使得最后变成一个强连通图。参考这篇博文 https://xiaoxiaoh.blog.csdn.ne原创 2021-09-16 14:03:36 · 105 阅读 · 0 评论 -
Luogu-P3384 【模板】轻重链剖分/树链剖分
学习是看这篇博文学习的。https://www.cnblogs.com/chinhhh/p/7965433.html代码#include <bits/stdc++.h>using namespace std;#define MAXN 100005long long Ha;int n,m,root;vector<int> graph[MAXN];int siz[MAXN];int son[MAXN];int fa[MAXN];int dep[MAXN]原创 2021-09-14 10:59:07 · 81 阅读 · 0 评论 -
A. Accelerator (分治+FFT)
题目https://codeforces.com/gym/103119/problem/A分析https://fanfansann.blog.csdn.net/article/details/118528285这篇博客讲得好清楚了。代码#include <bits/stdc++.h>using namespace std;#define MAXN 100005#define Ha 998244353#define GHa 3long long A_[MAXN<&原创 2021-09-11 11:52:03 · 585 阅读 · 0 评论 -
牛客多校10-D Diameter Counting (图论-求所有包含 n 个(有标记)点的树的直径之和)
题目题意:给一个数 n ,求所有包含 n 个(有标记)点的树的直径之和。分析关于直径,有这样一个求法:要求一个树的直径,可以这样一轮轮删点直到剩下一个点或没有点:每一轮把它所有的叶子节点删掉。这样,删了 x 轮,直径就是 2x 或 2x+1。那么我们反过来,要构造一个直径为 d 的树,也可以一轮轮加:只要每一轮加的点都满足上每个叶子节点上都至少加了一个点,这样每一轮过后直径都加了2(除了往单独一个点上加一个点这种极端情况)。于是就有下面的dp思路。f[i][j] 代表 i 个(有标记原创 2021-08-20 23:18:22 · 176 阅读 · 0 评论 -
Luogu-T91116 (启发式合并)
题目题意:给一个树,每个边有个权值。一条路径的代价为路径上的边权中的最小值。求一个点,使得其它点到它的路径代价和最大。分析按边权给边排序,然后从大到小依次加入图中,那么每次这个边所连接的两团,相互到达的路径代价就是这个边的权值。用并查集,然后又需要每次对并查集内的所有点加某个数,于是想到可以只给这个集合的代表点加,然后用启发式合并保证时间复杂度。最后按新的有根扫一遍,把每个点的答案(即选这个点的话路径代价和),取最大值即可。关于启发式合并,就是说并查集在查询的时候,不进行路径压缩,在合并的时候,总原创 2021-08-18 10:27:52 · 114 阅读 · 0 评论 -
牛客多校9-A Math Challenge (类欧+拉格朗日插值+哈希)
题目https://ac.nowcoder.com/acm/contest/11260/A样例inout1 1 1 1 1 131 1 4 5 1 412678 9 3 8 9 38116858011000000000 1000000000 1000000000 50 50 10000000008216229421 1 1 50 50 999999999482598534分析难点两处,一是类欧几里得算法,二是利用拉格朗日插值求下面这个多项原创 2021-08-16 18:32:42 · 441 阅读 · 0 评论 -
牛客多校9-C Cells (LGV引理+线代+NTT)
题目https://ac.nowcoder.com/acm/contest/11260/C分析(截图题解的,在推了……)答案就是这三部分乘起来,前两部分好说,最后那部分,注意到值域比较小,于是统计一下在数组 a[] 中每种数的个数,然后正着一个生成函数,倒着一个生成函数,相乘,得到的系数就是差是某个数对应的 a[i]-a[j] 数量,然后乘出来就行。时间复杂度是 O(n lgn) 的。代码#include <bits/stdc++.h>using namespace std;原创 2021-08-14 21:11:38 · 205 阅读 · 0 评论 -
【模板题】Luogu-P4717 快速莫比乌斯/沃尔什变换 (FMT/FWT)
题目https://www.luogu.com.cn/problem/P4717就是给两个序列,分别求它们的 或、与、异或 卷积分析FWT 分治总体时间复杂度 O(n lgn)具体见博客里的FWT笔记代码#include <bits/stdc++.h>using namespace std;const long long Ha=998244353;const int MAXN=1<<18;int n,m;long long a[MAXN],b[MAXN];原创 2021-08-06 15:47:51 · 174 阅读 · 0 评论 -
牛客多校-4-B Sample Game (生成函数)
题目大意: 一个东西会按某个固定的概率随机生成 [1,n] 内的数。每生成一个数之后,若它是包含之前所生成的所有数中最大的(可能是并列最大),那就再继续生成;否则停止生成,然后得分是目前为止生成序列的长度。…样例:…Input:31 1 1Output:499122190...原创 2021-07-28 10:13:05 · 219 阅读 · 0 评论 -
kuangbin 最短路题单 代码
题单链接https://vjudge.net/article/7521. POJ-2387 Til the Cows Come Home模板题,注意输入是先输入 m 在输入 n#include <cstdio>#include <queue>#include <vector>#include <cstring>using namespace std;#define MAXN 1005long long n,m;vector<pa原创 2021-07-04 14:44:51 · 195 阅读 · 0 评论 -
kuangbin 最小生成树题单 代码
题单链接https://vjudge.net/article/7521. POJ-1251 Jungle Roads#include <cstdio>#include <algorithm>using namespace std;int n;int f[30],cnt;int Fa(int x) {return f[x]==x ? f[x] : f[x]=Fa(f[x]);}struct edge{ int u,v,w; edge(){} edge(in原创 2021-07-04 10:42:28 · 79 阅读 · 0 评论 -
旋转甜甜圈简单渲染
效果思路旋转曲面(甜甜圈)均匀取点样法向量整体旋转(水平,竖直)根据法向量给个光线权值打印说明随便写写的,刚好数学学了多元函数,实践一下……wasd 变换方向。代码#include <cstdio>#include <conio.h>#include <cmath>#include <vector>#include <cstring>#include <iostream>using namespac原创 2021-04-09 20:55:49 · 642 阅读 · 0 评论 -
Codeforces Round #707 (Div 2)
链接:https://codeforces.com/contest/1501A. Alexey and Train看懂题目后直接模拟即可,我这里令 t 是每次出发的时间。#include <bits/stdc++.h>using namespace std;#define N 105long long n,a[N],b[N],tt[N];void solve(){ long long tmp; scanf("%lld",&n); for (int i=1; i&原创 2021-03-14 08:20:32 · 209 阅读 · 0 评论 -
cayley’s theorem 凯利定理
定理内容过n个有标志顶点的树的数目等于 n(n−2)n^{(n-2)}n(n−2)。例题思路:n 为奇数的时候答案直接是零,若 n 为偶数;容易得出匹配好后的方案数 (n-1)*(n-3)*...*1 ,想想每个点配对一个后再对剩下的点做匹配操作;匹配好之后将匹配好的两个点看成一个整体,共 d=n/2 个整体;还需要对匹配图添加 d-1 条边使得其变成一个树,注意这里是在原来的点之间加边,而两个整体间有且恰有一个边,于是还需要乘的就 是 d 个顶点,带序号的不同的树的个数,再乘上 4^(原创 2021-02-28 17:11:46 · 615 阅读 · 0 评论 -
【模板题】对一个字符串求长度为 k 的字典序最小的子串(不要求连续)
如题#include <bits/stdc++.h>#define N 1000005using namespace std;int nxt[N][27];int s[N],f[N];int n,k;void getnxt(){ for (int i=0; i<=n; i++) for (int j=0; j<26; j++) { nxt[i][j]=n+1; } for (int i=n; i>0; i--) { nxt[i-1][原创 2021-01-29 17:53:06 · 1327 阅读 · 3 评论 -
带权并查集 (HDU-3038 , POJ-1182 , etc.)
题目How Many Answers Are Wrong链接https://vjudge.net/problem/HDU-3038#author=hpreon给出一个区间的长度 N,及 M 个子区间和, 形如:x y z, 表示子区间 [x, y] 的和为 z如果一个“子区间和”与前面的“子区间和”冲突,即为错误(而且这个“子区间和”将在接下来的判断中被忽略)。求总错误个数。有多组数据。[input]每组数据第一行两个整数N M (1 <= N <= 200000, 1 &l原创 2021-01-28 16:57:01 · 217 阅读 · 0 评论 -
kuangbin 并查集题单 代码
题单链接https://vjudge.net/article/752POJ-2236 Wireless Network//https://vjudge.net/problem/POJ-2236#include <cstdio>#define N 1005int f[N];bool broken[N];int n,d,D,p,q;char Q[3];int X[N],Y[N];int Fa (int x){ return f[x]==x ? x : f[x]=Fa(f原创 2021-01-28 13:04:19 · 189 阅读 · 0 评论 -
kuangbin 数论基础题单 代码
题单链接https://vjudge.net/article/752LightOJ - 1370 Bi-shoe and Phi-shoe给每个人买个大于 luckynumber 的最小质数即可。#include <bits/stdc++.h>using namespace std;#define MaxN 2000005long long ans[1000005],mn[MaxN],P[MaxN];void mk_tb(long long *p, long long原创 2021-01-24 10:08:08 · 133 阅读 · 0 评论 -
快速变换 FFT,NTT
mark例题#题目链接题解链接1Codeforces-1473-G. Tiles链接原创 2021-01-24 08:34:35 · 156 阅读 · 0 评论 -
2021-2022学习记录
日期项目知识点备注2021-1-19Codeforces Round #696 (Div. 2)比赛(#1770 3/5)2021-1-20cf-1474-D. Cleaning原创 2021-01-22 10:09:55 · 393 阅读 · 0 评论 -
模板总结2.0
重新开一个模板总结,更多地采用面向对象思想,模块化的感觉更强一些。并查集class UnionFind {public: vector<int> parent; vector<int> size; int setCount; public: uniFind(int _n): n(_n), setCount(_n), parent(_n), size(_n,1) { iota(parent.begin(),parent.end(),0); //区间赋值 }原创 2021-01-22 10:06:58 · 224 阅读 · 1 评论 -
Codeforces-1473-E. Minimum Path (分层图最短路)
题目传送门简而言之,给一个有权无向图,起点为 1,问从 1 到所有其他点 分别 的最小“距离”,其中这个“距离”指路径长度减去最大边再加上最小边。点和边都是 2e5 范围。思路可以类似 dp 一样将点拓展分层,一个点 x 分成4个:x[mx][mn],其中 mx 代表从 1 到这是否删掉了一个边, mn 代表从1到这是否加上了一个边(先不管最大最小)。然后连的边还是正常地连,在后面跑最短路的时候判断一下就行。那么在这个新的图中,最后的x[1][1]其实就是题目所求的“距离”因为刚好减去最大原创 2021-01-17 10:36:43 · 288 阅读 · 0 评论 -
坑_____经验总结2.0
进入大学啦,重新开一个经验总结,不只是竞赛内容了,平时写代码想到注意的事项也放上来吧。有些题目注意按要求取模。有一个很隐蔽,往往容易忘记取模的地方,就是最后处理答案的时候。例(点击进入该题):ans=ksm(2,N); ans-=ss;前面白来行算法处处记得取模,结果最后这里没去取模,导致当时我WA了几发……应该是这样才对:ans=ksm(2,N); ans-=ss; ans=(ans%Ha+Ha)%Ha;...原创 2020-12-26 16:59:37 · 111 阅读 · 0 评论 -
SAM_后缀自动机笔记(图文加注释)_(Luogu P3804)
我是看洛谷这篇文章(https://www.luogu.com.cn/blog/Kesdiael3/hou-zhui-zi-dong-ji-yang-xie)学习的,建议也看看那篇文章先。这里我画了些图供补充理解。下面还有我带注释的代码,要是有错请提出来,我也刚学会 ????要是空格缩进不支持的话,附上paste.ubuntu链接 https://paste.ubuntu.com/p/SKMw9DY3HN/#include <cstdio>#include <cstring原创 2020-09-30 12:04:47 · 170 阅读 · 0 评论 -
计算几何笔记
判断点在直线哪一侧,可用叉积来判断 http://poj.org/problem?id=2318判断线段是否被直线穿过,可以看看线段两个端点是否在直线两边 http://blog.csdn.net/jackypigpig/article/details/78629588判断线段与线段是否相交,可以先判断一次快速排斥实验,再判断一次次跨立实验。(实际上不判断快速排斥实验,而判断两次次跨立实验原创 2017-11-25 07:56:20 · 464 阅读 · 0 评论 -
枚举一个数的子集
1枚举 n 的子集,其中 k 为 n 的位数void hh(int n){ for (int i=n; i; i=(i-1)&n) printf("%d ",i);}时间复杂度为 n 的子集个数,小于 2^k。易证(可参考下面的证法)2枚举 n 所有子集的所有子集void hh(int n){ for (int i=n; i; i...原创 2018-03-22 21:51:29 · 846 阅读 · 0 评论 -
Luogu-3390 (矩阵快速幂模板)
题目链接 https://www.luogu.org/problemnew/show/P3390#include <cstdio>#define Ha 1000000007typedef long long ll;ll n,k;struct matrix{ ll a[105][105]; void init(){ for (ll i=1; i<=n; i++)原创 2017-11-05 23:22:19 · 221 阅读 · 0 评论 -
高精度
高精度加法原创 2016-11-27 23:04:09 · 419 阅读 · 0 评论 -
2017学习知识+学习计划
这是近期希望能理解掌握的内容,时不时更新(蓝色表示已基本掌握)卡特兰数FFT & FWT & NTT支配树dp 依赖背包斜率优化计算几何 辛普森积分格林公式简单记录一下今年学的新知识(若很low请别喷)7-10 数位dp字典树存储二进制数7-11 最大全1矩阵7-12 容斥预处理所有子矩阵信息 f[i][j]=f[i-1][j]+f[...原创 2021-01-28 17:06:51 · 589 阅读 · 0 评论 -
Luogu-3376 (网最大流模板-dinic)
题目题目链接 https://www.luogu.org/problemnew/show/P3376 网络流笔记链接 http://blog.csdn.net/jackypigpig/article/details/78565098程序Dicnic#include <cstdio>#include <cstring>#include <algorithm>#define inf 114747原创 2017-11-17 20:41:36 · 319 阅读 · 0 评论 -
Luogu-3805 (Manacher 最长回文子串)(模板)
题目就是给个字符串求其最长回文字串 字符串长度 len <= 11000000分析简单说一下 Manacher 吧本来的暴力方法是对于每个点都从它自己往两边一直扩展直到不能回文为止,不过这样时间复杂度为 n^2你会发现,其实有许多次扩展是多余的,想象一下,对于一串长一点的回文串,它对称的两边中,其中一边(比如说左半部分)若有回文串,那么另一边(右半部分)也肯定会有,按理来说就不用再讨论右边那原创 2017-10-02 21:10:43 · 385 阅读 · 3 评论