自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Manacher模板

出处:http://blog.csdn.net/dyx404514/article/details/42061017const int maxn=1000010;char str[maxn];//原字符串char tmp[maxn<<1];//转换后的字符串int Len[maxn<<1];//转换原始串int INIT(char *st){ int i,len=strle

2018-02-04 10:47:55 122

原创 Trie树模板

#define idx(x) x-'a'; //小写字母 const int MAXN=1e6; //最大节点数 struct Trie{ int next[26]; //限于小写字母或大写字母 int val;}tree[MAXN];int nxt,T;int Add() //分配数组地址 { memset(&tree[nxt],0,sizeof(Trie)); ret

2018-02-04 10:24:38 189

原创 POJ-3376 Finding Palindromes

题目链接:https://vjudge.net/problem/POJ-3376很不错的一道题,对我来说挺有难度,写起来很有感觉先说题意,给出很多字符串,比如有n个,它们两两组合可以形成n*n个字符串,求其中有多少个是回文串要用到扩展kmp和trie树两个东西先把所有给出的字符串组成一个Trie树,中间要加一些数据,后面再说再用所有字符串的转置去匹配比如说abc和ba这两个

2018-02-04 10:20:17 480

原创 HDU-3613 Best Reward

题目链接:https://vjudge.net/problem/HDU-3613参考别人的做法:https://www.2cto.com/kf/201211/165735.html#include#include#include#include#includeusing namespace std;const int N=5*1e5+10; //文本串长度const int

2018-02-03 13:32:13 336

原创 POJ-3746 Teacher YYF

题目链接:https://vjudge.net/problem/POJ-3746这道题有很复杂的处理,看了别人写的,要不是写的很长很复杂,要不是纯暴力打表(400多行)我这里试了下从一层一层结构来解析句子,比较简单,也秒A了#include#include#include#include#include#include#includeusing namespace std

2018-02-03 10:29:40 547 1

原创 UVALive-6929 Sums

题目链接:https://vjudge.net/problem/UVALive-6929一道数学题,我按加数个数一个一个试除找答案做的,具体看代码#include#include#include#include#includeusing namespace std;int main(){ int T,n; scanf("%d",&T); while(T--) {

2018-02-02 21:11:30 232

原创 HDU-2609 How many

题目链接:https://vjudge.net/problem/HDU-2609这道题一看就很容易想到用最小表示法,把每个串都字典序最小化,再判重判重的方法一开始没有想到,后来知道了可以先排序再去重,也可以直接用set去重这里用set明显更方便,时间上也没问题#include#include#include#include#include#includeusing na

2018-02-02 19:41:15 169

原创 HDU-3374 String Problem

题目链接:https://vjudge.net/problem/HDU-3374这道题用最大/最小表示法和next数组做最大/最小表示法就是求循环字符串最大/最小字典序的那一个再利用next数组求出字符串循环节,就是题目所求出现次数#include#include#include#include#includeusing namespace std;const int

2018-02-02 19:15:54 148

原创 HDU-2328 Corporate Identity

题目链接:https://vjudge.net/problem/HDU-2328还是在多个字符串中寻找最长公共子串从第一个字符串里找子串和其他字符串匹配,有多个最长的输出字典序最小的#include#include#include#include#includeusing namespace std;const int N=200+10; //文本串长度 const in

2018-02-02 16:28:20 183

原创 HDU-1238 Substrings

题目链接:https://vjudge.net/problem/HDU-1238在多个字符串中寻找最长公共子串,反向的也算还是从第一个字符串里找子串和其他字符串匹配,如果匹配不到可以再试试反向匹配找到最长的那个#include#include#include#include#includeusing namespace std;const int N=100+10; /

2018-02-02 14:52:49 101

原创 HDU-4300 Clairewd’s message

题目链接:https://vjudge.net/problem/HDU-4300这道题理解了题意就容易想思路了,我看了别人的题解才理解了题意:题目大意:发送一个密文,为字符串S。这段密文的前半部份是加密过的,后半部分是没有加密过的。现在这段密文被截获,但是密文的尾部的一部份损失了。例如,假设密文是xxxxzzzz, xxxx是加密过的,zzzz是没加密的,因为损失了

2018-02-02 12:26:07 214

原创 扩展KMP模板

const int N=1e5+10; //文本串长度const int M=1e5+10; //模式串长度char a[N]; //文本串char b[M]; //模式串int next0[M],extend[N];void get_next() { int len=strlen(b); next0[0]=len; int i=0; while(i<l

2018-02-02 12:18:21 145

原创 HDU-3336 Count the string

题目链接:https://vjudge.net/problem/HDU-3336利用扩展kmp的extand数组,extand[i]是几就代表这里有几个前缀匹配,只要都加起来就好,记住取余#include#include#include#include#include#includeusing namespace std;const int N = 200010;const

2018-01-16 19:49:47 179

原创 HDU-2549 Simpsons’ Hidden Talents

