自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 收藏
  • 关注

原创 ACM模板

图论: 最短路相关模板 最小生成树模板 网络流模板 二分图匹配模板 强连通分量模板 全局最小割模板 最小树形图模板数据结构: 字典树模板 并查集模板 RMQ(ST)模板 LCA模板 树链剖分模板 块状链表模板 树状数组模板 线段树模板 伸展树模板 treap模板 可持久化并查集 可持久化t

2017-08-26 18:38:41 759 1

原创 博弈论模板

尼姆博弈: 描述:有n堆石子,每堆若干个,两个人轮流从某一堆取任意多石子,规定每次至少取1个,多者不限,最后取光者得胜 结论:对n个石子数进行异或运算,结果不为0,先手胜,否则后手胜#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 110;int main(){ int n;

2017-08-25 11:06:41 611

原创 数学模板

组合数学: CmnC_n^m的奇偶性:当n&m=mn \& m = m时,CmnC_n^m为奇数,否则为偶数

2017-08-23 10:17:14 295

原创 线段树模板

线段树区间更新://0 x y v: [x,y]内元素都加上v//1 x y: [x,y]内元素的和typedef long long ll;const int N = 100010;struct node{ int l, r; ll val, mark;}tr[N*4];int cas = 0;void push_up(int k){ tr[k].val

2017-08-31 20:58:52 290

原创 树状数组模板

树状数组://模板是求数组中的逆序对数typedef long long ll;const int N = 500000 + 10;int a[N], b[N];struct Bit //封装成结构体更好看些。{ int n, b[N]; void init(int _n) { n = _n; memset(b, 0, sizeof

2017-08-31 20:25:37 337

原创 HDU 6188 Duizi and Shunzi 贪心

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6188题意:给出n个数字,两个相同的数字可以组成对子,三个连续的数字可以组成顺子,问能组成对子和顺子的总数最大是多少思路:统计每个元素的个数,从头开始循环,对于前两个元素,判断能不能组成对子,能组成就加上相应的数量,并减去用掉的元素。从第三个元素起,先检查第三个元素能不能与前面两个元素组成顺子,然后再判断能不

2017-08-31 20:03:23 1085 2

原创 HDU 6186 CS Course 简单思维题

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6186题意:给出一个长度为n的数组a,对于每次询问,给出一个数字p,意为去掉数字a[p],然后求数组中其余n-1个数字的按位与,按位或,按位异或。思路:首先把每个数字化成二进制记录每个位置上0、1的个数,对于询问,计算出a[p]二进制中每个位置上0、1的个数。对于按位与,从二进制角度看,只要当前位置上有一个0

2017-08-31 19:56:47 584

原创 51nod 1286 三段子串 extkmp

题目:http://www.51nod.com/onlineJudge/questionCode.html#problemId=1286&noticeId=310651题意:给定一个字符串S,找到另外一个字符串T,T既是S的前缀,也是S的后缀,并且在中间某个地方也出现一次,并且这三次出现不重合。求T最长的长度。 例如:S = “abababababa”,其中”aba”既是S的前缀,也是S的后缀,中

2017-08-31 09:42:35 332

原创 HDU 4763 Theme Section extkmp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4763题意:给定一个字符串,找到一个子串,使得字符串呈现出"EAEBE""EAEBE"这样的形式,其中"E""E"是要找的子串,"A""B""A""B"可以不存在,求这个子串的最大长度思路:首先求出exkmpexkmp的NextNext数组,接下来就可以用NextNext数组来求解。可以发现首部和尾部的子串是

2017-08-31 09:39:41 310

原创 HDU 2594 Simpsons’ Hidden Talents kmp || extkmp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2594题意:给定两个字符串s1,s2s1,s2,求s1s1的前缀和s2s2的后缀相等的最大长度思路:kmpkmp的话,直接用s1s1去匹配s2s2即可。extkmpextkmp的话,也是用s1s1去匹配s2s2,从前往后,找到一个i+extend[i]=leni+extend[i] = len的第一个位置即可

2017-08-31 09:21:47 235

原创 HDU 4333 Revolving Digits extkmp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4333题意:给出一个长度为10510^5以内的没有前导00的数字,每次把最后一个数字移到最前面形成一个新数字,有前导00则去掉前导00,求形成的不同的新数字中小于、等于和大于原数字的个数思路:首先注意是不同的新数字,这意味着要去重。把原串复制一次接在后面形成两倍原串,然后extkmpextkmp算法用原串匹配

2017-08-31 09:06:43 230

原创 HDU 3613 Best Reward manacher || kmp || extkmp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3613题意:有一个长度为nn的项链,有2626种宝石组成,用字母aa至zz表示,每种宝石都有一定的价值。要求把项链切成两段,一段项链只有是一个回文串的时候才有价值,价值是这段项链上所以宝石价值之和,否则价值为00。求切割后两段项链的最大价值思路:用manachermanacher算法的话,处理出以每个点为中心

2017-08-30 17:17:56 344

