
训练指南-第一章
文章平均质量分 68
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 11292 - Dragon of Loowater(贪心)
题目链接:uva 11292 - Dragon of Loowater题目大意:原创 2013-11-29 22:15:59 · 1193 阅读 · 0 评论 -
uva 11729 - Commando War(贪心)
题目链接:uva 11729 - Commando War题目大意:有n个人要去执行任务,第i个人交代任务的时间为Bi,了解完任务之后会不间断的执行Ji分钟,完成所有任务的最短时间。解题思路:将完成任务需要时间叫长的最先交代,所以只要排序一次然后计算最大时间就可以了。证明:对于连续的两个人x和y,可以分两种情况:1.J[x] > B[y] + J[y]时,x先的话,原创 2013-11-29 22:33:25 · 1594 阅读 · 0 评论 -
uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量让这些零件中质量最小的越大, 输出质量最小的值。解题思路:首先可以用二分搜索确定质量, 然后在搜索的过程中要判断这个质量是否能被满足, 判断函数可以用贪心, 在每一类的零件中选择原创 2013-08-31 17:47:58 · 2117 阅读 · 0 评论 -
uva 11520 - Fill the Square(贪心+枚举)
题目链接:uva 11520 - Fill the Square题目大意:给出一张图,'.'的地方要用大写字母去填,要求说每个位置的上下左右如果存在的话所填的字母不能和当前位置相同。输出从上到下,从左到右字典序最小的方案。解题思路:从上到下,从左到右开始枚举,每次碰到'.'就从‘A’开始检测直到可以填入为止。#include #include const原创 2013-12-07 19:03:42 · 1252 阅读 · 0 评论 -
uvalive 3635 - Pie(二分搜索)
题目连接:3635 - Pie题目大意: 有m个派, 要分给n + 1个人, 要求每个人拿到的大小相同, 并且每个人的派必须是一整块, 不能说分别从两个派切出一块凑成。 现在给出m个派的半径(派均为圆柱,高为1),输出每人可以拿到的最大派的体积。解题思路:二分查找。#include #include #include const int N = 10005原创 2013-08-31 16:31:28 · 1449 阅读 · 0 评论 -
uva 10795 - A Different Task(递归)
题目链接:uva 10795 - A Different Task题目大意:就是普通的汉诺tai原创 2013-12-07 17:20:41 · 1244 阅读 · 0 评论 -
uva 1267 - Network(dfs)
题目链接:uva 1267 - Network题目大意:给出n,s,k,即有n台客户端和服务器(边界为客户端),然后给出n-1条边,连接n台终端,现在在序号为s的服务器上有一个资源,为了方便所有用户浏览(访问路径长度不超过k),要在较少的服务器上复制资源,问说最少再在几个服务器上复制资源。解题思路:首先现将无根图转化成树,以资源所在的服务器s为根,然后dfs建树,建树的过程原创 2013-12-07 21:13:50 · 1311 阅读 · 0 评论 -
uva 1335 - Beijing Guards(二分)
题目链接:uva 1335 - Beijing Guards题目大意:有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物。如果两个相邻的人拥有同一种礼物,则双方都会很不高兴,问最少需要多少种不同的礼物才能满足所有人的需求,假设每种礼物有无限多个。解题思路:自己想没有什么思路,参照大白书上的解释,琢磨了一下。如果n为偶数的话,a原创 2013-12-08 22:20:52 · 1719 阅读 · 1 评论 -
uva 1388 - Graveyard(数论)
题目链接:1388 - Graveyard题目大意:在一个周长为10000的圆形水池旁有n个等距离的雕塑,现在要再添加m个雕塑,为了使得n + m个雕塑等距离,需要移动一些雕塑,问如何使得移动的总位移最小,输出最小值。解题思路:可以将周长展成坐标来看,原来的n个雕塑在x[i] = i / n,而移动过后的位置应该在y[i] = i / (n + m),根据贪心的思想,x[i原创 2013-12-02 18:56:44 · 1371 阅读 · 0 评论 -
uva 10881 - Piotr's Ants(排序)
题目链接:10881 - Piotr's Ants题目大意:在一个长为L的木棒上有n只蚂蚁,给出蚂蚁的初始位置以及方向,问说移动T秒后各个蚂蚁的位置以及状态,如果两只蚂蚁在移动的过程中相撞,则会同时掉头。解题思路:问题只要解决说两只蚂蚁相撞的情况就差不多了,其实从整体上来看(不考虑蚂蚁的编号),“相撞”和对穿而过“是一样的,只不过移动到那个位置的蚂蚁并不是先前的那只。所以说原创 2013-12-02 19:41:36 · 1268 阅读 · 0 评论 -
uva 1368 - DNA Consensus String(贪心)
题目链接:uva 1368 - DNA Consensus String题目大意:给定m个长度为n的DNA序列,求一个DNA序列,使其到所有序列的总hamming距离尽量小,如有多解,输出最小解。解题思路:因为每个DNA序列都是相同长度的,所以可以枚举每一位DNA码,然后用贪心的思想选取出现次数最多的,如果有两个最多的,按要求用字典序小的。#include #原创 2013-12-09 21:27:07 · 1168 阅读 · 0 评论 -
uva 10340 All in All(子串)
All in AllInput: standard inputOutput: standard outputTime Limit: 2 secondsMemory Limit: 32 MBYou have devised a new encryption technique which encodes a message by inserting between its cha原创 2013-08-18 10:58:49 · 1588 阅读 · 1 评论 -
uva 11636 - Hello World!(规律)
题目链接:uva 11636 - Hello World!题目大意:略。解题思路:ans = ceil( log2(n) ).(ceil向上取整)#include #include #include int main () { int cas = 1, n; while (scanf("%d", &n) == 1 && n > 0) { prin原创 2013-12-09 19:36:47 · 1169 阅读 · 0 评论 -
uva 10382 Watering Grass(贪心-区间覆盖变形)
题目大意:10382 - Watering Grass题目大意:在一个长order(目标), 宽h的草坪上有n的喷头,每个喷头有对应的半径,为它的工作范围,现在要求选出最少的喷头使的这些喷头的工作范围覆盖整个草坪。解题思路:区间覆盖问题, 这里要注意一下每个喷头的有效作用区间并不是[p - r, p+ r], 因为圆是有弧度的,所以有效区间为t = sqrt(r * r -原创 2013-08-26 09:29:05 · 1037 阅读 · 0 评论 -
uva 11039 - Building designing(贪心)
题目链接:uva 11039 - Building designing题目大意:给出n个数,均为非0数,要求选出尽量多的数组成序列,序列要求正负交替,绝对值递增。解题思路:读入时将正数与负数分别储存在两个数组,负数可以直接储存绝对值。然后将两个数组按照绝对大小分别排序,然后在两个数组中交替选出尽量小的数,满足绝对值大于前面一个选出的数。#include #in原创 2013-12-09 20:14:32 · 1324 阅读 · 0 评论 -
uva 1339 Ancient Cipher(字符串处理)
Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form t原创 2013-08-18 11:03:57 · 1076 阅读 · 0 评论 -
uva 10970 Big Chocolate
Mohammad has recently visited Switzerland. As he loves his friends very much, he decided to buy some chocolate for them, but as this fine chocolate is very expensive(You know Mohammad is a little BIT原创 2013-07-31 13:19:25 · 1423 阅读 · 0 评论 -
uva 11300 - Spreading the Wealth(数论)
题目链接:uva 11300 - Spreading the Wealth题目大意:有n个人坐在圆桌旁,每个人有一定的金币,金币的总数可以被n整除,现在每个人可以给左右的人一些金币,使得每个人手上的金币数量相等,问说最少移动的金币数额。解题思路:原创 2013-12-02 18:39:39 · 1155 阅读 · 0 评论 -
uva 1030 - Image Is Everything(迭代更新)
题目链接:uva 1030 - Image Is Everything题目大意:有一个最大为n*n*n的立方体的一个不规整立体,由若干个1*1*1的小正方体构成(每一个小正方体被涂成不同的颜色),给出n,然后是该立体的前、左、后、右、上和下的视图,然后判断该立体的最大体积是多少。解题思路:首先先把所有视图上为‘.'的地方清空,然后枚举视图上不为’.'的地方,计算对应的坐标第原创 2013-12-02 21:15:04 · 1944 阅读 · 0 评论 -
uva 11464 - Even Parity(暴力枚举)
题目链接:uva 11464 - Even Parity题目大意:给出一个由0和1组成的矩阵,修改最少的0变成1,使得矩阵中每个位置的上下左右存在的情况下,和为偶数,无解输出-1。解题思路:枚举,但是枚举所有位置的话,n最大为15,有2^255,肯定超时。但是不难发现,如果确定了i行,那么i + 1行肯定是确定。所以只要枚举第一行就可以了。#include #原创 2013-12-03 20:20:42 · 1690 阅读 · 0 评论 -
uva 1346 - Songs(贪心)
题目链接:uva 1346 - Songs题目大意:John Doe 是一个著名的DJ,现在他有n首播放个曲, 每首歌曲有识别符key,歌曲长度l,以及播放频率q。想在John Doe 想将磁带上的歌曲重新排列,方便播放,播放所有歌曲有一个复杂度的计算∑(1≤i≤n)q[i] * ( ∑(1≤j≤i)l[j] ), 然后给出S,请输出重新排列后的第S首歌的识别码。解题思原创 2013-12-10 22:02:26 · 1589 阅读 · 0 评论 -
uva 10020 Minimal coverage(贪心-最小覆盖问题)
题目连接:10020 - Minimal coverage题目大意:给出一个范围M,然后给出若干的区间,以0 0 终止, 要求用最少的区间将0 ~M 覆盖,输出最少个数以及方案。解题思路:典型的区间覆盖问题,算法竞赛入门经典P154上有讲。#include #include #include using namespace std;const int N原创 2013-08-26 09:18:09 · 1863 阅读 · 0 评论 -
uva 10026 Shoemaker's Problem(排序)
题目连接;10026 Shoemaker's Problem题目大意:有一个鞋匠接了n双要修的鞋子, 修每双鞋需要d天,每推迟一天修将亏损val元,问按什么样的顺序修鞋可以保证损失最少,如果有多种情况输出字典序最小的。解题思路:最开始把损失钱数最大的放在前面,后来发现每层子问题是相互有影响的,所以不能从整体的损失来看,所以后来改成对两个鞋的装态比较,只要考虑哪双鞋放前和哪双原创 2013-08-23 00:14:45 · 1455 阅读 · 0 评论 -
uva 10317 - Equating Equations(dfs)
题目链接:uva 10317 - Equating Equations题目大意:给出一个算式,然后有不大于100的若干个数,个数不大于16,符号不可以移动,找出成立的等式。解题思路:一开始想用01背包去枚举组成sum/2的情况,但是WA了。后来用深搜枚举情况要么左边要么右边。#include #include const int N = 1605;con原创 2013-12-12 22:07:17 · 1091 阅读 · 0 评论 -
uva 1352 - Colored Cubes(枚举)
题目链接:uva 1352 - Colored Cubes题目大意:给出n个正方体,然后n行表示每个正方体6个面的上色,问涂最少的面使得n正方体都相同(注意正方体是可以旋转的)解题思路:首先写出正方体有24个旋转方式,然后以第一个正方体为标准,枚举剩下n - 1个正方体的状态,然后计算最小值。#include #include #define min(a,原创 2013-12-06 21:04:16 · 1415 阅读 · 0 评论 -
uva 11384 - Help is needed for Dexter
题目链接:uva 11384 - Help is needed for Dexter题目大意:给定正整数n,要求将1,2.....n的序列全部变为0,每次操作可以从序列中选取一个或多个正整数,同时减掉一个相同的正整数,输出最小的操作次数。解题思路:ans = log2(n) + 1。#include int main () { int n; while原创 2013-12-06 21:09:12 · 1342 阅读 · 0 评论 -
uva 11210 Chinese Mahjong(暴力搜索)
Chinese MahjongMahjong () is a game of Chinese origin usually played by four persons with tiles resembling dominoes and bearing various designs, which are drawn and discarded until one player原创 2013-08-17 21:23:41 · 2617 阅读 · 0 评论 -
uva 1523 - Helicopter(暴力水题)
题目链接:uva 1523 - Helicopter题目大意:有一架直升飞机,可以乘坐8人,现在给出8个人的重量,要安排8个人的位置,要求尽量保持平衡。计算平衡的公式题目中给出。解题思路:总共就8个人,暴力枚举所有坐法,然后维护最小值即可。#include #include #include #include using namespace std;原创 2013-12-28 14:40:58 · 1373 阅读 · 0 评论 -
uva 1374 - Power Calculus(迭代深搜)
题目链接:uva 1374 - Power Calculus题目大意:给出n,问说至少计算几步得到x^n。解题思路:迭代深搜,枚举步数,然后深搜判断是否可行。需要优化,当当前数s按照最大方案执行后仍然小于n,则说明不可行。#include #include #include const int N = 3005;int aid, tmp, v[N],原创 2013-12-28 21:17:02 · 2210 阅读 · 1 评论 -
uva 1555 - Garland(递推)
题目链接:uva 1555 - Garland题目大意:给出n和a,求出满足题目给定的四个条件的序列,要求h[n] = b最小。解题思路:根据h[i] = (h[i-1]+h[i+1])/2 - 1可以的出h[i+1] = 2h[i] + 2 - h[i-1], 然后可以得出h[n] = k * h[2] - b,只要维护h[2]保证h均大于等于0且最小即可。#原创 2013-12-28 21:22:40 · 1318 阅读 · 0 评论 -
uva 669 - Defragment(dfs)
题目链接:uva 669 - Defragment题目大意:磁盘上有n个碎片,给出n个碎片的位置,现在要用最少的步数将所有碎片放回原处,题目一定留出一个空位。解题思路:dfs,如果当前有位置,就把前面的碎片移动到它的目标位置,注意形成环的情况。#include #include const int N = 10005;int n, c, v[N], p原创 2013-12-29 17:57:15 · 1283 阅读 · 0 评论 -
uva 1533 - Moving Pegs(BFS)
题目链接:uva 1533 - Moving Pegs题目大意:在一个跳棋的棋盘上,有15个位置,如题目中图示,现在给出n,表示第n个位置上的没有棋子,问说最少跳几步可以使的棋盘上的棋子只剩一个,并且位置处于n上,输出跳法,多中的话按照字典序最小输出。解题思路:15个位置,可以用一个二进制数表示状态,然后BFS搜索。优化,如果状态已经入队过,则可不用重复入队。#原创 2013-12-29 16:14:45 · 1502 阅读 · 0 评论 -
uva 10905 Children's Game (排序)
题目连接:uva 10905 Children's Game题目大意:给出n个数字, 找出一个序列,使得连续的数字组成的数值最大。解题思路:排序,很容易想到将数值大的放在前面,数值小的放在后面。可是,该怎么判断数值的大小(判断数值大小不能单单比较两个数的大小,比如遇到:1 、10的情况)。其实,判断一个不行,那就将两个合在一起考虑就可以了(就是比较110合101的大小来普判原创 2013-08-22 23:07:13 · 1334 阅读 · 0 评论 -
uva 1422 - Processor(二分+优先队列)
题目链接:uva 1422 - Processor题目大意:有一个机器要处理一些问题,给出这些问题可以开始的时间和必须完成的时间,以及任务的工作量,问说机器必须以最少每秒多少得工作量才能完成这些任务。解题思路:二分答案,答案的上限是MaxWork * MaxN(全在一秒内完成)。然后就是判断说在c的工作量小是否能完成任务。因为处理一个问题的时间可以不连续,所以给解题增加了难原创 2013-12-17 00:25:28 · 2846 阅读 · 0 评论 -
uva 10037 - Bridge(贪心)
题目链接:uva 10037 - Bridge题目大意:有n个人要过桥,每次可以过一个或两个人,但是过桥一定要有灯,现在找出过桥最短的方案。解题思路:送灯肯定要让速度最快的来送,所以就有了两种过桥方式。假设现在要让a[i-1]和a[i]过桥,方案1:a0 a1,a0,ai-1 ai, a1.方案2:a0 ai,a0,ai-1 a0,a0。比较两种方案的时间,取较少的。注意n原创 2014-01-01 17:41:39 · 1549 阅读 · 0 评论 -
uva 11627 - Slalom(贪心+二分)
题目链接:uva 11627 - Slalom原创 2013-12-17 23:55:32 · 2017 阅读 · 0 评论 -
uva 1153 - Keep the Customer Satisfied(贪心+优先队列)
题目链接:uva 1153 - Keep the Customer Satisfieduva题目大意:有n个客户,去买一家商场,结算时候排队,每个顾客有一个等待时间,过了等待时间顾客就会不满,然后每个顾客又有一个结算时间,问说最多让几个顾客满意。解题思路:先按照等待时间从小到大排列,然后遍历一遍,每次加上当前人的时间,如果时间超过了当前的等待时间,则减掉前面满意人当中结算时原创 2014-01-01 16:37:19 · 1718 阅读 · 0 评论 -
uva 798 - Tile Puzzle(回溯)
题目链接:uva 798 - Tile Puzzle题目大意:给出w,h和n,表示有n种拼图,给出n种拼图的个数mi,宽wi,高hi,问说用这些拼图可以用多少中不同的方法拼凑出w*h。解题思路:回溯法,注意拼图的宽如果不等于长的话,是可以旋转的。#include #include const int N = 20;const int M = 105;i原创 2014-01-01 15:54:25 · 1885 阅读 · 0 评论 -
uva 1420 - Priest John's Busiest Day(贪心)
题目链接:uva 1420 - Priest John's Busiest Day题目大意:有一个司仪,要主持n场婚礼,给出婚礼的起始时间和终止时间,每个婚礼需要超过一半的时间做为仪式,并且仪式不能终止。问说司仪能否主持n场婚礼。解题思路:贪心,为了尽量主持多的婚礼,每场的仪式时间就一定要尽量短d=(t-s)/2+1,(因为必须大于一半,所以加1)。然后按照每场婚礼可以最早原创 2014-01-01 21:25:48 · 1644 阅读 · 0 评论 -
uva 1419 - Ugly Windows(暴力)
题目链接:uva 1419 - Ugly Windows题目大意:给出一张图,模仿电脑窗口,问有哪些窗口未被其他窗口覆盖。解题思路:水题,先找到一个点,然后枚举出长宽,再判断框框和框框里面。注意样例中的特殊情况,左上角被覆盖。#include #include const int N = 105;int r, c, v[N];char g[N][N]原创 2014-01-01 23:29:37 · 1321 阅读 · 0 评论