![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM训练题
TwoSox
这个作者很懒,什么都没留下…
展开
-
POJ2253
问题链接:POJ2253问题简述:给出n块石头的坐标,其中0号石头为起点,1号石头为终点,求出最小必要跳跃距离,即求出每条路径中最大的跳跃距离,再求出每条路径中最大的跳跃距离中的最小值。问题分析:最短路变形,n只有200的数据量,因此采取了代码量最简洁的floyd算法。map[i][j]=min(map[i][j],max(map[i][k],map[k][j]));max(map[i...原创 2019-10-18 23:26:11 · 171 阅读 · 0 评论 -
第五次训练I题
问题链接:Problem I问题简述:给出一个数n(n=A%9973),与一个数n,求解(A/B)%9973问题分析:先假设A=U9973+n,A/B=V9973+x。显然,x为(A/B)%9973的答案。将两式联立进一步化简可得9973(U-BV)=Bx-n,由该式知,Bx-n必为9973的倍数,即(Bx-n)%9973==0。而已知B,n的取值与x的取值范围,只需由0~9972对x的值...原创 2019-01-23 03:28:36 · 115 阅读 · 0 评论 -
第四次训练G题
问题链接:problem G问题简述:给出两个杯子,容量分别为A,B。 共有三种操作 FILL(I)代表将I杯装满 DROP(I)代表将I杯清空 POUR(I,J)代表将I中的水倒到B中。 问两个杯子任意一个杯中容量到达状态C的最短路径,并输出经过的操作。问题分析:求最短路径,显然为BFS题。难点在于如何输出路径。程序说明:定义了一个结构,以结构中的一个数组随着队列...原创 2019-01-22 23:04:59 · 102 阅读 · 0 评论 -
第九次训练 I题
问题链接:Problem I问题简述:写一个程序,回老师的询问并按老师的要求更新某个同学的成绩。问题分析:对数列中的单点更新和区间查询,赤裸裸的线段树,就不多解释了,套模板。AC通过的C语言程序如下:#include<iostream>#include<cstdio>#include<cstdlib> #include<algorithm...原创 2019-01-28 03:32:48 · 87 阅读 · 1 评论 -
第九次训练 H题
问题链接:Problem H问题简述:早上有n个任务,晚上有n个任务,每个任务有对应的工作时间,超过特点的工作时间后需要额外付加班费,问如何给每个司机分配一个早上的任务与晚上的任务,而使加班费最少?问题分析:贪心思想,花费最长时间的匹配花费最短时间的,次长的匹配次短的,以此类推便可。AC通过的C++语言程序如下:#include<iostream>#include<...原创 2019-01-28 03:29:45 · 88 阅读 · 0 评论 -
第九次训练 G题
问题链接:Problem G问题简述:火星人讲的火星语小明听不懂,于是火星人丢给小明一本字典,上面都是每个英语单词对应的火星语,再给你一句话,让你编写程序对照着字典将火星语翻译成英语(若字典中没有对应的单词,则输出原话)。问题分析:字符串与字符串一一对应,一个map就能解决了。只需要在后续处理中注意好对空格和标点符号即可。程序说明:用cin输入的时候真的不要贪快用std::ios::s...原创 2019-01-28 02:50:48 · 94 阅读 · 0 评论 -
第九次训练 F题
问题链接:Problem F问题简述:Ignatius梦到自己在迷宫里被炸弹炸,每走一步耗时一分钟,六分钟后炸弹爆炸,但在迷宫中有能恢复炸弹时间的装置(炸弹时间为0时不能用),Ignatius有可能为了延长炸弹时间而走回头路,求Ignatius逃离迷宫的最短时间问题分析:搜索最短路径问题,还是要用BFS算法。本题难点在于:可以走回头路。可以走回头路的说明并不标志着我们不需要对路径进行标志...原创 2019-01-28 02:34:58 · 91 阅读 · 0 评论 -
第八次训练 J题
问题链接:Problem J问题简述:敌人有N个工兵营地,给出每个营地的人数,接下来有四种命令:(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30)(2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30);(3)Query i j ,i和j为正整数,i<=j,表示询问第i到第j个营地的总人数;(4)End 表示结束,这条命令在每...原创 2019-01-28 00:22:11 · 110 阅读 · 0 评论 -
第八次训练I题
问题链接:Problem I问题简述:有N多人,答对一半或以上就算过关,请问有多少组答案能使他顺利过关。问题分析:预处理错排公式,求出答对一半以上的所有情况的和即可,注意不能用总的方案数减去答错的方案种数来求解,总的方案数过大,会发生overflow.AC通过的C++语言程序如下:#include<iostream>#include<cstdio>#inc...原创 2019-01-27 01:02:36 · 140 阅读 · 0 评论 -
第八次训练 G题
问题链接:Problem G问题简述:公主在地图中的右下角,勇士在地图中的右上角,地图中的数字代表当前位置怪物的血量,若勇士碰上了怪物,需要消耗相应血量的时间。问勇士能否救到公主?若能,输出最短时间与路径。问题分析:搜索最短路径问题,要用到BFS算法。本题的难点有二: 1.记录路径并输出 2.对怪物的处理解决难点1可以在结构中定义数组,在每次移动中记录坐标即可。解决难点二时,可以...原创 2019-01-27 00:20:47 · 141 阅读 · 0 评论 -
第三次训练J题
问题链接:Problem J问题简述:给出若干组成员,当该组成员中有一个是嫌疑人时,所有组员均为嫌疑人,默认成员0必为嫌疑人。问题分析:当具备某个条件时,将两者归为同一个集合。显然为并查集问题。程序说明:当一者为嫌疑人(父节点为0)时,将双方的父节点都置为0,最后再遍历所有成员使用一次find函数,避免有成员的父节点为除0外的嫌疑人,最后再遍历一遍数组,得出父节点为0的成员的个数,即为...原创 2019-01-21 22:29:10 · 140 阅读 · 0 评论 -
第三次训练I题
问题链接:Problem I问题简述:给定字符串S1,S2,与S12.将S2的首个字符放在首位,S1的首个字符放在第2位,S2的第2个字符放在第3位……以此类推组合成一个新的字符串,再将新的字符串平均分为两半,前一半为作为S1,后一半作为S2,如此反复直至组合字符串满足最终状态S12。若能满足,输出最少组合次数,若不能满足,输出-1。问题分析:求最小路径。可用BFS求解,但本题转化方向固定...原创 2019-01-21 22:06:02 · 119 阅读 · 0 评论 -
第三次训练H题
问题链接:Problem H问题简述:给出一个四位数质数,将其转化为另一个四位数质数,转化过程中只能改变一位数字,首位不得为0,且改变后四位数整体仍是质数,求最小转化步骤数。问题分析:求最短路径,首先想到的是BFS算法,有四个转移方向,个位,百位,十位,千位,由于每次转化后还须进行素数判断,所以可以先对1000~10000的素数进行打表。程序说明:以除法取模的方式分别得到个位,百位,十...原创 2019-01-21 21:51:18 · 402 阅读 · 0 评论 -
第四次训练I题
问题链接:Problem I问题简述:给出多个非常大的数字,求它们的和。 问题分析:高精度运算。程序说明:在不知道数的数量的情况下,每输入一个数变执行一次加法即可,唯一坑点在于结果最后的换行。AC通过的C++语言程序如下:#include<iostream>#include<cstdio>#include<cstdlib> #inclu...原创 2019-01-23 03:09:13 · 96 阅读 · 0 评论 -
第五次训练H题
问题链接:Problem H问题简述:给出一幅5*5的地图,1表示墙壁,0表示道路,输出由坐上角到右下角的最短路径。问题分析:最短路径问题,可用BFS解决。难点在于如何输出路径。程序说明:在结构中定义了一个二维数组,用于存储每一步行走的坐标,用于结果输出路径。坑点在于格式问题“,”后有一个空格。AC通过的C语言程序如下:#include<iostream>#inclu...原创 2019-01-23 03:13:26 · 205 阅读 · 0 评论 -
HDU 2544
问题链接:HDU2544问题简述:每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工...原创 2019-09-28 21:10:03 · 193 阅读 · 0 评论 -
POJ 2431
很久没有刷过题了,找点水题找找手感。问题链接:POJ 2431问题简述:一辆卡车需要经过L单位到达目的地,每单位路程耗1单位的油,共有P单位的油,途中有N个加油站,给出每个加油站距离终点的距离和储备油量,请你求出到达目的地时,最少的加油次数。若无法到达目的地,则输出-1;问题分析:一道简单的贪心题。以贪心的思路去思考的话,若需要最少的加油次数,则每次需要加油的时候,只在存有最大加油量的油...原创 2019-09-24 22:16:32 · 363 阅读 · 0 评论 -
第十一次训练 J题
问题链接:Problem J问题简述:有n个城镇,m个道路,每条道路都有其最大承重量。让你选择一条路径,能承载最多的货物,输出能运输的最大重量。问题分析:这题的原理和上一题I题的原理是一模一样的。只不过这题将要求的目标反了过来,变为了先求出每条路径的最小权值边,再比较每条路径的最小权值边,找出最大权值的那一条。但是数据量增加到了1000,Floyd算法显然行不通了,只好乖乖的去学Djkst...原创 2019-01-29 19:04:05 · 162 阅读 · 2 评论 -
第十一次训练 I题
问题链接:Problem I问题简述:青蛙F想从一块石头跳到另一块石头上见青蛙M,途中有许多块石头,给出每块石头的坐标,让你求出他的最小必要跳跃距离。说来有点拗口,其实就是F跳到M可以有许多条路径,每个路径含括了许多道路,让你求出一条路径中的最长那条道路,再从所有路径的最长道路中找出一条最短的。问题分析:一开始我是从最小生成树的角度出发,希望能将所有石头建成一条边权值最小的树,再通过DFS...原创 2019-01-29 17:17:56 · 126 阅读 · 0 评论 -
第十一次训练 G题
问题链接:Problem G问题简述:给出一段数列,将第一个数移到列尾视作第二个数列,再将第二段数列的第一个数移到列尾视作第三个数列…以此类推则可以由一段数列衍生出n个数列。问这n个数列中,逆序数最大是多少。问题分析:首先可以想到用三重循环暴力模拟求解,这样的时间复杂度为O(n^3),对于5000的数据来说过于勉强,因此暴力并不可取。于是我们需要如何优化算法减少循环。先观察前两个数列。第二...原创 2019-01-29 03:10:27 · 103 阅读 · 0 评论 -
第十一次训练 F题
问题链接:Problem F问题简述:公主被魔王关押在了一个二层迷宫中,T时刻后将被不可描述,迷宫中有时空传送器,一旦勇士踏入传送器中,就会被强制传送到下一层的相同位置(传送过程不耗费时间),若下一层的相同位置是墙,则勇士直接撞死,问勇士能否在T时刻之前救出公主?问题分析:注意问题是在T时刻之前救出公主便算成功,而非一定要在T时刻救出公主,因此问题可以转换为求最短路径,再将最短路径耗费的时...原创 2019-01-29 02:55:55 · 132 阅读 · 0 评论 -
第十次训练 H题
问题链接:Problem H问题简述:定义每颗星星的等级为:不在这颗星星的右边与上面的星星的数量,给出你若干个星星的坐标,编写程序求出每个等级的星星的数量。问题分析:数据量小的可怜,蛐蛐1W5,暴力求解即可,并且题目说明输入的坐标已经按照y轴坐标升序排列,更加省事,只比较x轴即可。实在不知道为什么这道题算在算法题而不是基础题中,于是百度查了查好像是树状数组?但是这数据量也太少了吧。AC通...原创 2019-01-29 02:46:31 · 187 阅读 · 0 评论 -
第十次训练 J题
问题链接:Problem J问题简述:小明跑到田里玩,想在大明发现他时赶紧回到家里,因此他需要知道回到家里的最短路径。给出若干条道路的长度,让你编写程序求出最短路径。问题分析:最短路问题,注意这里数据较大,因此不能用floyd算法,这里我用的是Dijkstra.AC通过的C++语言程序如下:#include<iostream>#include<cstdio>...原创 2019-01-29 01:01:47 · 121 阅读 · 0 评论 -
第十次训练 I题
问题链接:Problem I问题简述:有n个点,给出点与点的距离,让你构造出一幅图使得所有点都可连接起来,并且总长度最小,求出最小总长度。问题分析:构造出边的总权值最小的图,最小生成树。不多说了,水题。AC通过的C语言程序如下:#include<iostream>#include<cstdio>#include<cstdlib> #includ...原创 2019-01-29 00:53:45 · 133 阅读 · 0 评论 -
第十次训练 G题
问题链接:Problem G问题简述:小明在举办生日宴会,但不知道要安排多少张桌子,小明打算将认识的人放在同一桌,同时认识具有传递性,即A认识B,B认识C,可当做A认识C。请你编写一个程序帮小明求求他需要准备多少张桌子?问题分析:赤裸裸的并查集了,假定初始状态为每个人都需要一张桌子,进行一次合并就减一张桌子即可。AC通过的C语言程序如下:#include<iostream>...原创 2019-01-29 00:50:02 · 441 阅读 · 0 评论 -
第十次训练 F题
问题链接:Problem F问题简述:共有20个城市,给出每个城市相邻的城市,输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出问题分析:城市数量固定且比较少,可以用DFS而不至于TLE。逐步搜索到底同时记录路径输出即可,字典序在输入时将相邻的城市编号由小到大排序即可。AC通过的C++语言程序如下:#include<iostream>#in...原创 2019-01-29 00:46:07 · 105 阅读 · 0 评论 -
第九次训练 J题
问题链接:Problem J问题简述:有n个村庄与n-1条路,维护每条路需要k元钱。现在大佬钱不够维护所有道路,让你编写一个程序求出最少维护道路要花费的钱数问题分析:构造出一幅每条边总权值最小的图,是最小生成树了,Kruscal大法好。AC通过的C++语言程序如下:#include<iostream>#include<cstdio>#include<c...原创 2019-01-28 23:26:51 · 86 阅读 · 0 评论 -
第八次训练 F题
问题链接:Problem F问题简述:给出一串珠子,每颗珠子都对应有标号1,2,3…问如何串珠子才能使两个相邻的珠子编号和均为质数?若有多种可能,按字典序排序问题分析:涉及素数判断的问题,可用素数筛法先将素数结果预处理,节省判断的时间。该题只需要用DFS逐颗珠子往下搜索即可。难点在于如何输出路径,可以另行定义一个数组,在每次选取珠子时,将选取结果存入数组中,在最后进行输出即可。另外的字典序...原创 2019-01-26 20:39:30 · 138 阅读 · 0 评论 -
第七次训练 F题
问题链接:Problem F问题简述:地图上有两个人与多家肯德基,每个人行走一步需要花费11分钟。问两个人到达同一家肯德基的时间和最少是多少?问题分析:地图中求最短路径问题,可用BFS。由于问题中有两个人,因此两个人都需要进行一次BFS,又由于有多家肯德基,因此需要对每家肯德基均进行一次求最短路径,最后比较得出最小的结果即可。注意处理好到达的是同一家肯德基的问题,本题并不难AC通过的C+...原创 2019-01-26 20:38:50 · 211 阅读 · 0 评论 -
第二期大师王者组训练题第五题
问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2062问题简述:给出一个N代表有一个集合,集合有1~N中的数字组成。集合的所有非空子集,按照字典顺序排序,给出一个M,输出第M个子集的元素。问题分析:寻找规律可知An的子集可分为n组数据,每组数据分别以1,2,3……n开头,且每组数据含有的集合个数与A(n-1)的关系为 len[n]=len[n...原创 2018-12-14 20:34:12 · 133 阅读 · 0 评论 -
第二期大师王者组训练题第四题
问题链接:http://poj.org/problem?id=1067问题简述:有 两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆 中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是 败者。问题分析:...原创 2018-12-14 19:08:45 · 110 阅读 · 0 评论 -
第二期大师王者组训练题第六题
问题链接:https://vjudge.net/contest/274223#problem/F问题简述:输入城镇数与道路总数,并给出每条道路可连接的两个城镇编号,求出要使所有城镇间互相连通还需建多少条道路。问题分析:已连通的城镇可并为一个子集,每两个子集合并得一个子集的同时所需建的道路减少一条,可知需用到并查集算法。程序说明:程序先定义了变量cnt,并将其初始化为 n-1 ,表示尚无...原创 2018-12-14 15:12:42 · 121 阅读 · 0 评论 -
HDU-2101
问题链接:https://vjudge.net/problem/HDU-2101问题简述:输入A,B,判断A+B的值能否被86整除问题分析:计算A+B的值,再进行对86取余判断能否被86整除即可程序说明:只需注意用while语句判断输入是否停止防止TLE即可。AC通过的程序如下:#include<iostream>using namespace std;int ma...原创 2018-12-06 19:24:41 · 126 阅读 · 0 评论 -
hdu-2002
问题链接:https://vjudge.net/problem/hdu-2002问题简述:根据输入的半径值,计算球的体积。问题分析:数学计算题,需要保留小数。程序说明:定义了一个函数用于计算球的体积,答案用到了setprecision来保留三位小数,需要注意的是在double下4/3=1,须写作4.0/3.0.AC通过的程序如下:#include<iostream>#...原创 2018-12-06 19:17:52 · 97 阅读 · 0 评论 -
hdu-2000
问题链接:https://vjudge.net/problem/hdu-2000问题简述:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。问题分析:简单的排序问题程序说明:将输入的三个字符存入字符数组中,利用选择排序将三个字符按ASCLL码排序后并输出。AC通过的程序如下:#include<iostream>#include<cstring&...原创 2018-12-06 19:06:50 · 101 阅读 · 0 评论 -
HDU1106
问题简述:输入一行数字,将‘5’作为空格分隔出若干个非负整数,并将这些非负整数有小到大排序后以空格隔开输出。问题分析:将数字以字符串形式输入字符数组中,将输入的字符转化为整数形式,并将转化后的整数存入整型数组,遇到‘5’时采取跳过操作。程序说明:设置一个循环,分别将每两个‘5’间的字符串利用ASCLL码值计算转化为整数形式,存入整型数组。最后输出整型数组中的各个数值即可。需要注意的是最后...原创 2018-12-06 18:58:59 · 480 阅读 · 0 评论 -
hdu-1000
问题链接:https://vjudge.net/problem/hdu-1000?tdsourcetag=s_pctim_aiomsg问题简述:输入两个数A,B。输出两个数的和问题分析:注意中断输入避免TLE即可。程序说明:用了while(cin>>A>>B)判断输入是否停止。AC通过的C语言程序如下:#include<iostream>usi...原创 2018-12-06 12:57:26 · 119 阅读 · 0 评论 -
CodeForces-266A
https://vjudge.net/problem/CodeForces-266A问题简述:输入石头数量n,然后输入n个字符表示石头的颜色,若两个石头颜色相同则表示两个石头相邻,求相邻的石头对数。问题分析:将n个字符存入数组中,循环进行前后两个字符的是否相同判断即可。程序说明:以while语句中断循环输入,利用for语句循环进行颜色相同的判断,并设置一个变量num进行计数。AC通过...原创 2018-12-06 12:53:11 · 98 阅读 · 0 评论 -
第二期大师王者组训练题第三题
问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2099问题简述:给出数 a 的前几位,不知道末二位,并且 a 能将 b 整除,求出所有可能的末二位。问题分析:只需将末二位由00开始遍历至99,得出所有可整除b的数即可。唯一需注意的便是每行末位无空格。程序说明:程序使用了一个blank变量判断是否为第一个可被b整除的末二位,解决了空格输出问...原创 2018-12-12 23:07:23 · 99 阅读 · 0 评论 -
CodeForces-467A
问题链接:https://vjudge.net/problem/CodeForces-467A问题简述:输入房间总数n,再输入已入住人数pi与房间可容纳人数qi,判断可供两人入住的房间数有多少问题分析:利用循环逐个判断pi<=qi-2是否为真,并定义一个变量作为计数器即可。程序说明:本程序定义了一个二维数组,一维用来记录pi,qi两个数据,二维表示每个房间,以for循环输入数据,...原创 2018-12-06 00:07:10 · 83 阅读 · 0 评论