搜索-暴力-枚举
LYoGa
这个作者很懒,什么都没留下…
展开
-
UVA10167
水题。。。。。#includeint main(){ int arr[110][110]; int n; while(scanf("%d", &n) && n){ for(int i = 0;i < 2 * n; i++) scanf("%d %d", &arr[i][0], &arr[i][1]); int cnt1 , cnt2 , flag = 1, a,原创 2013-07-18 17:01:03 · 554 阅读 · 0 评论 -
HDU4930-Fighting the Landlords
题意:斗地主,就是要自己出牌,使得对手在这一轮无法出牌,或者有出牌的可能,但是你的牌已经走完了。如果符合这些条件的话,输出Yes,否则输出No。思路:先预处理能直接把牌走完的情况,如果不行的话就直接暴力枚举能获胜的情况。#include #include #include #include using namespace std;const int MAXN原创 2014-08-07 22:10:22 · 794 阅读 · 0 评论 -
UVA11889 - Benefit
题目链接题意:输入两个整数A和C,求最小的整数B使得lcm(A, B) = C,如果无解,输出“NO SULUTION”。思路:lcm(A, B) * gcd(A, B) = A * B转化为C / A = B / gcd(A, B),所以可以枚举B的倍数。代码:#include #include #include #include using n原创 2014-09-06 18:05:04 · 992 阅读 · 0 评论 -
ZOJ3818-Pretty Poem(暴力枚举)
题目链接原创 2014-09-07 21:21:05 · 1283 阅读 · 0 评论 -
UVA471- Magic Numbers
题目链接题意:s1/s2=N,s1、s2、N都是各个位数上数字不相同的整数。给定N,求有多少个这样的式子并输出。思路:其实最大的数只能是9876543210,所以我们只要暴力枚举,枚举过程中判断s1、s2是否符合题目要求。#include #include #include #include #include using namespace std;原创 2014-08-11 20:55:36 · 703 阅读 · 0 评论 -
UVA1523-Helicopter(暴力+全排列)
题目链接题意:有八个乘客坐在直升机上,求重心M最小值。思路:根据题目所给的公式,我们可以知道要使得M最小,也就是要使得Mv和Mh的和最小,我们可以使用全排列,分别将每个值放在各个位子上,然后更新最小值。#include #include #include #include #include using namespace std;const int原创 2014-08-13 17:59:42 · 1025 阅读 · 0 评论 -
UVA812-Trade on Verweggistan(暴力)
题目链接题意:商人要去买pruls这种东西。然后它的价值是一个序列,买的时候要严格从头到尾取,比如你要买第5个,那么前4个也要一起买下来,求商人能获得的最大的利润。思路:最大利润肯定就是每个序列的最大值的和。对于输出的话,我们记录下每行能取得最大值的位置,然后回溯去计算所有可能值,然后输出前10个最小的值。#include #include #include原创 2014-08-14 21:43:14 · 795 阅读 · 0 评论 -
UVA585- Triangles(暴力枚举)
题目链接题意:找出所给图形中,没有被染色的最大的三角形的面积。思路:仔细观察图形可以发现大三角形的形成是已一个未染色小三角形为基础,然后一层一层往上叠加(如果整层没被染色)。从上往下看图形不难发现,如果小三角形的底边朝上,叠加是向上形成的,底边朝下,叠加是向下形成的。所以我们可以枚举每一个没有被染色的小三角,更新能叠加的最大的层数,也就能得到最大三角形的面积。原创 2014-08-16 15:48:26 · 874 阅读 · 0 评论 -
UVA654- Ratio(暴力枚举)
题目链接题意:给出两个数n,m,求分母从1-m越来越接近n/m的序列思路:从1-m枚举分母i,然后维护一个值,使序列越来越靠近n/m。分子j的话,j/i趋近于n/m时,可以得到(int)j=i*n/m+0.5。代码:#include #include #include #include #include using namespace std;原创 2014-08-16 20:00:08 · 748 阅读 · 0 评论 -
UVA10827 - Maximum sum on a torus
题目链接题意:给出一个环形矩阵,也就是第一行和最后一行是相连的,第一列和最后一列是相连的,求最大的子矩阵的和思路:只要将矩阵复制四个,那么就可以按照求一个矩阵内最大子矩阵之和的做法去做,即枚举所有子矩阵的和,更新最大值。要注意在转换后的大矩阵,枚举的子矩阵规格是有范围的。代码:#include #include #include #include原创 2014-08-16 17:47:41 · 869 阅读 · 0 评论 -
1419 - Ugly Windows(暴力枚举)
题目链接题意:在一个界面上有多个窗口,求没有被其他窗口覆盖的窗口的个数。思路:直接暴力枚举每个窗口的长和宽,以确定右下角是否与左上角相同,如果相同再判断矩形内部有没有被其他窗口覆盖到,注意边界覆盖也是算被覆盖到。代码:#include #include #include #include using namespace std;const in原创 2014-08-17 14:25:13 · 895 阅读 · 0 评论 -
UVA10483 - The Sum Equals the Product(枚举)
题目链接题意:在实数a,b之间找到一个数c(最多到小数点的后两位),找出存在c = x + y + z = x * y * z,按字典序输出。思路:先将数都扩大100倍,方便计算。但直接枚举所有情况的话会TLE,所以我们要缩小枚举范围。先枚举x,因为x,y,z要按照非递减顺序,所以x * x * x必须要小于c * 10000,再枚举y,同理可的x * y * y也必须原创 2014-08-18 20:20:53 · 709 阅读 · 0 评论 -
HDU5007-Post Robot
题目链接题意:出现Apple、iPod、iPhone、iPad时输出MAI MAI MAI!,出现Sony,输出SONY DAFA IS GOOD!思路:水题,直接暴力求解代码:#include #include #include #include #include using namespace std;int main() { s原创 2014-09-14 23:14:13 · 2690 阅读 · 0 评论 -
HDU4925-Apple Tree
题意:n*m网格中种苹果,每个网格要么施肥,要么种一个苹果,每个种苹果的格子,如果它的上下左右有各自有施肥的话,每有一个,苹果数量*2,求怎么种使得苹果数量最多。思路:交叉种植,即黑白染色法可得到最优解。注意特判当n=m=1时的情况。#include #include #include #include using namespace std;const in原创 2014-08-07 21:15:42 · 850 阅读 · 0 评论 -
UVA1508-Equipment(状态压缩+暴力枚举)
题目链接 题意:有n个装备,每个装备分别有5个属性值。要你从中选出k个装备,使得所得的实力加成最多。(每个属性值要选k个装备中最大的那个数值)思路:5个属性值可以有2^5-1种方案,所以直接暴力枚举所以子集,找出和最大的k个。我们可以预处理每个子集在k个装备中出现的最大值。PS:二进制表示子集还是很好用的,必须要好好掌握。参考思路#incl原创 2014-08-08 20:38:36 · 895 阅读 · 0 评论 -
UVA216 Getting in Line
题意:连接各个点,找出最短路径思路:全排列,更新最小值#include#include#includeusing namespace std;int b[8], c[8];struct node{ int x, y;}a[10];double lenth(double x1, double y1, double x2, double y2){ return sqr原创 2013-07-21 15:27:04 · 618 阅读 · 0 评论 -
UVA10474
题意:找出目标数在所输入数组的位置思路:排序完,在搜索#include#include#include#define N 10050using namespace std;int a[N], b[N];int main(){ int n, m, t = 0, flag; while(scanf("%d%d", &n, &m) == 2 && (m || n)){ me原创 2013-07-20 10:13:32 · 613 阅读 · 0 评论 -
uva10098
题意:输出字符串的全排列注释:去看STL的next_permutation函数,无比强大#include#include#includeusing namespace std;void print_permutation(int n, char *p, char * a,int cur){ if(cur == n){ for(int i = 0; i < n; i++)原创 2013-07-18 17:08:49 · 601 阅读 · 0 评论 -
UVA216-Getting in Line
题意:给出不超过8个点的坐标,要求所铺的电路最短思路:因为点的数量最多不会超过8个,所以可以直接暴力搜索。利用全排列,将所有可能的情况都计算一次,更新最短路进。#include#include#includeusing namespace std;int b[8], c[8];struct node{ int x, y;}a[10];double lenth(do原创 2013-08-25 21:17:06 · 674 阅读 · 0 评论 -
UVA11292-The Dragon of Loowater
题意:给出龙的头数和头的数值,勇士的人数和需要用的钱,求出国王话费最少的钱才能将龙杀死,也可能杀不死思路:先将两个数组排序,然后进行比较就可以了#include#include#include#includeusing namespace std;int main(){ int n, m; while(scanf("%d %d", &n, &m) && n && m原创 2013-07-18 17:04:41 · 529 阅读 · 0 评论 -
UVA270- Lining Up
题意:输入几组点,求出每组的在同一直线上的点的个数最多思路:暴力搜索,先以两个点构成一条直线,求斜率,然后再在求其他点与其中一个点的斜率是否与开始那条相同,如果相同则ans++,并且将相同斜率的点标记,防止下次再访问。#include #include #define N 705using namespace std;struct point{ int x, y;}原创 2013-11-05 20:12:18 · 809 阅读 · 0 评论 -
UVA10340
题意:从字符串2中找出是否存在能组成字符串1,要按照顺序思路:有点水。。。就是简单的暴力搜索#include #include #include #define N 100010using namespace std;char str1[N], str2[N];int s[N];int main() { while (scanf("%s", str1) != E原创 2013-11-19 20:53:03 · 905 阅读 · 0 评论 -
UVA10700
题意:求出一组数据可能出现的最小值和最大值,符号只有‘+’和‘*’思路:通常我们遵循乘法优先,可以求出最小值,至于最大值,我们就让加法成为优先级,相当于,先算加法,再算乘法,主要用数组模拟#include #include #define N 30char str[N];double s[N], max, min;int main() { int n; sca原创 2013-11-19 21:02:25 · 829 阅读 · 0 评论 -
UVA12554
题意:唱生日快乐歌,如果人数少于16个,就每人一句接下去,重复唱,直到歌曲唱完。如果超过16个人,就必须每人至少唱一句,也要求必须整首歌唱完,不能中途停下。思路:有点水,不过要注意切换,整首歌的下半部分,唱的的是“to Rujia”,要记得换过来#include #include #include #define N 110using namespace std;char原创 2013-11-05 20:04:53 · 746 阅读 · 0 评论 -
UVA10602
题意:输入一些字符串,要求所需按键的次数最小思路:先将所有字符串排序,然后再将前一个与后一个比较,找出要按键的次数,然后进行累加,刚开始WA是因为写成,计算两个字符串不同的字母,实际是要在出现第一个字符出现不同后,后面的字符全都要用按键输入了。#include #include #include #define N 105using namespace std;char原创 2013-12-05 20:44:12 · 684 阅读 · 0 评论 -
HDU4961-Boring Sum(质因子)
点击打开链接题意:给出n个数的数列a,bi的取值为在1 思路:如果直接暴力的话一定会超时,所以我们可以开一个vis数组来记录每一个值所对应的最大的下标是多少。即每查找ai,分解出ai的质因子,更新vis数组。代码:#include #include #include #include #include using namespace std;原创 2014-08-19 19:20:26 · 725 阅读 · 0 评论 -
HDU4970-Killing Monsters
题目链接题意:塔防游戏,长为n的一条路上建造m个箭塔,每个箭塔攻击范围为[l, r],每格造成伤害为d,再给出k只怪兽的血量h,出现位置x,怪兽向前走,问最后还有几只怪兽存活。思路:先求出每个格子造成的伤害,开一个stack数组,stack[l] += d,stack[r + 1] -= d,然后从前往后扫描一次,这样就可以得到每个格子造成的伤害;然后求出第1格到第i格原创 2014-08-19 20:04:49 · 641 阅读 · 0 评论 -
UVA11461- Square Numbers
题目链接题意:求a到b之间的平方数的数量思路:暴力,水题代码:#include #include #include #include #include using namespace std;const int MAXN = 100005;int vis[MAXN];int judge(int n) { double a =原创 2014-09-15 16:59:39 · 1071 阅读 · 0 评论