原创 51nod 1295 XOR key 01trie(可持久化字典树坑已填)

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1295题意:给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R)。求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少? Input 第1行:2个数N, Q中间用空格分

2017-08-30 15:07:13 462

原创 Wannafly模拟赛 矩阵 二维矩阵hash

题目:https://www.nowcoder.com/acm/contest/submit/f8363c912a4c48a28b80f47e7102b6b8?ACMContestId=2&tagId=4题意:题目描述 给出一个n * m的矩阵。让你从中发现一个最大的正方形。使得这样子的正方形在矩阵中出现了至少两次。输出最大正方形的边长。 输入描述: 第一行两个整数n, m代表矩阵的长和宽;

2017-08-30 13:51:14 676

原创 HDU 6153 A Secret kmp || extkmp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6153题意:给出两个字符串s1,s2s1,s2,求出s2s2的每一个后缀在s1s1中出现的次数乘以这个后缀的长度,并累加求和,输出这个和思路:kmpkmp和extkmpextkmp都可以做。 extkmpextkmp:求得是s2s2后缀在s1s1中出现的次数,我们将两个字符串翻转,就可以求s2s2前缀在s1

2017-08-29 20:16:03 367

原创 kmp算法模板

kmp算法://求解原串中包含多少模式串,模式串可以互相覆盖,不能覆盖的稍微修改一下即可char ori[N*100], pat[N];//ori为原串,pat为模式串int Next[N];//两个get_next函数,任选其一//void get_next(char *pat)//{// int i = 0, j = -1;// Next[0] = -1;//

2017-08-29 10:40:50 418

原创 HDU 5269 ZYB loves Xor I 01trie

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5269题意:给定一个长度为nn的数组, 求(lowbit(Ai⨁Aj))(i,j∈[1,n])(lowbit(Ai\bigoplus Aj)) (i,j∈[1,n])的和,结果取模998244353998244353思路:首先把所有数字倒着插入到trietrie中,然后查询每个数字和所有数字的异或再lowbi

2017-08-28 20:03:44 369

原创 HDU 5536 Chip Factory 01trie

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5536题意:给出nn个数,从这些数字中任选33个不同的数字x,y,zx,y,z,求出一个值(x+y)⨁z(x+y)\bigoplus z,求所有值里面的最大值思路:暴力居然可过。。。然后正解是用字典树去求最大异或值,首先把nn个数字插入到01trie01trie中,然后枚举x+yx+y,首先从字典树中删掉x,

2017-08-28 17:22:03 379

原创 CSU 1216 异或最大值 01trie

题目:https://vjudge.net/problem/CSU-1216题意:给定一些数,求这些数中两个数的异或值最大的那个值Input 多组数据。第一行为数字个数n,1 <= n <= 10 ^ 5。接下来n行每行一个32位有符号非负整数。Output 任意两数最大异或值思路:最暴力的方法是枚举两个数,这样显然不可行,当枚举xx时,怎么找到另一个数字yy使得x⨁yx\bigoplus y最

2017-08-28 16:21:50 410

原创 HDU 5969 最大的位或 思维题

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5969题意:Problem Description B君和G君聊天的时候想到了如下的问题。 给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大。 其中|表示按位或,即C、 C++、 Java中的|运算。Input 包含至多10001组测试数据。 第一行有一个

2017-08-28 15:12:59 340

原创 块状链表模板

块状链表://下标从0开始//块大小和块数设为比sqrt(n)稍大const int N = 2000000 + 10, block_sz = 4000 + 100, block_num = 4000 + 10;queue<int> que;int head;char str[N];struct block{ int sz, next;//sz:块内大小,next:下一个块位置

2017-08-28 12:41:48 596

原创 全局最小割模板

stoer-wagner算法://点下标从0开始const int N = 510, INF = 0x3f3f3f3f; int mpa[N][N], dis[N], v[N];//v数组是马甲数组,dis数组用来表示该点与A集合中所有点之间的边的长度之和 bool vis[N];//用来标记是否该点加入了A集合 int stoer_wagner(int n) {

2017-08-28 09:01:20 336

原创 最近公共祖先模板

倍增法://模板是有向图,故需要找树根,无向图不需要#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int N = 10010;const int INF = 0x3f3f3f3f;struct edg

2017-08-27 12:30:20 355

原创 最小树形图

朱刘算法:给定n个点和m条有向边,边有权值,选择一个点,从这个点可以到达其他所有点且权值最小,若这样的点有多个,选择编号最小的那一个 不定根最小树形图,因为没有给定根,所以虚拟一个根,从虚拟根向所有点连虚拟边,权值设为一个可以和其他边区分的数字,设比其他所有边权值和大1。然后求最小树形图,如果求出的最小树形图中含有2条及以上的虚拟边,则原图肯定没有最小树形图。至于最小树形图存在时如何求编号最小的点

2017-08-27 10:57:56 832

原创 树链剖分模板

stoer-wagner算法://稠密图用此模板,此模板点下标从0开始const int N = 510, INF = 0x3f3f3f3f; int mpa[N][N], dis[N], v[N];//v数组是马甲数组,dis数组用来表示该点与A集合中所有点之间的边的长度之和 bool vis[N];//用来标记是否该点加入了A集合 int stoer_wagner(in