题目链接:https://vjudge.net/problem/HDU-2594用扩展kmp算法做#include#include#include#include#include#includeusing namespace std;const int N = 50010;int next0[N],extand[N];void getnext(char *T){// ne

2018-01-16 19:33:54 118

原创 POJ-3080 Blue Jeans

题目链接:https://vjudge.net/problem/POJ-3080给出最多10个字符串,每个串有60个字符,求这些串的最长公共子串,如果有多个,输出字典序最小的用kmp+暴力,枚举第一个字符串的所有子串,然后用kmp和其他串匹配#include#include#include#include#includeusing namespace std;const i

2018-01-15 20:22:33 191

原创 POJ-2752 Seek the Name, Seek the Fame

题目链接:https://vjudge.net/problem/POJ-2752#include#include#include#include#includeusing namespace std;const int N=400000+10; char b[N];int next0[N]; void find_next(){ int len=strlen(b); i

2018-01-15 19:33:23 106

原创 POJ-2406 Power Strings

题目链接:https://vjudge.net/problem/POJ-2406利用next数组寻找字符串循环节#include#include#include#include#includeusing namespace std;const int N=1000000+10; char b[N];int next0[N]; void find_next(){ in

2018-01-11 19:48:25 97

原创 HDU-1358 Period

题目链接:https://vjudge.net/problem/HDU-1358利用next数组找循环节,判断字符串每个前缀是否有一个以上的循环节构成,如果是输出位置及循环次数#include#include#include#include#includeusing namespace std;const int N=1000000+10; char b[N];int ne

2018-01-11 19:33:52 152

原创 HDU-3746 Cyclic Nacklace

题目链接:https://vjudge.net/problem/HDU-3746这道题利用了KMP里next数组的性质#include#include#include#include#includeusing namespace std;const int N=100000+10; char b[N];int next0[N]; void find_next(){

2018-01-11 19:12:58 113

原创 HDU-2087 剪花布条

题目链接:https://vjudge.net/problem/HDU-2087修改下KMP就可以做了,这个数据量直接暴力估计也没问题(可以试下)#include#include#include#include#includeusing namespace std;const int N=1000+10; const int M=1000+10; char a[N], b[

2018-01-10 20:57:38 115

原创 KMP模板

const int N=1e6+10; //文本串长度 const int M=1e4+10; //模式串长度 char a[N]; //文本串 char b[M]; //模式串 int next0[M]; void find_next(){ int len=strlen(b); int k=-1; next0[0]=-1; int j=0; while(j&lt;len)...

2018-01-10 20:41:18 174

原创 HDU1686 Oulipo

题目链接:https://vjudge.net/problem/HDU-1686查询模式串在文本串中出现几次,改动下KMP就可以#include#include#include#include#includeusing namespace std;const int N=1e6+10;const int M=1e4+10;char a[N],b[M];int next0[

2018-01-10 20:37:10 204

原创 HDU-1875 畅通工程再续

题目链接:https://vjudge.net/problem/HDU-1875先用坐标计算两两点之间的距离,只保存>=10&&再用最小生成树Kruskal过一遍就可以了#include#include#include#include#includeusing namespace std;const int MAXN=100+10;//点数const int MAXM=1

2018-01-09 21:07:09 111

原创 HDU-1233 还是畅通工程

题目链接:https://vjudge.net/problem/HDU-1233最小生成树模板题#include#include#include#include#includeusing namespace std;const int MAXN=100+10;//点数const int MAXM=10000+10;//边数int UF[MAXN];struct Edge

2018-01-09 20:51:49 157

原创 POJ-1679 The Unique MST

题目链接:https://vjudge.net/problem/POJ-1679问最小生成树是否唯一,唯一输出答案,否则输出Not Unique!先用Kruskal走一遍,把用到的边都记录下来,后面一条一条排除再Kruskal如果得出的答案和原来的相同,说明不唯一 还可以求出最小生成树,再求次小生成树,看花费是否相等,相等及不唯一Kruskal方法#include&l...

2018-01-09 20:50:27 76

原创 POJ-3026 Borg Maze

题目链接:https://vjudge.net/problem/POJ-3026把'S'或'A'都看成一个点,先用BFS求出所有点两两之间距离,保存起来再用最小生成树算法求出答案,输入有坑,输入n和m时需要这样scanf("%d%d\n",&m,&n);#include#include#include#include#include#includeusing namespa

2018-01-09 20:46:57 138

原创 POJ-1258 Agri-Net

题目链接:https://vjudge.net/problem/POJ-1258最小生成树模板题,不多说,这里用Prim#include#include#include#include#include#includeusing namespace std;const int MAXN=100+10;const int INF=0x7f7f7f7f;int dis[MAXN

2018-01-06 17:06:54 119

原创 POJ-1751 Highways

题目链接:https://vjudge.net/problem/POJ-1751给出n个点坐标,还有m条已经相连的边,按顺序输出构建最小生成树所需要连的边(没有固定样子,按权值从小到大排好就行)已经相连的点先用并查集标记,再用Kruskal连接剩下的边#include#include#include#include#includeusing namespace std;co

