![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
hdu代码
杭电oj上的一些题
NeverMoreH
^_^
展开
-
hdu5371(O(n)求回文子串的相关问题)
题意:给出一个最多有10^5次方个数字的序列,找出其中最长的N-sequence的长度。N-sequence的定义如下:找出原串中的一个连续的子串,分成相等的三部分,第一部分和第二部分要形成一个回文串,第二部分和第三部分要形成一个回文串,第一部分要和第三部分相等。思路:我们先用manacher算法在O(n)的时间内求出所有的以第i位为回文串中心的回文串的长度,然后找出每一个原创 2015-08-11 20:05:37 · 500 阅读 · 0 评论 -
hdu5489(2015合肥网络赛F题)
转载自:http://blog.csdn.net/lwt36/article/details/48774103题意:给出一个数列,在其中删除连续的L个数字,使得剩余的数字LIS最大,输出此LIS。思路:nlogn的LIS+线段树。代码://#pragma comment(linker, "/STACK:1024000000,1024000000")转载 2015-09-28 20:45:07 · 405 阅读 · 0 评论 -
hdu5438(2015长春网络赛B题)
题意:有n个池塘、m个管道,每个池塘有权值,m个管道用来连接池塘(无向边),我们要把度小于2的池塘删除,统计每个包含池塘数是奇数的连通分量的权值并输出。思路:拓扑排序之后,删点,然后dfs一遍就好了。因为用int没用long long WA了一次。代码;#include #include #include #include using namespace原创 2015-09-14 10:11:21 · 421 阅读 · 0 评论 -
hdu5441(2015长春网络赛E题)
题意:给出一个n个点、m条边的无向图,边上有权值,有q组询问,每组询问给出一个数字x,我们要在图中找出‘点对’的个数,这些‘点对’(例如a,b)满足从a到b有一条路径经过的每一条边都要小于x,输出每组询问点对的数量。思路:并查集。我们把查询操作离线化,把边按权值从小到大排序,把查询操作也从小到大排序,每次查询操作都扫一遍边,判断满足的边的端点在不在同一个并查集中,如果不在就原创 2015-09-14 11:24:17 · 355 阅读 · 0 评论 -
hdu5437(2015长春网络赛A题)
题意:有一个party,会有n个人来,每个人都带着礼物来,礼物有权值,由于屋子的大小有限,所以他会选择k个时间来开门,在t时间让p个人进来,接下来有q组询问,每组询问有一个数字ni,让你输出第ni个进入的人是谁。思路 :使用优先队列,自己定义一下优先级就好,因为cin和scanf混用我们TLE一次,这是个教训。代码:#include#include#incl原创 2015-09-14 10:02:57 · 531 阅读 · 0 评论 -
hdu5443(2015长春网络赛G题)
题意:一个数列,求从L到R的最大值。思路:不多说。。。代码:#include#includeint a[20000];int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(in原创 2015-09-14 10:17:15 · 358 阅读 · 0 评论 -
hdu5444(2015长春网络赛H题)
题意:给出一棵树的描述,这棵树构造出来,满足从右到左数值递增,根在最下面,然后有一些询问x,我们要输出从根走到x的路径,w:向左、e:向右。思路:建树的时候,首先第一个点一定是根,然后比根小的建在根的右边,反之建在左边,就可以了。代码:#include #include #include #include using namespace std;co原创 2015-09-14 10:21:33 · 989 阅读 · 0 评论 -
hdu5446(2015长春网络赛J题)
题意:求C(n,m)%(p1*p2*......pk),其中,p1*p2*......pk都是素数。思路:不会。。。数论是渣,赛后知道是Lucas定理+中国剩余定理。代码:#include#include#includeusing namespace std;const int maxn=100005;long long fac[maxn],in原创 2015-09-15 16:11:34 · 397 阅读 · 0 评论 -
uvalive4744(数论)
题意:给出题意中那么个函数,给出a、b、p、n,求函数调用的次数(mod p)。思路:能很容易看出来a和b的阶数是斐波那契数,n过大,用矩阵快速幂求斐波那契数,然后用欧拉函数进行取模的优化。代码:#include#include#include#includeusing namespace std;#define maxn 1000050long原创 2015-10-04 19:39:09 · 491 阅读 · 0 评论 -
hdu5442(2015长春网络赛F题)
题意:给出一个字符串,只由‘a’~‘z'组成,字符串是一个首尾相接的串。我们要找到一个起点,顺时针或者逆时针的读这个串,找到字典序最大的读法,如果有多种,输出起点坐标小的那个,如果起点坐标一样,输出顺时针的那个。思路:把串变成倍长的,反着再处理一次。坑死我了。。。用罗穗骞的da算法超时,用dc3RE,用了个网上找的,过了。代码:#include #incl原创 2015-09-17 17:01:15 · 448 阅读 · 0 评论 -
hdu5455(2015沈阳网络赛F题)
题意:给出一个串,问用题中定义的那些串来组成这个串最少要用多少个。思路:没啥说的,注意一下输入的串中可能出现除了c和f的字母。代码:#include#include#include#include#include#include#include#include#include#include#include#includeusing n原创 2015-09-21 21:20:25 · 463 阅读 · 0 评论 -
hdu5459(2015沈阳网络赛J题)
题意:给出一个类似于斐波那契数组的字符串的定义,给出一个n,让求第n个串中任意两个c的距离的和。思路:我们用了三个小时找规律,最后发现是递推。。。代码:#include#include#include#include#include using namespace std;const int maxn = 20005;const int maxm原创 2015-09-21 21:14:24 · 423 阅读 · 0 评论 -
hdu5452(2015沈阳网络赛C题)
题意:给出一个无向图和一个此图的生成树,让我们求一个本图的最小割边集,割边集只包括生成树中的一条边,让割边集的边数最少,输出数目。思路:并查集+暴力。代码:#include#include#include#include#include using namespace std;const int maxn = 20005;const int ma原创 2015-09-21 21:23:34 · 338 阅读 · 0 评论 -
hdu4091(暴力)
题意:给出一个容量是n的背包,n思路:暴力,确定了一种宝石拿的数量,就能确定另一种宝石能拿的最大数量。代码:#include #include #include #include using namespace std;const int maxcal = 1000000;int main(){ int t; scanf("%d", &t)原创 2015-10-11 15:54:29 · 596 阅读 · 0 评论 -
hdu4096(模拟)
题意:给出一些句子,代表一些名词和动词的关系,然后有一些查询,看查询语句中的关系是否正确。思路:按照题意建边,查询时找两个点有没有路径即可。代码:#include #include #include #include #include #include #include using namespace std;map mm;map nn;i原创 2015-10-11 15:55:37 · 347 阅读 · 0 评论 -
hdu5461(2015沈阳网络赛L题)
题意:给出一个数列,我们要在这里找出两个数,使得题意中那个表达式最大。思路:排两个序就好了啊,看代码一下就懂了。代码:#include #include using namespace std;const long long maxn = 5 * 1000000 + 10;struct Node { long long id, x;}aa[m原创 2015-09-21 21:29:22 · 406 阅读 · 0 评论 -
hdu5492(2015合肥网络赛I题)
题意:n*m的格子,每个格子有权值,我们要从左上角走到右下角,只能向下走或者向右走,求走到终点走过的格子的方差的最小值。思路:被这题坑了,我还是太蠢。我们可以暴力(∑Ai)^2,取最优就好了。代码:#include#include#include#includeusing namespace std;int po原创 2015-09-28 19:05:28 · 553 阅读 · 0 评论 -
hdu5491(2015合肥网络赛H题)
题意:给出三个数字D、s1和s2,用L来表示D的二进制表示中1的个数,L在区间[s1,s2]中,我们要找到离D最近的并且大于D的一个数字,且这个数字的L也落在区间[s1,s2]中。思路:一直超时。。。不知道为啥,后来也不知道为啥就不超时了。。。说说不超时的代码。对于一个数字D,我们先给它进行+1操作,看D+1是否满足L值落在区间[s1,s2]中,如果满足就输出,不满足就进行原创 2015-09-28 19:17:07 · 429 阅读 · 0 评论 -
hdu1532(最大流裸题)
题意:裸的最大流。 思路:先试了一下红书模板,TLE了,想起来那个比较快的模板,直接就过了。。。果然模板的质量也是不一样的。 代码: #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath&...原创 2015-09-04 18:49:11 · 396 阅读 · 0 评论 -
hdu3695(AC自动机)
题意:给出n个单词,问又多少个在模式串中出现过,单词反转后在模式串中出现也算出现。模式串会这么给出,例如"[3A]"代表"AAA",这个数字最大会是5000000,原串的长度也是5000000,比赛的时候我就以为经过翻译的串会变成5000000*5000000这么长,可是赛后一看,题中说了,翻译之后的串也不会超过5000000,真是日了狗= =,思路:裸的AC自动机,我最初的想原创 2015-08-13 19:01:07 · 343 阅读 · 0 评论 -
hdu3691(无向图最小割的求解)
题意:给出一个无向图的源点和每个边的容量,让你自己选择汇点,使得最大流最小,输出最大流。思路:用SW算法求一遍无向图的最小割即可,源点如果在S集合中,我们只要在T集合中随便找一个点当作汇点就可以得到想要的最大流,反之亦然。代码:#include#include#include#include#include#include#include#incl原创 2015-08-12 16:41:16 · 665 阅读 · 0 评论 -
hdu3697(贪心+暴力)
题意:一个人要选课,现在给出每门课的选课开始时间和选课截止时间,这个人会每隔5分钟选一次课,问他最多可以选多少门课。思路:我们把没门课按结束时间从小到大排序,结束时间相同按开始时间从小到大排序,这样我们按顺序选一定是最优的。由题意可知,这个人开始选课的时间只有可能是0,、1、2、3、4,因为他第一次选课的时间定了之后,以后的选课时间就固定了,所以暴力一下即可。代原创 2015-08-12 16:56:37 · 884 阅读 · 0 评论 -
hdu5389(DP)
题意:给出n个人的id,有两个门,每个门有一个标号,我们记作a和b,现在我们要将n个人分成两组,进入两个门中,使得两部分人的标号的和(迭代的求,直至变成一位数,我们姑且叫做求“和”操作~)分别等于a和b,问有多少种分法。思路:很容易想到,如果能找到满足题意的解,一定满足a和b的和等于n个人的标号的和,所以我们只需要判断n个人的标号组成a的情况有多少(或者只判断b,一样),同时还原创 2015-08-13 16:41:56 · 908 阅读 · 0 评论 -
hdu5387(模拟)
题意:给出一个时间,hh:mm:ss,hh代表小时,mm代表分钟,ss代表秒,要我们输出时针和分针、时针和秒针、分针和秒针之间的角度,输出两个针之间思路:给出时间后,我们可以统计总共走了多少秒,从而计算角度,这道题比赛的时候是队友打的,直接上代码吧。注意,在代码中,尽量用乘法代替除法,我们因为这个WA了一次。代码:#include #include原创 2015-08-13 16:47:12 · 774 阅读 · 0 评论 -
hdu3694(四边形的费马点)
题意:给出四边形的四个顶点,让你求出一个点,它到四个顶点的距离之和最小,输出最小距离。思路:四边形如果是凸四边形,那么这个点一定是对角线交点,如果不是凸四边形,那么这个点一定是四个顶点之一。所以每次只要对这五个点分别求一次答案,取最优的即可。代码:#include#include#include#include#include#include#inc原创 2015-08-12 16:46:28 · 1373 阅读 · 0 评论 -
hdu5386(暴力)
题意:给出两个n*n的矩阵,一个作为初始矩阵,一个作为目标矩阵,给出m个操作,操作有两种,一种是“L,x,y”,代表我们要把x这一行赋成y,另一种是“H,x,y”,代表要把x这一列赋成y,问我们如何安排这些操作才能把初始矩阵转化成目标矩阵。输出方案,special judge思路:首先明确一点,初始矩阵是没有用的~,按照题解的说法,我们可以按顺序枚举所有操作,如果是L操作,我们原创 2015-08-13 18:33:00 · 875 阅读 · 0 评论 -
hdu2222(看一些单词哪些在模式串中出现过)
转载自:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html题意:t组测试数据,每组有n个单词和一个模式串,问n个单词有多少个在模式串中出现过。思路:做的第一道AC自动机模板题。。。代码:#include#include#includeusing namespace std;转载 2015-07-27 09:49:59 · 372 阅读 · 0 评论 -
hdu5375(格雷码问题+简单DP)
题意:给出一个二进制数字,由0、1和?组成,最长有200000位,我们要把该二进制数字转化成格雷码,?的位置我们可以随便填1或者0,我们设该二进制的位数是n,题中给出n个数字,代表如果格雷码的第i位是1,我们就可以吧a[i]拿走,问我们能拿走的最大值。思路:首先我们要知道二进制是如何转化成格雷码的:然后我们可以进行dp了。我们设状态为dp[i][j]=k 表示前原创 2015-08-11 20:16:25 · 355 阅读 · 0 评论 -
hdu5373(整除11)
题意:给出两个数字n和t,我们要对n进行如下操作t次:①、将n的每一位相加得到tmpn;②、将tmpn连接到n的末尾;问最后得到的数字能否被11整除。思路:首先我们要知道什么样的数字能被11整除:奇数位的和减去偶数位的和能被11整除的数字一定能被11整除。知道这个这道题就很简单了,不进行多余的描述了。同时积累一下和这道题有关的小知识:①、被3整除:每位的原创 2015-08-12 10:38:38 · 625 阅读 · 0 评论 -
hdu5384(AC自动机+纪录重复单词出现的次数)
题意:给出n篇文章,m个单词,输出每篇文章中单词出现的次数,其中单词会重复。思路:AC自动机模板题,添加一个单词的结尾标记记录即可。这里我们用了kuangbin的模板。代码:#include #include #include #include #include #includeusing namespace std;string str;原创 2015-08-13 16:29:55 · 878 阅读 · 0 评论 -
hdu5399(找规律。。。)
题意:一个有n个数字的集合,有m次映射(函数),-1代表我们不知道的映射,可以随便安排,问经过你的安排之后,有多少种会使得最后的所有的f[i]=i。思路:首先,我们要知道,如果-1有很多个,假如是nn个,那么,前nn-1个-1我们都可以随便安排,因为最后一个-1一定可以把我们的映射变的合法,所以前nn-1个-1每个有n!种安排,所以有(n!)^(nn-1)种安排,而且如果m行中原创 2015-08-18 16:27:34 · 624 阅读 · 4 评论 -
hdu3699(不等式dfs)
题意:给出三个串,只由A~E组成,每个串的长度最长是8,字符相同代表那个位置的数字相同,数字可以是0~9,例如:ABBDE() ABCCC=BDBDE 可以是12245+12000=24245()位置可以填+、-、*、\,问你有多少种填法。思路:dfs,最多只由五种字母,我们就把每种字母都代表什么都试一遍,统计结果即可。代码:#include#incl原创 2015-08-12 17:01:34 · 372 阅读 · 0 评论 -
hdu5399(模拟)
题意:在一个序列中找出连续的子序列,满足在这个子序列中从某一个位置开始,左侧是一公差是d1的等差序列,右侧是一个公差是d2的等差序列,问能找到多少个子序列。思路:模拟,不多说,贴队友的代码。代码:#include #include #include using namespace std;const long long maxn = 100005;l原创 2015-08-18 16:30:42 · 558 阅读 · 0 评论 -
hdu3549(又是最大流模板题)
题意:裸的最大流模板,比hdu1532多了个case输出。。。思路:还是用hdu1532那个模板。。。代码:#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std原创 2015-09-04 18:54:27 · 340 阅读 · 0 评论 -
hdu4099(斐波那契数+字典树)
题意:给出一个数字n,在斐波那契数列中找到一个最小下标,满足这个斐波那契数是以n为前缀,输出这个下标。思路:高精度+字典树+1000000000000000进制。后来知道在斐波那契数很大的时候,只取前60位相加得到的前40位就是原斐波那契数的前40位。代码:#include #include #include #include using namespa原创 2015-10-11 16:04:44 · 546 阅读 · 0 评论