暴力求解
文章平均质量分 72
miss_minor
坚持,请你坚持
展开
-
UVA11898 - Killer Problem(暴力)
UVA11898 - Killer Problem(暴力)题目链接题目大意:给你n个数字(有顺序),然后给你范围l和r,让你在这个范围内找出最小的绝对差值。解题思路:因为这个数字的范围是从1到10000,这样就说明长度大于10000的时候,肯定会有相同的数字出现,所以结果一定是0;同样也说明最多只需要判断10000个数字,这是最极端的情况,所以暴力可以过。代码:原创 2014-10-21 11:04:01 · 765 阅读 · 0 评论 -
uva 10012 - How Big Is It?(排列 + 回溯)
题目:uva 10012 - How Big Is It?题目大意:给出n个圆的半径,要求圆要和地面相切,求这样的圆怎么组合能够使得盒子的宽度最短。解题思路:这题里面情况会有两个大圆相切,然后中间夹多个小圆,这样这些小圆的距离就不用算入盒子的宽度了,这里先用排列组合的方式将这几个圆全部的组合方式排列出来,这样这些圆的前后关系就定了,但是现在就需要判断这样的情况下的盒子的宽度原创 2014-04-24 15:59:26 · 1050 阅读 · 0 评论 -
188 - Perfect Hash
题目:188 - Perfect Hash题目大一:根据题目的算法,找出最小的C。解题思路:因为题目有说C至少要是w集合的某一个的倍数,又要找最小的,所以现在w内找个最小的,然后在根据所给的条件遍历判度所有的w是否满足要求,如果不满足就根据要求更换C,然后再次判断。#include#includeconst int N = 100000;char s[N];int wor原创 2014-04-01 22:25:49 · 1087 阅读 · 0 评论 -
11205 - The broken pedometer
题目:11205 - The broken pedometer题目大意:就是最少几盏灯可以表示所给的所有数字,这些灯可以不连续。解题思路:枚举出每一盏灯的好坏情况,好的灯的话就说明可以亮,然后这题别人和我说的是巧用二进制位运算,后面发现真的很方便也很快。但是我做的不是这样的,=比较麻烦,用数组保存灯的状态,然后判断的时候逐个数相与, 保存在数组中,再转换成十进制,这样确实麻原创 2014-02-23 21:16:51 · 685 阅读 · 0 评论 -
167 - The Sultan's Successors(八皇后问题(回溯))
题目167 - The Sultan's Successors题目大意:就是八皇后的问题,只是加上求八个皇后所对应的位置对应的值相加的最大值。阶梯思路:八皇后问题转换成全排列问题,C【i】 = j 表示第i行 的皇后在第j列,这样排列的话每行的皇后不会互相冲突,就需要判断每列的皇后和两条对角线是否有冲突的皇后,所以这需要开一个数组vis【3】【MAXN】, 每次判断vis【原创 2014-04-04 18:44:40 · 1158 阅读 · 0 评论 -
uva :185 - Roman Numerals(dfs)
题目:uva :185 - Roman Numerals题目大意:给出一个字符串的等式,问这个字符串是否是罗马等式吗?有符合的阿拉伯等式吗?前者是就输出correct or incorrect ,后者就得分情况:ambiguous 能组成阿拉伯等式的字母组合大于等于2, valid 能组成阿拉伯等式的字母组合只有1种impossible 没有符合阿拉伯等式的字母组合。解原创 2014-05-08 23:44:53 · 956 阅读 · 0 评论 -
uva:321 - The New Villa(bfs + 哈希判重)
uva:321 - The New Villa题目大意:就是有一个男青年买了一栋大房子,但是他又怕黑,他的卧室又在的通过走廊和另外的房间才能到达,但是走廊的有灯亮着他才敢走,所以现在题目给出每个走廊和房间的门是通向哪里的,和在这个房间内的开关是控制那个房间的。问他能够找到方法使得他能够回到自己的卧室并且最后只剩卧室里的灯是亮的。解题思路:总体的思路是bfs,只是原本是上下左右的移动原创 2014-03-18 22:36:13 · 779 阅读 · 0 评论 -
146 - ID Codes
题目:146 - ID Codes题目大意:给出一个字符的全排列,字符可以重复,但是排列方式有先后顺序,就是从小到大的排,例如1个a, 2个b,排列:aab, aba, baa,题目问的是给出一个序列,看后面还有没序列,有输出紧接着的一个,如果是最后一个就输出No Successor。思路:就是uva书上的7.2.2的改造,将重排范围缩小到从后向前找到的第一个反常的字符,后转载 2014-02-23 23:26:38 · 675 阅读 · 0 评论 -
10167 - Birthday Cake(直接枚举)
题目:10167 - Birthday Cake题目大意:就是直线ax+by = 0 这条直线将所给的点平局分成两部分,不允许在线上,求这样直线的a,b;解题思路:这题可以用直接枚举,本来题意的枚举量是500*500*200,这个数会超时,但是鉴于这里枚举的值有对称的,而且一满足要求就直接退出了,不在进行枚举。所以不需要找到最后。#includeconst原创 2014-02-27 16:09:00 · 675 阅读 · 0 评论 -
10391 - Compound Words(stl map)
题目:10391 - Compound Words题目大意:找出有里面出现过的两个单词组成的符合串找出来,按字典序打印。解题思路:把出现过的单词用map记录下来,然后把每个单词都分两半来考虑是否出现过,两半可以长短不一。注意:审题要仔细,这题当初就是漏了符合串是由两个单词组成的。#include#include#include#include#includeusing原创 2014-04-01 22:36:53 · 897 阅读 · 0 评论 -
10422 - Knights in FEN(迭代深度搜索)
题目:10422 - Knights in FEN题目大意:5 * 5的棋盘上摆好了旗子,旗子是按照马走日的规则来的,问能在十步之内将起始的棋盘变成题目所给的棋盘那样吗?可以输出最少步数,不可以就输出不行。解题思路:这题之前我是想着用bfs,但是那个时候判重的时候没有想到用STL,用哈希不太会,直接开数组判重又太大了,用set来记录一个棋盘的状态(之前没有想到),后来看了别原创 2014-03-05 21:23:30 · 873 阅读 · 0 评论 -
uva519 - Puzzle (II)(回溯)
题目:uva519 - Puzzle (II)题目大意:给出拼图,要求将给出的拼图拼成 n行m列的矩形,可以输出yes,不行输出no。解题思路:直接dfs,但是需要剪枝。1、判断 F 的出现个数是否等于 2 * ( n + m) , 还有IO的个数是否匹配。2、边界问题要处理,例如第一行第N行,第一列第M列,这些地方的拼图是有要求的,这些边界拼图的的外围都要是F。例如第一行原创 2014-05-14 23:41:50 · 808 阅读 · 0 评论 -
HDU4995Revenge of kNN(暴力)
题目:HDU4995Revenge of kNN(暴力)题目大意:给你一维的N个点,每个点有X坐标,和V值,然后现在给你M个修改,接下来的M行每行给你一个Qi(前面的N个点的序号1--N)。要求每次取离X(Qi)最近的K个邻居,然后将X(Qi)的值改为(这K个邻居的值的平均值),最后输出这M次修改值的和。如果距离相同的话就取原先读入下标小的那个邻居。解题思路:先将这N个点按原创 2014-09-13 19:46:07 · 975 阅读 · 0 评论 -
UVA10273 - Eat or Not to Eat?(暴力)
UVA10273 - Eat or Not to Eat?(暴力)题目链接题目大意:一个农场的主人为了改善收入决定每天要将产量最少的那一头牛杀掉,但是如果这一天出现了多只产量最小的牛,那么这一天一头也不杀。然后给你n头牛,给你每头牛的产量周期和周期内的产量,问多少天后可以确定剩余的牛的情况。解题思路:求出这n头牛的周期的最小公倍数,那么在这个周期内,如果没有牛被杀的话,那么原创 2014-09-23 14:51:49 · 955 阅读 · 0 评论 -
10603 - Fill(BFS)
题目:10603 - Fill题目大意:倒水问题。给出三个杯子,杯子都有固定容量但是没有刻度,并且第一二个杯子是空的,第三个是满的。然后给出想要的水量,问最少要倒多少的水才能得到这个水量,如果不能得到的话,最接近这个水量且小于这个水量的是多少,同样为了得到这个新的水量要的最少的倒出的水。解题思路:这是隐式搜索图问题,把倒水后得到的状态作为图来遍历,并且开一个二维的数组来保存原创 2014-03-05 15:00:58 · 935 阅读 · 0 评论 -
11218 - KTV(dfs)
题目:11218 - KTV题目大意:ktv里有9个人,唱歌的话分三个一组,然后给出n中可能的分组,和每个分组的得分,求最多的得分。解题思路:这题就是dfs,但是要注意这里的每个人都需要并且只能在一个组里。代码:#include #include const int N = 100;int comb[N][3], score[N];int n, v原创 2014-05-22 23:11:04 · 891 阅读 · 0 评论 -
11210 - Chinese Mahjong(dfs)
题目:11210 - Chinese Mahjong题目大意:给出十三个麻将, 问再取哪一个能胡?把所有的情况列出来,并且按照题目要求的顺序。胡的条件需要一个而且仅一个对,然后剩下要么是三个相同的,要么是三个连续的(前提是后缀相同,并且只有 T, S, W在考虑范围内)解题思路:把要取的情况一个个枚举出来,然后dfs, 找是否加入这个可以胡就可以了,找的话就三种情况去判断一原创 2014-05-22 23:05:21 · 804 阅读 · 0 评论 -
131 - The Psychic Poker Player(直接枚举)
题目:131 - The Psychic Poker Player题目大意:刚开始我一点都不懂题目要我们做什么,后来看了别人的题解,发现原来是打某种类型的纸牌,手上有5张牌,桌上也五张牌,这个人可艺从手中丢弃某些牌,从轴上摸去相等数量的牌,桌上的牌是有顺序的,然后问手上最好的牌是什么。解题思路:直接枚举丢牌和摸牌的情况,一共有2的5次方种,这里我用了位运算,用一个数来代替舍原创 2014-02-26 15:26:57 · 714 阅读 · 0 评论 -
592 - Island of Logic
题目:592 - Island of Logic题目大意:岛上住了三种生物,生物‘d’只会说真话,生物‘h’到了白天说真话,晚上说假话。生物‘e’之火说假话,现在要求给你A,B,C,D,E之间的对话(可能对话人物会不满5人)要求能确定的人或是白天黑夜输出。解题大意:枚举所有的人的角色和白天黑夜,这样一共有3*3*3*3*3*2 = 486种,这题错在数组开太小,卡了好久。还原创 2014-03-02 15:24:00 · 739 阅读 · 0 评论 -
110 - Meta-Loopless Sorts(递归)
题目:110 - Meta-Loopless Sorts题目大意:模拟比较的过程。解题思路:递归。详细的解释在代码里面。#include#includeconst int N = 10;int m, n;//打印空格void printf_nul(int n){ for(int i = 1; i <= n; i++) printf("原创 2014-03-03 23:35:41 · 786 阅读 · 0 评论 -
10125 - Sumsets
题目:10125 - Sumsets题目大意:从给出的数的集合中,找出里面某个值d,d = a + b+ c;(a,b, c也是属于这个集合)。要求求最大的d。阶梯思路:把集合里的数排序,然后d从小到大的尝试, b + c = d - a。 a的话也从做大的尝试,这样能快速找到不符合的,然后 b 和c 从两头开始判断,b取最小的,c去最大的,然后如果版 b + c> d -原创 2014-04-03 09:09:30 · 786 阅读 · 0 评论 -
10098 - Generating Fast
题目:10098 - Generating Fast题目大意:输出一个字符串的全排序,按升序输出。解题思路:这和之前的两题都差不多,就是枚举排列,这里我用了next_permutation(s, s + len);原本没看到书上有提供直接调用来生成排列的函数。#include#include#includeusing namespace std;con原创 2014-02-27 16:25:19 · 597 阅读 · 0 评论 -
poj 2912 Rochambeau(带权并查集 + 暴力)
题目:poj 2912 Rochambeau(带权并查集 + 暴力)题目大意:题目给出三个团队和一个裁判,这三个团队和裁判一起玩剪刀石头布,然后规定每个团队必须出一样的,只有裁判可以任意出。然后给出关系,x > y 代表 x 赢y , x 解题思路:这题重点是裁判在里面会扰乱关系,并且n * m 才 100000,完全可以暴力。每次假设i是裁判,然后和裁判相关的关系都忽略,原创 2014-04-27 22:35:38 · 963 阅读 · 0 评论 -
10001 - Garden of Eden(dfs)
题目:10001 - Garden of Eden题目大意:题目给出元胞自动机的种类,和要处理的元胞长度,和元胞字符串,问这个元胞是否可以由其他的元胞转换而来,是的话输出REACHABLE,否则输出GARDEN OF EDEN。这题最让人困惑的就是题意了,去搜别人的解题报告看题意结果还是看不懂,最后只能结合代码来理解题意。所以以下是我结合代码理解的题意,可能和题目原本的意思有些原创 2014-04-12 10:44:35 · 1039 阅读 · 0 评论 -
10887 - Concatenation of Languages(stl set)
题目;10887 - Concatenation of Languages题目大意:给出语言A和语言B,求这两种语言拼接可以有多少不同的复合语言。阶梯思路:用set来剔除重复的,注意这里的输入要用gets(),因为语言会有空串。还有不要进行多余的,不必要的复制,会超时。#include#include#include#includeusing namespace std原创 2014-04-03 17:58:32 · 887 阅读 · 0 评论 -
539 - The Settlers of Catan
题目:539 - The Settlers of Catan题目大意:给出一系列的点和相应的边,求最长的路径,路径是由相连的边构成的,每个边最多被用一次。阶梯思路:回溯,每次都从一个点开始dfs,如果发现走过相同的边,就把长度记录下来,然后把状态恢复,走别的路。最后去这些路径中最长的。注意:每个点都有可能成为最长路径的起点。#include#include原创 2014-04-03 17:52:38 · 1070 阅读 · 0 评论 -
193 - Graph Coloring(DFS)
题目:193 - Graph Coloring题目大意:给出一个图,图里面有点和边,要求相邻的点不可以都是黑色的,问怎样上色黑色的点最多的,给出字典序最大的那种组合情况。#include #include const int N = 105;int n, m, s[N][N], ans[N], cas, count, vis[N];bool judge (int x, in原创 2014-05-02 12:17:29 · 863 阅读 · 0 评论 -
uva208Firetruck(并查集 + DFS)
题目:Firetruck题目大意:给出终点,起点的编码永远都是1,问有多少走法可以从起点到终点,并输出路径。解题思路:这题就是用dfs,但是如果不进行剪枝的话,21个城市这样dfs的话会超时,所以这里就用并查集来判断起点和终点是否相通,这里的判断方法是给两个数组用来代表每个数组的父节点,一个是用来判断是否与起点相同,另一个是用来判断与终点是否相通,相通即在同一个集合中。原创 2014-04-13 19:43:49 · 1861 阅读 · 6 评论 -
10282 - Babelfish(stl map)
10282 - Babelfish题目大意:就是构建一个字典,用来查询单词。阶梯思路:用stl map,用来一一对应单词。然后string可能不支持printf,之前一直都错在这里。然后前面输入的需要注意一下,接受空行用gets和s【0】 == ‘\0’结合判断。#include#include#include#includeusing namespace std;原创 2014-03-31 19:35:50 · 811 阅读 · 0 评论 -
141 - The Spot Game(STL set)
141 - The Spot Game题目大意:给出n* n的棋盘,有两个玩家,每个玩家都可以往棋盘上放棋子或是移除一个棋子,判断哪个玩家做完上述动作后的棋盘和之前相同,那这个玩家就输了。棋盘重复包括旋转相同,光看上诉给的图示会漏了一种,分为左旋转,右旋转,180度上下旋转,加上自身一共四种。解题思路:用stl里的set来判重,每次都把这个状态的其他相同的状态找出来,然后逐一的原创 2014-03-29 10:55:33 · 611 阅读 · 0 评论 -
uva 10591 Happy Number(判重)
description:Problem CHappy NumberTime Limit1 Second Let the sum of the square of the digits of a positive integer S0 be represented by S1. I原创 2014-03-29 11:05:04 · 691 阅读 · 0 评论 -
uva:10085 - The most distant state
10085 - The most distant state题目大意:就和八码数问题类似,只是题目没有给最终的状态,要求你自己写出最终的状态,并且给出最短的路径。解题思路:和八码数的解题思路是相同的,只是不给最终的状态,而是让它自己去bfs()直到最后已经不能在走的地步(再走下去就会重复的情况),这里的判重用了哈希判重。然后就是存储路径问题:开了一个数组dis【】用来存原创 2014-03-07 15:52:48 · 797 阅读 · 0 评论 -
uva:704 - Colour Hash
题目:704 - Colour Hash题目大意:有一个彩色的两个轮子的拼盘,每次转动都是同颜色的一起转动。转动有四种,左边的顺时针,右边顺时针,左边逆时针,右边逆时针。解题思路:刚开始用单向bfs,结果忽略了数组太大了,要4^16大小的数组,编译器开不下,所以改用了双向的bfs(),先逆向的bfs()一次,遍历步数只要到8就可以。以后每组数据再从正向开始bfs()原创 2014-03-10 20:04:58 · 661 阅读 · 0 评论 -
639 - Don't Get Rooked(搜索回溯)
题目:639 - Don't Get Rooked题目大意:在给定的棋盘中,看最多可以放多少个棋子。放棋子规则:同一行同一列不可以有两个以上的棋子,除非中间有墙隔着。阶梯思路:让每个棋子从不同的起点开始,然后往后遍历,例如如果是按先行再列的顺序遍历的话,如果当前已经便利完x,y;那么下一个遍历开始的位置就是x,y+ 1.注意判断完前面的位置之后,只需要从这个位置的后面开始判原创 2014-04-04 09:59:14 · 1174 阅读 · 0 评论 -
uva:310 - L--system(字符串处理+ bfs)
310 - L--system题目大意:给出替换的a, b字符串,用来替换遇到的a, b,和起始的字符串和目标字符串,问能否构成形如:(x目标字符产y)这样的字符串;其中x, y可以为空。解题思路:刚开始想用bfs每次替换一个a,或是b,然后储存起来,但是这样的话最后的数组变得非常的大;后来借鉴了别人的思路:他是把原字符串里面长度小于等于目标字符串长度的子串分离出来,做标志原创 2014-03-20 15:26:08 · 919 阅读 · 0 评论 -
uva 565 - Pizza Anyone?(暴力枚举 + 二进制)
题目:uva 565 - Pizza Anyone?(暴力枚举 + 二进制)题目大意:题目是说有一个人要帮他的朋友门定批萨,然后每个朋友都有自己的口味要求,问能不能定一个批萨然后满足每个朋友的至少一个要求,输出要求按字典序。能就输出所定批萨里面加的东西;不能就输出:No pizza can satisfy these requests.解题思路:这题里面有16种材料,每种材原创 2014-05-10 19:34:18 · 879 阅读 · 0 评论 -
216 - Getting in Line(dfs)
题目:216 - Getting in Line题目大意:给出一系列的点的坐标,怎样把这些点串起来达到长度之和最小。解题思路:这题就是dfs,然后就是记录哪个点串哪个点,这两个点长度多少的问题。#include #include #include const int N = 10;int n, vis[N], dis[N], tem[N];float min原创 2014-04-11 14:12:26 · 849 阅读 · 0 评论 -
uva:307 - Sticks(dfs + 剪枝)
题目:307 - Sticks题目大意:给出不多于50个的木棍块,这个木棍块又是由一些等长的木棍被随意切割而成的,所以现在题目要求要找出这些木棍块能拼出的最多的木棍长度。解题思路:这题就是dfs + 剪枝。剪枝的地方有4处:1.木棍的长度一定会是这些木棍块加起来的长度的约数,并且木棍是被切割的,所以一定不能小于最长木棍块长。2.将木棍块从大到小排序,找能否拼成某原创 2014-03-06 23:57:54 · 2898 阅读 · 3 评论 -
uva :10123 - No Tipping(dfs + 几何力距 )
题目:uva :10123 - No Tipping题目大意:给出l, m, n 分别表示 长度为l 的杠杆, 重量为 m, 有n个物体放在上方。问每次从上面挑选一个物品移除,是否能使杠杆继续平衡。这个过程中都可以的话,就输出移除顺序(不唯一) 否则就输出 impossible ,一开始,这个杠杆就不平衡的情况也会是有的。因为杠杆也是有重量的。解题思路;1、这题先前我就不明白什原创 2014-05-12 00:14:55 · 1154 阅读 · 0 评论 -
301 - Transportation(dfs)
题目:301 - Transportation题目大意:给出车的限载人数,n个b城市,和m张订单,问如何选择订单可以使得盈利最大。 盈利 = 各个订单的金额之和 每个订单金额 = 路径 * 人数 ,每个图都有A城市。解题思路:这题用dfs,每张订单可以选也可以不选,选择的话又的分能不能选,要在限定的数目内才可以接受订单。还有订单要排序,因为车始终是从A到B,这样的话当然是起点越小的原创 2014-04-11 09:11:15 · 749 阅读 · 0 评论