acm练习题
细数风雨
这个作者很懒,什么都没留下…
展开
-
Graph Theory Class min25筛子
这道题目简化来看就是求3到n+1的所有数和3到n+1的所有质数和,不知道min25筛会很难算,虽然也有打表过去的。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=998244353;const int maxn = 1e6 + 10;bool valid[maxn];ll prime[maxn];ll sum[maxn];int tot;void init()原创 2020-09-30 20:25:13 · 94 阅读 · 0 评论 -
P2664 树上游戏 点分治
分为两类:经过根节点的不经过根节点的路径第二种可以转化成第一种类型对于根节点:如果一个颜色在u到根这条路径上第一次出现,那么对于根的贡献就是u子树的大小对于子节点u:两部分看待,第一部分:u到根路径上不同的颜色的贡献是非当前子树个数乘颜色种类第二部分:非当前子树的颜色部分,也就是根的贡献减去改点子树的贡献。#include<iostream>#include<cstring>#include<iomanip>#include<cstdio&原创 2020-09-05 14:09:03 · 128 阅读 · 0 评论 -
J - Different Integers 牛客多校
这题正解不是莫队,但是确实看起来比较像莫队,所以就当练手。这题卡常卡的厉害,cout都会tle。莫队一般都是求区间的结果,这个恰好相反,取非区间的结果。先全处理出来一共有多少,把中间的减掉,如果中间把某个值的元素全部占有,结果就减一。#include<iostream>#include<cstring>#include<iomanip>#include<cstdio>#include<cstdlib>#include<que原创 2020-05-16 18:07:24 · 119 阅读 · 0 评论 -
hud2255 km模板,带权二分图匹配
km可以解决一些卡费用流的题目时间复杂度n3#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<algorithm>#include<cstdlib>#define inf 0x3f3f3f3fusing n...原创 2020-02-21 16:24:37 · 108 阅读 · 0 评论 -
Codeforces Round #609 (Div. 2) D. Domino for Young
开始想了一个自己误以为很对的思路,结果一直wa;结束之后知道了一个神奇的东西,棋盘染色,棋盘染色可以做大部分多米诺这种1x2方格的问题。就是把这个看成一个国际象棋棋盘,用黑白染色,黑色只与白色相连,白色只与黑色相连,那么能够放上一个多米诺骨牌也就需要一个黑色和一个白色,这样就统计一下黑白棋盘格子各自有多少个就可以了,小的哪个就是答案,下面代码,码风略丑#include<cstdio&g...原创 2019-12-25 21:28:16 · 229 阅读 · 0 评论 -
cdq分治三位偏序陌上花开
三位偏序裸题// let't bring the sky#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int maxn = 1e5 + 10;struct node{ int a,...原创 2019-11-26 20:15:33 · 213 阅读 · 0 评论 -
P3304 [SDOI2013]直径 树的直径
树的直径模板题,需要考虑的是第二问,求所有直径的公用边,先找出一条直径来,画图思考一下会发现,如果这条树的直径上面有个点可以找出另一条直径来,那么这个点以前的边就至少和这一条新找出的直径不共用,那么也就是求两个端点开始最后是从哪里分叉的。从一个端点沿着直径找,直到发现延伸到另一个端点的直径,思考一下会发现这个其实就是另一个端点的最后一个分叉点,并且这个端点的延伸直径也已经找完了,如果你还能找到这...原创 2019-11-09 19:10:05 · 213 阅读 · 0 评论 -
Split Game Gym - 101954H sg博弈
sg博弈题,这个题想到sg了,可是memchr这个函数,我没想到,这个函数已经坑了我好多次了,每次打memset就会跳出它来,并且它还不报错!莫名wa挺了。#include<cstring>#include<cstdlib>#include<cstdio>#include<algorithm>#include<stdbool.h>...原创 2019-11-08 19:30:38 · 152 阅读 · 0 评论 -
树剖基础模板*真 P3384 【模板】树链剖分
#include<cstring>#include<cstdlib>#include<algorithm>#include<cstdio>#include<cmath>#define fmid (tree[rt].l + tree[rt].r) >> 1#define lson rt<<1#defin...原创 2019-11-01 20:26:50 · 100 阅读 · 0 评论 -
tarjan缩点应用 Popular Cows POJ - 2186
简单应用,这个问题因为数据挺大的所有暴力求肯定不行,缩点就是把一部分点变成一个,这部分点是一样的,这个就是把这个图中那些强连通点变成一个,因为一个强连通分量一点过互相崇拜,所有可以把他们缩点。然后就是缩点之后如果一个点还去崇拜其他点那么它一定不会被它崇拜的点崇拜(否则就会缩成一个点),那么就是求那个没有去崇拜别人的点。如果就有一个的话,那么就是这个大点里面小点的个数,如果有两个及以上就说明有两个点...原创 2019-10-28 16:43:49 · 122 阅读 · 0 评论 -
tarjan求强连通分量入门
#include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>#include<stack>using namespace std;const int maxn = 1e5 + 10;struct node{ int next, to;...原创 2019-10-26 18:57:03 · 138 阅读 · 0 评论 -
E - Master of Subgraph HDU - 6268 点分治 + bitset
刚好最近做点分治,不过当时没做出来,第一次用bitset优化,感觉还是挺巧妙地。#include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>#include<bitset>using namespace std;const int maxn = ...原创 2019-10-25 19:08:40 · 250 阅读 · 0 评论 -
扫描线线段树模板
#include<cstring>#include<algorithm>#include<cstdio>#include<cstdlib>#define lson rt<<1#define rson rt<<1|1#define fmid (tree[rt].l + tree[rt].r)>>1us...原创 2019-10-21 16:22:43 · 150 阅读 · 0 评论 -
回文树 P3649 [APIO2014]回文串 板子题
#include<cstring>#include<cstdlib>#include<cstdio>#include<algorithm>using namespace std;const int maxn = 1e6 + 10;const int N = 26;struct palindromic_Tree{ int ...原创 2019-10-17 11:29:50 · 132 阅读 · 0 评论 -
再来一个fft字符串匹配 Fuzzy Search
#include<cstring>#include<algorithm>#include<cstdlib>#include<cstdio>#include<cmath>using namespace std;const double pi = acos(-1.0);const int maxn = 1e6 + 10;in...原创 2019-10-15 21:08:02 · 155 阅读 · 0 评论 -
fft字符串匹配 Rock Paper Scissors Gym - 101667H
第一次见到这种题,没想到fft还能这么用,补体的时候换了好多个版本,wa了差不多一整页才过,有点难受。#include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>#include<cmath>using namespace std;const in...原创 2019-10-15 10:41:36 · 213 阅读 · 0 评论 -
P3857 [TJOI2008] 彩灯 线性基
线性基裸题。#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;ll a[110];char s[60];bool add(ll x){ for(ll ...原创 2019-09-20 21:17:49 · 99 阅读 · 0 评论 -
Gym - 101341D 裴蜀定理
题意就是给你个青蛙,他只能跳几个固定的步数,问你能不能跳到坐标x。一维情况。想了半天也没想到裴蜀定理,感觉暑假学的数论吃掉了。就是几个数的gcd就是他们能到的最小的数,可以到达这个数的整数倍。#include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>usi...原创 2019-09-20 16:17:13 · 156 阅读 · 0 评论 -
网络流模板
网络流模板#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<queue>using namespace std;const int maxn = 1e5 + 10;struct node{ int nex...原创 2019-07-23 19:20:01 · 101 阅读 · 0 评论 -
ac自动机入门模板
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<queue>using namespace std;typedef struct Trie_Node{ Trie_Node *fail; Trie_N...原创 2019-07-29 09:29:38 · 117 阅读 · 0 评论 -
费用流模板
#include#include#include#include#include<stdbool.h>#includeusing namespace std;const int maxn = 1e5 + 10;struct node{int next, to, flow, cost;};node edge[maxn];int head[maxn], flow[...原创 2019-07-24 21:43:57 · 352 阅读 · 0 评论 -
点分治入门模
#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<stdbool.h>using namespace std;const int maxn = 1e4 + 7;struct node{ int to, n...原创 2019-08-03 19:25:11 · 112 阅读 · 0 评论 -
树链剖分模板
树链剖分和dfs序一样是把树状结构转化成线性结构,然后区间求解,特征是对于链的操作;#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#define fmid (tree[rt].l + tree[rt].r)...原创 2019-08-05 08:47:32 · 115 阅读 · 0 评论 -
主席树静态区间第k小模板--结构体
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int maxn = 2e5 + 10;struct node{ int l, r, sum;};node tree[maxn ...原创 2019-07-27 08:55:28 · 153 阅读 · 0 评论 -
主席树动态第k小模板
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int maxn = 1e5 + 10;struct node{ int l, r, sum;};struct op{ ...原创 2019-07-27 19:49:30 · 236 阅读 · 0 评论 -
高斯消元
#include<cstring>#include<algorithm>#include<cstdlib>#include<cstdio>#include<math.h>using namespace std;struct node{ int l, r;};double a[250][250];node m...原创 2019-08-13 14:47:30 · 82 阅读 · 0 评论 -
位图基础入门
位图可以用较少的空间存更多的数据。位图总共有三种操作1.存储2.查询3.删除位图通过二进制用每个int里的位来存一个数,也就是原本一个int只能存一个数,现在能存32个,类似于bool,不过只能存是否存在这个值。#define shift 5 // shift 用来进行位运算n>>shift 相当于n / 32#define mask 0x1f // 0x1f 是31 ...原创 2019-08-13 16:38:40 · 212 阅读 · 0 评论 -
练一练,小模版练手
欧拉函数线性筛void euler(){ phi[1] = 1; for(int i = 2; i < maxn; i++) { phi[i] = i; } for(int i = 2; i <= maxn; i++) { if(phi[i] == i) for(int j = ...原创 2019-08-28 15:29:15 · 174 阅读 · 0 评论 -
P2279 [HNOI2003]消防局的设立 -------树形dp,详细题解
题目2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地。起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状结构。如果基地A到基地B至少要经过d条道路的话,我们称基地A到基地B的距离为d由于火星上非常干燥,经常引发火灾,人类决定在火星上修建若干个消防局。消防局只能修建在基地里,每个消防局有能力扑灭与它距离不...原创 2019-08-22 17:17:08 · 281 阅读 · 0 评论 -
P3379 【模板】最近公共祖先(LCA)倍增模板
#include<cstring>#include<cstdlib>#include<cstdio>#include<algorithm>using namespace std;const int maxn = 5e5 + 10;const int DEG = 20;struct node{ int to, next;...原创 2019-08-26 16:17:40 · 100 阅读 · 0 评论 -
2019icpc南京网络赛B----欧拉降幂
感谢舍友给的板子。就是个板子题,大家一定也需要。#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#include<map>#define MOD(a, b) a >= b ? a % b + b : ausing namesp...原创 2019-09-02 16:36:00 · 129 阅读 · 0 评论 -
Gym - 101550A思路并查集
倒着来求并查集,将分区域问题转化为并查集求解。#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<stdbool.h>using namespace std;const int maxn = 1010;struct n...原创 2019-09-06 19:51:26 · 130 阅读 · 0 评论 -
Substrings HDU - 1238 扩展kmp
题目链接在这:http://acm.hdu.edu.cn/showproblem.php?pid=1238这个题目用扩展kmp可以轻易解决。用第一个串的所有后缀去和剩下的串匹配,求出此后缀对于其他串的最小的公共长度,然后求所以后缀的最大的哪一个,记得翻转一下就行。下面代码(码风有点丑)#include<cstdio>#include<cstring>#inclu...原创 2019-07-07 16:30:15 · 140 阅读 · 0 评论