2017-08-27 10:19:36 250

原创 二分图匹配模板

匈牙利算法:typedef long long ll;const int N = 110;struct edge{ int to, next;}g[N*N*2];int cnt, head[N];int nx, ny, match[N]; //nx,ny分别是左点集和右点集点数bool vis[N];void init(){ cnt = 0; memset(

2017-08-26 21:36:58 258

原创 字符串回文算法模板

manacher:const int N = 200010;char ori[N], pat[N*2];int p[N*2];int manacher(char *ori){ int len = strlen(ori + 1); for(int i = 1; i <= len; i++) pat[i*2] = ori[i], pat[i*2+1] = '#';

2017-08-26 20:00:06 385

原创 RMQ(ST)模板

一维RMQ://先调用ST函数预处理,然后调用RMQ查询const int N = 100010; int dp[20][N], a[N]; void ST(int n) {//dp[i][j]:以j为起点,长度为2^i的区间的最值 for(int i = 1; i <= n; i++) dp[0][i] = a[i]; for(int i

2017-08-26 19:46:05 225

原创 并查集模板

并查集:int par[N], rnk[N];void init(int n){ for(int i = 1; i <= n; i++) par[i] = i, rnk[i] = 0;}int ser(int x){ int r = x, i = x, j; while(r != par[r]) r = par[r]; while(par[i] != r)

2017-08-26 19:33:01 211

原创 字典树模板

动态字典树://好写,速度稍慢const int N = 100000 + 10, INF = 0x3f3f3f3f;struct trie{ int val; trie *next[26]; trie() { val = 0; memset(next, 0, sizeof next); }}*root; //字典树根,

2017-08-26 19:24:14 322

原创 强连通分量模板

tarjan:const int N = 100010;struct edge{ int to, next;}g[N];int cnt, head[N];int dfn[N], low[N], scc[N], scc_sz[N], st[N];//scc标记点属于哪个强连通分量,scc_sz记录某个强连通分量的点数bool vis[N];int index, top, num;

2017-08-26 19:19:16 301

原创 网络流模板

sap:const int N = 12010, INF = 0x3f3f3f3f;struct edge{ int to, cap, next;}g[N*100];int level[N], cur[N] , pre[N], gap[N];int cnt,head[N];int nv; //图的点数,记得设置void init() //初始化{ cnt = 0;

2017-08-26 19:17:02 320

原创 最小生成树模板

kruskal:typedef pair<int, int> pii;const int N = 600 + 10, M = 2000000 + 10, INF = 0x3f3f3f3f;struct edge{ int v, u, cost; friend bool operator< (edge a, edge b) { return a.cost

2017-08-26 18:41:54 299

原创 最短路相关模板

spfa:spfa://适合稀疏图const int N = 1010, INF = 0x3f3f3f3f; //N是点数struct edge{ int to, cost, next;}g[N*N*2];int cnt, head[N];int dis[N];bool vis[N];void init() //初始化{ cnt = 0; memset(he

2017-08-26 18:37:04 333

原创 HDU 2509 Be the Winner Anti-SG

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2509题意:有m个苹果分成n组,两个人从某一组轮流取苹果,每次可以取连续的一段苹果,最后无苹果可取的人获胜,求先手是否必胜思路:典型的Anti-SG游戏 Anti−SG:Anti−SG:Anti−SGAnti−SG 游戏规定,决策集合为空的游戏者赢。Anti−SGAnti−SG 其他规则与SGSG 游戏

2017-08-25 16:19:23 359

原创 HDU 1517 A Multiplication Game SG打表

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1517题意:Stan和Ollie玩游戏,初始给定一个数字p=1,两人轮流操作,每次可以用数字p乘以[2,9]内的任意一个数,再给出一个n,谁先使p>=n就获胜。问每次游戏的结果思路:可以直接找规律的,与2和9有关,写一写很快就发现了。也可以sg打表,因为范围比较大,用map而非数组,这里sg只有false和t

2017-08-24 11:05:55 309

原创 HDU 1848 Fibonacci again and again SG打表

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1848题意:Problem Description 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1,2,3,5,8,13……就是菲波那契数列。 在HDO

2017-08-24 09:27:38 214

原创 HDU - 1847 Good Luck in CET-4 Everybody! 简单博弈 SG打表

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1847题意:大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此。当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓“张弛有道”就是这个意思。这不,Kiki和Cici在每天晚上休息之前都要玩一会儿扑克

2017-08-24 09:08:57 251

原创 HDU 1846 Brave Game 巴什博弈 SG打表

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1846题意:Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。 今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是

2017-08-23 21:01:17 305

原创 HDU 6081 度度熊的王国战略 堆优化Stoer-Wagner算法

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6081题意:Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族。 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士。 所以这一场战争,将会十分艰难。 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族。 第一步就是应该使得哗啦啦族内部

2017-08-22 20:35:11 552

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除