2018-01-05 17:13:56 226

原创 POJ-2349 Arctic Network

题目链接:https://vjudge.net/problem/POJ-2349题目大意:国防部(DND)要连接到无线网络北部几个据点。两种不同的通信技术将用于建立网络:每个前哨站都有无线电收发机,一些前哨站还将有一个卫星通道。任何两个带有卫星信道的前哨站都可以通过卫星进行通信,而不管其位置如何。否则,两个前哨站只能通过无线电进行通信,如果它们之间的距离不超过D,这取决于收发器的功率。高功率会

2018-01-05 16:48:09 202

原创 POJ-1789 Truck History

题目链接:https://vjudge.net/problem/POJ-1789一开始看这道题是一脸懵(英文水平有待提高),后来去搜了下题解,懂了题意就很简单了题意大概是这样的:用一个7位的string代表一个编号,两个编号之间的距离就是这两个编号之间不同字母的个数然后就是求n个编号的最小生成树,我用了Kruskal,一开始TLE,做了些常数优化就AC了以后碰到数据量大的要注意尽量

2018-01-05 16:18:47 147

原创 ZOJ-1586 QS Network

题目链接:https://vjudge.net/problem/ZOJ-1586这道题就是题意难理解一些,题目的意思是每个人有一个路由器,第二行给出的n的数代表的意思是n个人的路由器需要花多少钱然后给出两两之间花费的矩阵,另外注意一点是:每两点建立时的花费为两点的网线钱和两个路由器的花费 #include#include#include#include#includeusin

2018-01-04 20:18:35 113

原创 POJ-2421 Constructing Roads

题目链接:https://vjudge.net/problem/POJ-2421最小生成树问题,先给出图的邻接矩阵,再给出已经两两相连的点,求最小生成树的花费把下三角矩阵的边加入边集,已经相连的点用并查集标记,再用Kruskal做就可以了#include#include#include#include#includeusing namespace std;const int

2018-01-04 18:12:55 147

原创 POJ-2031 Building a Space Station

题目链接:先计算出每两个cells之间的距离(空间距离-两站半径),如果小于0算做0,再加入边集,用Kruskal做

2018-01-03 19:53:03 108

原创 POJ-1287 Networking

题目链接:https://vjudge.net/problem/POJ-1287最小生成树,点最多50,边却没有限制,按理说应该用Prim+邻接矩阵也可以先用邻接矩阵保存两点间最小边,再加入边集,再用Kruskal做这里用了后者#include#include#include#include#includeusing namespace std;const int MA

2018-01-03 19:09:51 142

原创 Kruskal模板

const int MAXN=100+10;const int MAXM=10000+10;int UF[MAXN];struct Edge{ int u,v,w;}edge[MAXM];int tol; //初始化为0 void addedge(int u,int v,int w){ edge[tol].u=u; edge[tol].v=v; edge[tol++].w=

2018-01-02 21:16:54 201

原创 POJ-1251/HDU1301 Jungle Roads

题目链接:https://vjudge.net/problem/POJ-1251一道简单的最小生成树模板题,要注意下字符的读入处理#include#include#include#include#includeusing namespace std;const int MAXN=27+2;const int MAXM=75+5;int UF[MAXN];struct

2018-01-02 21:14:39 178

原创 POJ-3169 Layout

题目链接:https://vjudge.net/problem/POJ-3169思路:http://blog.csdn.net/zhang20072844/article/details/7788672差分约束,负环,SPFA#include#include#include#include#include#includeusing namespace std;typede

2018-01-02 20:40:10 119

原创 HDU-4370 0 or 1

题目链接:https://vjudge.net/problem/HDU-4370这道题主要是思维转化,将看起来没什么关系的转化为图论问题输入n,代表有n个点,以下三个条件,可以看做1.X 12+X13+...X 1n=1 必须要从1点出去一次,也就是1要做起点2.X 1n+X 2n+...Xn-1n=1 必须要进入n点一次 ,也就是n要做终点3.for each

2017-12-17 19:40:36 310

原创 HDU-3416 Marriage Match IV

题目链接:https://vjudge.net/problem/HDU-3416这道题是要找到源点到汇点的所有最短的路径,然后是每条边只能走一次,问走最短路最多能从源点到汇点走几次要用到两个算法,一是最短路spfa,二是最大流sap找到所有最短路中有用的边的方法是,从源点和汇点各进行一次spfa,保存最短距离到dist1和dist2边两边的点为a,b,权值为c,源点A,汇点B然...

2017-12-17 15:40:07 120

转载 SAP最大流模板

转自kuangbin代码//最大流SAPstruct Node{ int to,next,cap;}edge[MAXM];int tol;int head[MAXN];int gap[MAXN],dis[MAXN],pre[MAXN],cur[MAXN];void init(){ tol=0; memset(head,-1,sizeof(head));

2017-12-17 15:28:35 249

空空如也

空空如也

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

TA关注的人

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