c++
xizi_ghq
这个作者很懒,什么都没留下…
展开
-
模板四十天之一 KMP
题目描述如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。为了减少骗分的情况,接下来还要输出子串的前缀数组next。(如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了。)输入输出格式输入格式:第一行为一个字符串,即为s1第二行为一个字符串,即为s2输出格式:若干行,每行包含一个整数,表...原创 2019-07-17 15:50:40 · 67 阅读 · 0 评论 -
2019 Multi-University Training Contest 2 1011主席树
Problem DescriptionNsticks are arranged in a row, and their lengths area1,a2,...,aN.There areQquerys. Fori-th of them, you can only use sticks betweenli-th tori-th. Please output the maximum...原创 2019-07-24 16:12:36 · 409 阅读 · 3 评论 -
2019hdu多校第二次1007 Find the answer 线段树板子。
Given a sequence of n integers called W and an integer m. For each i (1 <= i <= n), you can choose some elementsWk(1 <= k < i), and change them to zero to make∑ij=1Wj<=m. So what'...原创 2019-07-29 19:21:59 · 144 阅读 · 0 评论 -
模板四十天之笛卡尔树
笛卡尔树:简介Cartesian Tree 是一种二叉树,每个节点具有两个值 key 和 value。只看key的话,笛卡尔树是一棵二叉搜索树 只看value的话,笛卡尔树是堆(但不一定是完全二叉树)笛卡尔树用二元组来构造树,利用树的构造过程和构造好的树来解决问题。构造下面我们以大根堆为例。利用栈可以实现线性时间构造笛卡尔树。将节点按照key升序排列,依次插入笛卡尔树,...原创 2019-07-20 11:04:12 · 112 阅读 · 0 评论 -
后缀数组
#include<bits/stdc++.h>using namespace std;const int M=1e6+50;string s;int x[M],y[M],c[M],sa[M],rk[M];//sa第i名的后缀是从第sa[i]个字母开始的,rk是第i名的后缀的位置是多少void getsa(){ for(int i=1;i<=n;i++)++c[x[i...原创 2019-07-24 23:12:33 · 101 阅读 · 0 评论 -
treap平衡树练习
平衡树就是左旋右旋的一种树,赵老师讲数据结构的时候一直没实现,觉得很简单。结果是很简单,但是,,代码量有点不敢恭维。下面是一个大神的板子。自己敲了一遍。#include <bits/stdc++.h>using namespace std;#define maxn 100010#define INF 0x7fffffffstruct treapNode { ...原创 2019-07-25 19:43:53 · 181 阅读 · 2 评论 -
【模板】线性基
#include<bits/stdc++.h>using namespace std;#define LL long longLL p[70],ans,n,x;int main(){ scanf("%lld",&n); while(n--){ scanf("%lld",&x); for(int i=60;i>...原创 2019-07-22 17:07:32 · 83 阅读 · 0 评论 -
后缀自动机之统计子串相同个数
这个东西太难理解了,自己投入了大概,,,20个小时,三天。但是学会之后就觉得是个渣渣,建议大家去洛谷看例题和博客。推荐一个博客 https://www.luogu.org/blog/Kesdiael3/hou-zhui-zi-dong-ji-yang-xie我只读了6遍,就读懂了。先做一个笔记:简述自动机构造过程,一开始有个空状态,然后添加字符,然后从长到...原创 2019-07-27 13:25:48 · 379 阅读 · 0 评论 -
后缀自动机之统计不同子串个数
题目背景因为NOI被虐傻了,蒟蒻的YJQ准备来学习一下字符串,于是它碰到了这样一道题:题目描述给你一个长为N的字符串,求不同的子串的个数我们定义两个子串不同,当且仅当有这两个子串长度不一样 或者长度一样且有任意一位不一样。子串的定义:原字符串中连续的一段字符组成的字符串输入格式第一行一个整数N接下来一行N个字符表示给出的字符串输出格式一行一个整数,表示不一样...原创 2019-07-27 14:32:30 · 645 阅读 · 0 评论 -
2019HDU多校第一场 1009 String
Problem DescriptionTom has a string containing only lowercase letters. He wants to choose a subsequence of the string whose length iskand lexicographical order is the smallest. It's simple and he ...原创 2019-07-23 13:35:52 · 461 阅读 · 0 评论 -
线性基+查询集合空间是否含有x
一个线性基模板题:给出一组数,给出x,y,查询这组数能否和 x 异或得到 y。设我们这组数能异或出来z x^z=y, 那么x^y =z ,这样我们就转化为: 能否异或出x^y.模板题;题目连接:https://ac.nowcoder.com/acm/contest/180/D?&headNav=wwwAC代码:#include<bits/stdc++.h&g...原创 2019-07-23 14:30:46 · 148 阅读 · 0 评论 -
2019HDU多校第一场 1009 String 线性基+历史版本更新
这个题的意思是,任意给你区间,然后求区间的异或和最大值。和线性基模板不一样,这个是任意区间!!题目:http://acm.hdu.edu.cn/showproblem.php?pid=6579如果按照模板做法,对每个区间遍历一遍然后去求(线性基不支持删除操作)。那么,N方的复杂度就会爽歪歪。看了题解:是使用一个pos记录线性基的每个元素的历史版本是多少,使一个二维数组记录每个历史版...原创 2019-07-23 15:33:28 · 168 阅读 · 0 评论 -
扩展KMP模板(下标从0开始)
题目描述有两个字符串aa,bb,要求输出bb与aa的每一个后缀的最长公共前缀输入格式两行,分别为两个字符串aa,bb输出格式共两行第一行有lenb个数,为b的next数组(特别地,next_{1}next1为lenb)第二行有lena个数,即答案输入输出样例输入 #1复制aaaabaaaaaaa输出 #1复制5 4 3 2 14 3 2 1...原创 2019-08-05 15:40:47 · 347 阅读 · 0 评论 -
后缀自动机之lcs
题意,给定两个字符串,求他们的最大的连续公共子串的长度是多少,数据范围是1--n以前有一个DP思路,但是今天可以使用后缀自动机来写。首先对其中一个串a构造后缀自动机,然后就跑每个后缀,如果匹配上了,就后缀加上一个字符,如果匹配不上就匹配更短的后缀题目:https://www.spoj.com/problems/LCS/en/#include <cstdio>#inc...原创 2019-07-27 19:11:39 · 271 阅读 · 0 评论 -
后缀数组之寻找最大相同子串 poj3216
题意:给一个串,求出最长的那个相同的子串这个题使用后缀自动机是,首先给每个节点siz赋值为1 ,然后遍历,更新最大的长度。如果有某个串的个数不为1 ,就更新长度,使用后缀数组是:求出height,然后对答案二分,枚举答案,在判断答案是否满足条件后缀数组代码:#include<iostream>#include<cstdio>#incl...原创 2019-07-28 15:02:06 · 146 阅读 · 0 评论 -
楼爷八题值poj1743
mmp什么二分 也太难了先记着,回来再写。。。。。wa了30几发,每天早上醒来都要敲一遍这个题,真是怀疑人生。连续5天,后来发现GCC不能过,C++可以???这,,,,mmp#include<iostream>#include<cstdio>using namespace std;const int M=3e5+7;in...原创 2019-07-28 16:09:58 · 141 阅读 · 0 评论 -
线段树区间最大连续区间和 模板
题目背景小新经常陪小白去公园玩,也就是所谓的遛狗啦…题目描述在小新家附近有一条“公园路”,路的一边从南到北依次排着nn个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了。一开始,小白就根据公园的风景给每个公园打了分-.-。小新为了省事,每次遛狗的时候都会事先规定一个范围,小白只可以选择第aa个和第bb个公园之间(包括aa、bb两个公园)选择连续的一些公园玩。小白当然希望选出的公...原创 2019-08-08 14:21:53 · 83 阅读 · 0 评论 -
P3674 小清新人渣的本愿 主席树+bitset
题目描述这个题是这样的:给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3选出的这两个数可以是同一个位置的数输入格式第一行两个数n,m后面一行n个数表示ai后面m行每行四个数opt l r xopt...原创 2019-08-19 11:31:29 · 135 阅读 · 0 评论 -
树的同构
这里给出一种O(N)判断两棵树是否同构的方法:首先找出两个树的重心,然后对这个重心进行树的哈希。然后比对哈希结果,没有找到例题,但是有一个判断多棵树是否同构的例题,因为数据范围小,没有找重心,直接n2哈希的。洛谷:树的同构#include<bits/stdc++.h>using namespace std;const long long maxn=1001;lo...原创 2019-08-09 17:13:20 · 258 阅读 · 0 评论 -
后缀数组DC3 模板
#include<cstdio>#include<algorithm>#include<queue>#include<iostream>#include<cmath>#include<cstring>using namespace std;#define F(x) ((x)/3+((x)%3==1?0:tb))...原创 2019-08-09 17:42:19 · 382 阅读 · 0 评论 -
有向树同构 括号序列
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <string>using namespace std;int n,mn,m,cnt;int bel[55],siz[55],to[110],next[110...原创 2019-08-14 22:46:03 · 108 阅读 · 0 评论 -
树链剖分
自己码力好弱,,洛谷:树链剖分模板#include<bits/stdc++.h>using namespace std;const int M=1e5+10;int n,m,r,cnt,p,tot,d[M],head[M<<1],siz[M],dep[M],son[M],fa[M],top[M],id[M],rk[M];struct Edge{ int n...原创 2019-08-20 00:48:40 · 72 阅读 · 0 评论 -
后缀数组 hdu6661 Acesrc and String Theory
Problem DescriptionAcesrc is a famous string theorist at Nanjing University second to none. He insists that we should always say an important thingktimes. He also believes that every string that c...原创 2019-08-15 16:42:56 · 393 阅读 · 0 评论 -
字符串哈希 hdu1880
魔咒词典Time Limit: 8000/5000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16888Accepted Submission(s): 3995Problem Description哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世...原创 2019-08-16 13:31:16 · 71 阅读 · 0 评论 -
字符串hash 洛谷3370
题目描述如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字、大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串。#友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:)输入格式第一行包含一个整数N,为字符串的个数。接下来N行每行包含一个字符串,为所提供的字符串。输出格式输出包含一行,包含一个整数,为不同的字符串个数。输入输...原创 2019-10-15 13:01:18 · 184 阅读 · 0 评论 -
字符串各种hash函数
附:各种哈希函数的C语言程序代码unsigned int SDBMHash(char *str){ unsigned int hash = 0; while (*str) { // equivalent to: hash = 65599*hash + (*str++); hash = (*str++) + (hash <<...原创 2019-08-16 14:12:41 · 123 阅读 · 0 评论 -
树形依赖背包
例题:洛谷2014 选课题目描述在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有N门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程a是课程b的先修课即只有学完了课程a,才能学习课程b)。一个学生要从这些课程里选择M门课程学习,问他能获得的最大学分是多少?输入格式第一...原创 2019-08-13 10:29:40 · 144 阅读 · 0 评论 -
分治算法
可能我太菜了 ,众多题解 的t0*t0 +t1*t2*2始终没看懂分治大模拟好!#include<bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 1000000000;const int M=20010;struct Node{ int next,to,w;}e[M...原创 2019-08-18 09:56:11 · 92 阅读 · 0 评论 -
分块根号
题目背景此题约为NOIP提高组Day2T2难度。题目描述众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。B君会给定许多个p和x,询问在模p时,x这个池内**数的总和**。...原创 2019-08-29 16:06:54 · 96 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 A.Hard to prepare 【规律递推】
t题意:就是有n个人围成圈,每个人能选择顶不同的帽子,但是相邻两个人选择的帽子的编号不能同或为0,问有多少种方案联想 + 推理我们假设有 颗珠子, 我们不考虑开头 对末尾的限制, 只是考虑 对 的限制,答案就是 , 这些情况是多了的,多了 这种情况, 然后我们再来计算这种情况有多少?现在的条件 是 已知 第一个是 , 最后一个是, 问一共有多少种方案。我们先考虑简...原创 2019-08-29 20:29:46 · 104 阅读 · 0 评论 -
AC 自动机 输出 出现次数最多的模式串
有NN个由小写字母组成的模式串以及一个文本串TT。每个模式串可能会在文本串中出现多次。你需要找出哪些模式串在文本串TT中出现的次数最多。输入格式输入含多组数据。每组数据的第一行为一个正整数NN,表示共有NN个模式串,1 \leq N \leq 1501≤N≤150。接下去NN行,每行一个长度小于等于7070的模式串。下一行是一个长度小于等于10^6106的文本串TT。输入结束标...原创 2019-08-29 21:58:32 · 278 阅读 · 0 评论 -
后缀数组之多串公共子串长度
码力很差 但是还是写出来了,用时 一个小时40分钟。有点激动写个博客记录一下~果然越枯燥越写不出来,和同学边聊天边写,还是有效率,lf同学真是幸运星,哈哈哈哈,题目:题目描述Sandy和Sue的热衷于收集干脆面中的卡片。然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型。每一张卡片都由一些数字进行标记,第i张卡片的...原创 2019-08-30 21:35:41 · 93 阅读 · 0 评论 -
分块+二分
这是令人难忘的一个晚上一个区间加1 然后求中位数的题,二分T了 原因是每次只是加1 不用每次都二分答案。https://vjudge.net/contest/324061#problem/F代码:#include<bits/stdc++.h>using namespace std;int n,m,blo;int a[60065],l[600],r[6...原创 2019-09-03 22:43:41 · 144 阅读 · 0 评论 -
01字典树 之 求树上最长异或路径
题目描述给定一棵 n 个点的带权树,结点下标从 1 开始到 N 。寻找树中找两个结点,求最长的异或路径。异或路径指的是指两个结点之间唯一路径上的所有边权的异或。洛谷:4551 最长异或路径思路,首先dfs处理出每个点到 根 的距离然后将这些距离存在字典树中,然后对于每个距离查询字典树,得到最优值注意:字典树一维空间大小。#include<bi...原创 2019-09-04 16:46:07 · 478 阅读 · 0 评论 -
差分数组
#include<bits/stdc++.h>using namespace std;#define ll long longconst int M=1e6+50;ll n,op,mi,mx,mod,fina,d[M],pre[M];int main(){ scanf("%lld%lld%lld%lld%lld",&n,&op,&mod,&a...原创 2019-09-04 20:07:22 · 90 阅读 · 0 评论 -
P2486 [SDOI2011]染色 树剖
刚刚还给征宇讲:我他妈最讨厌这样贼长的代码了,思路很清晰,样例数据也能过,但是就是wa幸福来得有点猝不及防~一发AC#include<bits/stdc++.h>using namespace std;const int M=1e5+50;struct Edge{int to,next;}e[M<<1];struct Node{int...原创 2019-09-06 18:07:18 · 126 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Xuzhou 2019 I. query
给你一组n个数字,这些数字是1~n的一个排列。现在有很多个询问,询问给定一个区间,问区间内有多少个整除对。说实话,根本想不到是用树状数组的题目……求整除对,怎么都像是数论的题目,为什么和树状数组有关。后来才知道统计的力量!首先,我们设sum[i],表示区间[1,i]的整除对数量,自然而然的,我们就会认为对于区间[l,r],它的整除对数量可能是sum[...原创 2019-09-07 21:29:35 · 395 阅读 · 0 评论 -
2019银川网络赛 A. Simple Data Structures
宁夏理工办这个网络赛体验真心不好,讲题,DescriptionYou've got an array a, consisting of n integers a1,a2,...,an. You are allowed to perform four operations on this array:l r: Calculate the sum of current array e...原创 2019-09-08 21:43:38 · 416 阅读 · 4 评论 -
带修主席树
题意:求区间内 满足x<=a[i]<=y的区间段的个数。https://nanti.jisuanke.com/t/41356使用带修主席树会T。但是这个板子好像很好写,很好用,记下来//solve by fcy 13:02:35#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) f...原创 2019-09-09 14:58:34 · 132 阅读 · 0 评论 -
带修主席树
板子大概这个样子,没有交,今天有点累,不想debug了#include<bits/stdc++.h>using namespace std;const int M = 1e5+50;struct Node{int l,r,sum;}t[M*400];struct QUE{int id,op,i,j,k;}q[M];int n,m,a[M],b[M<<1],t...原创 2019-09-09 15:52:58 · 263 阅读 · 0 评论