为你推荐

HDU-5968异或密码

超级传送门题目描述:晨晨在纸上写了一个长度为N的非负整数序列{ai}。对于这个序列的一个连续子序列{al,al+1,…,ar}晨晨可以求出其中所有数异或的结果 alxoral+1xor...xorar其中xor表示位异或运算,对应C、C++、Java等语言中的^运算。小璐提出了M个询问,每个询问...
代码星球·2020-07-18

Maximum Value(unique函数,lower_bound()函数,upper_bound()函数的使用)

传送门在看大佬的代码时候遇到了unique函数以及二分查找的lower_bound和upper_bound函数,所以写这篇文章来记录以备复习。unique函数在STL中unique函数是一个去重函数,unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除,是把重复的元素移到后面去了,然后依...

博弈结论记录

一、巴什博奕:只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。结论:见代码1#include<iostream>2#include<cstdio>3#include<cmath>4#include<cstring>5#defineFR...
代码星球·2020-07-18

KMP算法模板

sub[]代表子串,str[]代表原串,next[]代表当sub[i]!=str[j]时,子串需要跳到的地方,实现代码如下:获取next数组的代码:1voidGetNext()//求子串中的相同的真前缀和真后缀2{3memset(next,0,sizeof(next));4next[0]=-1;5inti=0,j=-1...
代码星球·2020-07-18

康拓展开

原理:举个例子来说明康拓展开的应用:已知1,2,3,4,5五个数的全排列,给出一个排列34152,问该排列在全排列中是第几个。而康托展开的值就是这个排名。首位是3,比它小而且没有出现过的数有1,2两个,所以为     2*4!;第二位是4,比它小而且没有出现过的数有1,...
代码星球·2020-07-18

字典树模板

查找该字符串是不是已经出现过1//在给出的字符串中查找当前字符串是否出现过2#include<iostream>3#include<cstring>4#include<algorithm>5#include<cstdio>6#include<cmath>7#i...
代码星球·2020-07-18

树状数组模板

用树状数组,在存数据的时候下标应该是从1开始的;再求区间的和的时候和前缀和一样开始的下标是要减一的;toSum(intx)中再求前缀和的时候是倒着向前走的;  树状数组讲解:http://www.cnblogs.com/jinkun113/p/4725420.html  ORZo...
代码星球·2020-07-18

Dijkstra算法模板

自己对Dijstra算法的理解是:首先输入保存点,边的权值(注意无向图和有向图在保存时的区别)。将表示从起点st到顶点i的距离的d[i]数组的每一个值初始化为INF,令d[st]=0。 遍历d[]数组的下标i(即顶点i)这个操作是通过优先队列来实现的,然后遍历以顶点i为起点的边,更新d[i]的最小值。最后直接...
代码星球·2020-07-18

弗洛伊德算法模板

可以求得任意两点之间的最短路问题1intd[maxn][maxn];//d[st][en]表示边e={u,v}的权值(不存在时设为INF,d[i][j]=0)2intV;//顶点的个数34voidFloyd()5{6for(intk=0;k<V;k++)7for(inti=0;i<V;i++)8for(in...
代码星球·2020-07-18

匈牙利算法求最大匹配(HDU-4185 Oil Skimming)

如下图:要求最多可以凑成多少对对象大佬博客:https://blog.csdn.net/cillyb/article/details/55511666https://blog.csdn.net/denghecsdn/article/details/77619308https://www.cnblogs.com/wang...

Cat VS Dog HDU_3829(最大独立集最大匹配)

CatVSDog题意:一群小朋友去动物园,如果每个小朋友喜欢的动物是猫,那么不喜欢的动物一定是狗,反之也是。现在动物园的管理者要拿走一些动物,如果拿走的是某个小朋友不喜欢的动物,那这个小朋友就非常开心,反之,如果是某个小朋友喜欢的动物,这个小朋友就非常的不开心,问那完后最多有几个小朋友会非常开心。暑假最后一场个人赛,可...
代码星球·2020-07-18

UVA1001 Say Cheese(Dijkstra或Floyd)

题目链接:UVA1001题意:在一个巨大奶酪中的A要以最短的时间与B相遇。在奶酪中走一米的距离花费的时间是10s,而奶酪中有许多洞,穿过这些洞的时间是0s。给出A、B以及各个洞的坐标,求最短的时间。三维??乖乖,这怎么用最短路算法。在搜了题解后才知道可以编号压缩成二维啊,这操作骚气,实在想不出来啊!!思路:将起点,终点...

UVA1395 Slim Span(kruskal)

题目:SlimSpanUVA1395题意:给出一副无向有权图,求生成树中最小的苗条度(最大权值减最小权值),如果不能生成树,就输出-1;思路:将所有的边按权值有小到大排序,然后枚举每一条边,以这条边开始利用Kruskal算法生成树,生成过程中求出权值的最大值,这个最大值减去当前枚举的边的权值就是苗条度,再动态维护一下最...
代码星球·2020-07-18

UVALive 3026(KMP算法)

UVALive3026   KMP中next[]数组的应用;题意:给出一个字符串,问该字符串每个前缀首字母的位置和该前缀的周期。思路:裸KMP直接上就是了;设该字符串为str,str字符串的长度为len,next[]的有关前缀的周期的性质:如果len%(len-next[len])=&nb...
代码星球·2020-07-18

HDU 4027(线段树)

HDU4027题意:操作指令为0时,对区间[x,y]之间的数字进行开平方;指令为1的时候,对区间[x,y]之间的数字求和并输出;思路:线段树处理就OK了,但是64位内的数最多开8次平方就为1了(开始不信,试了试之后orz.......),所以在开平方的时候加一下限制条件使开平方操作提前结束没必要的操作就可以了,不然会超...
代码星球·2020-07-18