
ACM_HDU刷题录
文章平均质量分 81
有关于ACM的解题报告.主要是HDOJ的题目,也会包含POJ,ZOJ,Uva等著名OJ的经典题目的题解,也会更新刘汝佳白书和紫书上的例题和习题.
AC_Dreameng
行有余力,则来刷题!
展开
-
HDU 3549 Flow Problem【最大流入门题】【Ford-Fulkerson算法】【Dinic算法】【ISAP算法】
最大流入门题:最大流问题在刘汝佳的《算法竞赛入门经典》和《算法竞赛入门经典训练指南》中均有纤细介绍。竞赛中通常可以使用Dinic算法和ISAP算法,但是Ford-Fulkerson算法理解起来简单一点。最大流问题吧算法代码当做模板,根据具体问题去建图就可以了。原创 2017-08-17 14:13:39 · 1207 阅读 · 0 评论 -
【2017多校】HDU 6106 Classes 【集合计算】
题意:n个班每个班的学生报名ABC三种课程,求n个班中人数最多的班级。每个班级一次给出报了A,B,C,AB,AC,BC,ABC,的人数注:数据有可能是假的,假的数据直接忽略掉,保证一定有一个真的数据做法:1只报AB的人数 == 报了AB的人数 -- 报了ABC的人数只报了A的人数 == 报了A的人数 -- 只报AB的人数 -- 只报AC的人数 -- 报了ABC的人数这样就可以求出每个类的人数。原创 2017-08-15 15:18:06 · 486 阅读 · 0 评论 -
【2017百度之星】HDU 6114 Chess 【组合数取模,Lucas定理】
题意:分析一下,就是C(n,m),(n>m) ,利用组合数的递推关系或者用Lucas定理即可得到答案。当然也可以用记忆话搜索。原创 2017-08-15 12:46:25 · 804 阅读 · 0 评论 -
HDU 6108 小C的倍数问题【2017"百度之星"】【数论】
(1),(2)两个条件同时满足的话 就必须要满足p%B==1,即(p-1)%B==0,即求出p-1因子的个数即可原创 2017-08-14 16:05:10 · 795 阅读 · 0 评论 -
HDU 6113 度度熊的01世界【2017"百度之星"】【简单搜索判断联通块】
题目不是很难,注意特殊数据,如‘顶到天’的数据,这样的话在外面加一圈0就可以了,剩下的写个搜索判断一下联通块的数量就可以了,‘1’联通块的数量等于1且‘0’的联通快的数量为2,则为0‘1’联通快的数量等于1且‘0’的联通块的数量为1,则为1否则为-1原创 2017-08-14 15:51:43 · 1050 阅读 · 1 评论 -
HDU 6112 今夕何夕【2017"百度之星"】【日期模拟计算】【基姆拉尔森计算公式】【蔡勒公式】
题意简单,但是日期类题目计算有点麻烦。。。。1.直接模拟。题目中说‘今天’是2017年8月6日,星期日,我们要寻找下一个8月6日也是星期日的年份。这里要分三种情况进行讨论。1.1 若开始日期在在3月以后(包含3月,无论今年是平年还是闰年),则到下一年今天则会经过365天,星期数会向后推一天(365%7=1)1.2 若开始日期在2月29日,则到下一个2月29日至少要过4年。1.3 如开始日期在2月29日之前:1.3.1 若今年为闰年,则到明年今日要经过366天,否则为365天。原创 2017-08-14 15:39:23 · 1336 阅读 · 0 评论 -
POJ 2635 The Embarrassed Cryptographer【数论,千进制,高精度求模+同余模定理】
给定一个大数K,K是两个大素数的乘积的值。再给定一个int内的数L问这两个大素数中最小的一个是否小于L,如果小于则输出这个素数。解题思路:首先对题目的插图表示无语。。。 高精度求模+同余模定理 1、 Char格式读入K。把K转成千进制Kt,同时变为int型。把数字往大进制转换能够加快运算效率。若用十进制则耗费很多时间,会TLE。千进制的性质与十进制相似。例如,把K=1234567890转成千进制,就变成了:Kt=[ 1][234][567][890]。为了方便处理,我的程序是按“原创 2017-08-11 13:59:48 · 823 阅读 · 0 评论 -
【2017多校第二场】HDU 6075 Questionnaire【思维】
题意:每个人选择一个正整数,队长选择两个数m,k,对于每个人选择的数,如果对m取余,结果为k,则得到一个‘yes’,否则得到‘No’,如果最后‘Yes’的数量大于等于‘No’,则队长将得到更多的训练机会问,队长如何选择m,k一个数对m取余,结果为[0,m-1],所以我们取m=2,判断奇偶即可。原创 2017-08-08 14:44:33 · 709 阅读 · 0 评论 -
【2017多校第二场】HDU 6055 Regular polygon【几何,枚举】
题意:题意,二维平面上给N个整数点,问能构成多少个不同的正多边形。 题解:容易得知只有正四边形可以使得所有的顶点为整数点。(具体证明可参考杨景钦在2017的国家队论文) 所以正解即求出所有的正四边形个数。 枚举2个点,然后暴力判断另外2个点的位置是否存在。 复杂度 N*N*logN。解:坐标都是整数输入,那么整数坐标能组成的正多边形只有正方形。但正方形的位置是随意的。让后我们会发现正方形可以分解为四个直角三角形。如图:原创 2017-08-08 14:25:32 · 753 阅读 · 0 评论 -
第八届福建省大学生程序设计竞赛
第八届福建省大学生程序设计竞赛题意:抽象过来就是,有n个人,随机打乱顺序后,有多少情况是至少有k个人在正确的位置上。思路:错排+组合数学。设定Dp【i】表示错排的数量。那么考虑dp转移方程,我们考虑最新加进来的这个数字i:①如果他放在了位子k上,然后位子k上的这个数字放在了位子i上,那么对应取k个位子有(i-1)种方法,那么有:Dp【i】=Dp【i-2】*(i-1);②如果他放在了位子k上,然后位子k上的这个数字没有放置在位子i上,同时位子k上的数字变成了一个新的问题,那么有:D原创 2017-07-26 14:44:12 · 2432 阅读 · 0 评论 -
POJ 2186 Popular Cows 【Tarjan+缩点】
题意:给你n头牛,m个关系,每个关系表示a崇拜b,问有多少牛被所有牛所崇拜。崇拜具有传递性。还是先Tarjan缩点,找出出度为0的点,此点为缩点后的点,并判断数量,如果数量为1,则存在,否则不存在。那个点在缩点前的数量即为被所有牛崇拜的数量。为加强理解,给上几组数据。原创 2017-07-21 15:58:10 · 598 阅读 · 0 评论 -
UVALive - 4287 Proving Equivalences【强连通缩点】【Tarjan算法】
题意: 给出N个命题,要求你证明这N个命题的等价性 比如有4个命题a,b,c,d,我们证明a<->b, b<->c,c<->d,每次证明都是双向的,因此一共用了6次推导 如果换成证明a->b,b->c,c->d,d->a,每次证明都是单向的,而只需4次就可以证明所有命题的等价性 现在给出M个命题证明,问还需要证明几个,才可以保证N个命题等价。分析: 缩点后求DAG中入度为0和出度为0的联通块的较大值。此题在刘汝佳《算法竞赛入门经典训练指南》P322此题和POJ1236差不多原创 2017-07-20 16:24:47 · 689 阅读 · 0 评论 -
POJ 1236 Network of Schools【强连通缩点】【Tarjan算法】
题意: 一些学校连成了网络, 在学校之间存在某个协议:每个学校都维护一张传送表,表明他们要负责将收到的软件传送到表中的所有学校。如果A在B的表中,那么B不一定在A的表中。 现在的任务就是,给出所有学校及他们维护的表,问1、如果所有学校都要被传送到,那么需要几份软件备份;2、如果只用一份软件备份,那么需要添加几条边?PS:第二道Tarjan,并且还用了缩点,搞了一下午,注意,此题中Tarjan用到的栈要定义成全局变量.....参考博客:原创 2017-07-19 21:42:35 · 834 阅读 · 0 评论 -
HDU 1269 迷宫城堡【Tarjan强连通分量 模板】
题意:判断图的强连通分量是否为一.模板题.Targan算法介绍及模板:http://blog.youkuaiyun.com/hurmishine/article/details/75248876原创 2017-07-17 16:54:36 · 743 阅读 · 0 评论 -
全网最!详!细!Tarjan算法讲解。
Tarjan算法讲解的博客网上找到三篇比较好的,现在都转载了,个人只研究了第一篇,正如博主所说,讲的标比较详细,清晰,剩下两篇也可以看一下.以下内容转自:http://www.cnblogs.com/uncle-lu/p/5876729.html全网最详细tarjan算法讲解,我不敢说别的。反正其他tarjan算法讲解,我看了半天才看懂。我写的这个,读完一遍,发现原来tarjan这转载 2017-07-17 16:17:39 · 19784 阅读 · 13 评论 -
当for循环遇到逗号运算符
for循环在是在编程中用的比较多的循环语句了,逗号运算符在实际编程中用到的不是很多,一般就用到定义变量的时候吧,其它的地方自己不会用,用了也怕别人看不懂. 今天在别人的代码中就遇到了,为了测试它的作用,就写了如下的代码:for(int i = 5, j = 10; j, i; i--, j--){ cout << i << "," << j << endl;}大家先猜一下,会输出什么.原创 2017-07-15 16:02:37 · 6391 阅读 · 4 评论 -
POJ 1849 Two【树的直径+树的遍历】
题意:两辆清雪车从同一点出发,要清理所有路上的积雪,问耗油量(路程和)最少是多少。不需要回到起点。要使路程最近,若起点在树的直径上,则两辆车往不同的方向走,直径上的边只用走一遍,其他的要走两遍。若起点不在直径上,则两人一起走到直径上,再往不同的方向走。综上:路径和为直径+2*非直径.即:2*sum-d.(sum为路径和,d为直径)原创 2017-07-14 16:26:44 · 667 阅读 · 0 评论 -
POJ 2631 Roads in the North 【树的直径】
题意:输入是一系列行,每行包含三个正整数:一个村的数量,一个不同的村庄的数量,以及连接村庄的路段长度,以公里为单位。 所有路段都是双向的。您要输出一个整数:该地区最偏远的两个村庄之间的道路距离。现在可以直接裸树的直径的模板了。原创 2017-07-14 14:57:48 · 930 阅读 · 0 评论 -
POJ 1383 Labyrinth 【树的直径】【真正的图】
题意:输入一个图,问你‘ . ’连成的区域,两个' . '之间的最长距离是多少.直接裸模板.但是注意输入的行和列,及超时解决.原创 2017-07-13 16:36:19 · 633 阅读 · 0 评论 -
图论题目建图小结
图论的题目,建好了图,就可以说完成一半的工作了,但是建图总的来说没有几种,但是配合不同的‘工具’就可以玩出不同的花样。这里说的‘工具’指数组或如vector等STL库。一、数组。这样最简单的建图方式,对于一些入门题目可以解决,但数据一大就不行了,并且空间复杂度高,对于稀疏图来说不太适用。可以pass二、用链表动态存储。有点复杂,但实际指针占用内存也有点大。再说有几个人能流利原创 2017-07-12 21:37:50 · 1247 阅读 · 0 评论 -
POJ 1985 Cow Maratho【树的直径】
题目大意:有n个农场,这n个农场有一些边连着,然后要你找出两个点,使得这一对点的路径长度最大,输出这个最大的长度.输入的最后一个参数没用....直接裸树的直径就可以了.之前都用DFS解决,现在是一下BFS.并且用了pair,建图方便多了,不用结构体,不用写构造函数,配合vector,简直完美...原创 2017-07-12 21:00:08 · 911 阅读 · 0 评论 -
HDU 2196 Computer 【树的直径】
网上好多博客多用树形DP来解决,但是用树的直径也可以解决。题意:有n台电脑,下面有n-1行,每行两个数据v,w,第i行表示,第i+1台电脑与第v台电脑之间的距离是w.求每台电脑离它最远的电脑的距离.原创 2017-07-12 11:04:15 · 779 阅读 · 0 评论 -
2017ccpc全国邀请赛(湖南湘潭) H. Highway XTOJ 1267 【树的直径】
题意:n个城镇之间有n-1条道路相连,现在有个有钱人要来修n-1条高速公路,使得任意两个城镇之间都有唯一的高速公路,问你最多要花费多少钱。对于样例1:最远的两个点为4和5对于1,从1修到4,花费4对于2,从2修到5,花费4对于3,从3修到4,花费5对于4,从4修到5,花费6对于5,从5修到4,花费6从4到5和从5到4是一样的,算一次即可。最终花费为4+4+5+6=19对于此题,要用到树的直径,输的直径就是一棵树上最远的两个节点。找到输的直径后,树上的点到直径上的两个端点(必为其中一原创 2017-07-11 11:03:15 · 1034 阅读 · 0 评论 -
2017中国大学生程序设计竞赛 - 女生专场
题意:给你测试数据数,题目数和提交次数,及每次提交的题目ID,时间和结果,求所用总时间.计算规则:若AC了题目,则用AC时时间+之前该题提交非正确次数*20有个坑,即使一个题目错了1w次,最后没有AC,那些罚时讲不会计算.思路:用两个数组,一个标记题目是否AC,另一个数组记录AC前不正确提交次数.原创 2017-05-31 17:10:20 · 1710 阅读 · 0 评论 -
大学生程序设计邀请赛(华东师范大学)
C. 袋鼠妈妈找孩子Time limit per test: 1.5 secondsMemory limit: 256 megabytesAccept / Submit: 41 / 172袋鼠妈妈找不到她的孩子了。她的孩子被怪兽抓走了。袋鼠妈妈现在在地图的左上角,她的孩子在地图第 x 行第 y 列的位置。怪兽想和袋鼠妈妈玩一个游戏:他不想让袋鼠妈妈过快地找到原创 2017-05-31 16:57:33 · 1224 阅读 · 0 评论 -
POJ 1276 Cash Machine【多重背包】
题意:有各种不同面值的货币,每种面值的货币有不同的数量,请找出利用这些货币可以凑成的最接近且小于等于给定的数字cash的金额.样例1:要取735,取款机内有3种钱:4张125的,6张5的,3张350的.735=3*125+2*5+1*350动态规划,多重背包,可以二进制优化.原创 2017-04-23 22:27:23 · 1026 阅读 · 0 评论 -
POJ 1189 钉子和小球【基础DP】
题目是中文就不多啰嗦了,但是有一点,如果某个点没有钉子,那么小球会落到下面第二层的位置。理解以后就和POJ1136 The Triangle差不多了。由于概率每次都要处于2,并且分数加法有点麻烦,所以,开始时一个数的值设为2^n,这样便可简化运算.运算方法有两种,一.dp[i][j]+=(dp[i-1][j-1]+dp[i-1][j])/2;二.dp[i+1][j]+=dp[i][j]/2,dp[i+1][j+1]+=dp[i][j]/2;相对来说第二种方法更简单一点.样例过程:3216原创 2017-04-21 21:44:12 · 1004 阅读 · 0 评论 -
POJ 1157 LITTLE SHOP OF FLOWERS【基础DP】
题意:给出f朵花,v个花瓶,要把花都插到花瓶里去,而且花的顺序不能改变,编号小的在左边,每朵花放到花瓶里都会有一定的价值,问如何放才能产生最大的价值我们设dp[i][j]表示处理到第i朵花,然后把第i朵花放到第j个花瓶里时所能获得的最大价值;显然 dp[i][j] = max(dp[i - 1][k]) + val[i][j],其中k< j val[i][j]表示把第i朵花放到第j个花瓶里产生的价值本题dp状态:原创 2017-04-18 22:36:26 · 973 阅读 · 0 评论 -
POJ 1050 To the Max【DP】
做这题前,先弄清楚HDU1003这题。然后再把二维压缩为一维就可以了。1,12,123,1234,2,23,234,3,34,4按上面几种情况压缩,求出最大的即可。原创 2017-04-15 22:06:11 · 975 阅读 · 0 评论 -
POJ 1088 滑雪【经典DP】
经典DP,dp[x][y]表示从(x,y)为起点的最长滑雪距离.原创 2017-04-15 16:06:17 · 1172 阅读 · 0 评论 -
C++重载运算符及const成员函数简述
ACM中,用重载函数会使解题更加方便,但是又需要像c++那样深入理解,遂简单总结了结构体中的重载运算符及const成员函数一些简单的用法.闲言少叙,直接看代码:/** * 行有余力,则来刷题! * 博客链接:http://blog.youkuaiyun.com/hurmishine **/#include #include #include using namespace std原创 2017-04-12 22:18:33 · 1553 阅读 · 0 评论 -
sscanf基本用法
sscanf()函数也很熟悉,但是sscanf()也用的很少,但是它依然很强大,具体用法以后再去研究,下面先叙述一点简单的用法.#include #include using namespace std;const int maxn=0;int main(){ char str[100]; sscanf("123qwq","%*d%s",str); print原创 2017-04-06 22:09:51 · 1101 阅读 · 0 评论 -
sprintf基本用法
学过c语言的人都用过printf()这个函数,但是对于它的"兄弟"函数sprintf()这个函数就很少有人知道了,但是它的功能比printf()还要强大!由于它比较强大,目前我也只理解了一小部分,现在先把所学的整理下来,以后有时间再去更新,研究.废话不多说,直接上代码#include #include using namespace std;const int maxn=0;i原创 2017-04-06 21:56:58 · 8929 阅读 · 2 评论 -
第五届蓝桥杯省赛--神奇算式
这道题也有人用搜索,其实也可以,但是你轮子用得好,飞刀耍得好,用''暴力'也就可以了.所但我不熟悉轮子,不想用飞刀,就留下了下面的"垃圾代码",简直惨不忍睹,我用了set,itoa等函数,别人用一个sprintf就解决了,代码比我的简洁明了,,,,献上膝盖...原创 2017-04-06 21:09:40 · 1702 阅读 · 0 评论 -
2012 蓝桥杯【决赛试题】星期几/2012蓝桥杯【初赛试题】干支纪年
题目描述: 1949年的国庆节(10月1日)是星期六。 今年(2012)的国庆节是星期一。 那么,从建国到现在,有几次国庆节正好是星期日呢? 只要答案,不限手段! 可以用windows日历,windows计算器,Excel公式,。。。。。 当然,也可以编程! 不要求写出具体是哪些年,只要一个数目! 千万不要提原创 2017-04-05 22:19:24 · 1046 阅读 · 0 评论 -
2016-蓝桥杯省赛-C语言大学B组_方格填数_【DFS&全排列】
蓝桥杯的题,用暴力也是可以的,因为只需要一个结果。但是,用搜索却是很好的选择!此题,由于方格是残缺的,这增加了一点困难,但是,我们补上残缺的角,便成为了规则的图形。原创 2017-04-03 21:36:18 · 2209 阅读 · 0 评论 -
2016-省赛-C语言大学B组_凑算式
思路:用DFS去枚举所有情况,如果满足情况,则记录下来.当然,也有人用全排列来解决.原创 2017-04-01 22:19:39 · 2762 阅读 · 0 评论 -
2015-蓝桥杯省赛-C语言大学B组_加法变乘法
思路:暴力枚举吧,枚举出乘号的位置.但是有个小坑.说明:如果5个数的一种情况,1*2+3*4+5,怎么枚举?数是确定的,但是符号不好解决.方法1:1 2 3 4 5 * + * +方法2:1 2 3 4 5* + * +我用的是第二种方法,首先两重循环,枚举乘号位置,再一遍循环计算当前情况的结果,若满足,即输出答案.原创 2017-04-01 21:22:22 · 1392 阅读 · 0 评论 -
PAT L2-008. 最长对称子串(25) (暴力,Manacher算法和DP解决)
1000的长度,100ms,o(N^2)的复杂度是可以过的,那就暴力枚举吧,每次枚举起点和终点没如果此子串是回文串,那终点-起点+1即为回文串的长度,即可求出最大长度.中间有个小问题,看代码注释.原创 2017-03-24 17:23:50 · 1217 阅读 · 2 评论 -
团体程序设计天梯赛-练习集-L1-006. 连续因子
这道题有点坑,如果是素数呢?那只能输出它本身,暴力枚举的话会超时,由于12!超过了int的范围,所以长度最大只会为12...原创 2017-03-22 21:59:24 · 775 阅读 · 0 评论