暴力枚举
文章平均质量分 65
deepquiet
这个作者很懒,什么都没留下…
展开
-
Even Parity
题意:将矩阵每个元素的上下左右之数之和调为偶数思路:第一行变化无非2^n种可能,所以枚举第一行,累推出剩余的行累加每个待确定元素上,左,右(如果有的话),然后推出下的值,如果下的值是1且推出的值是0,则不行代码:#include#include#include#include#include#includeusing namespace std;const原创 2016-02-05 11:13:36 · 1213 阅读 · 0 评论 -
Robots(II) uva10599
题意:一个机器人,只能往下或者往右走,求其能拾到的最多垃圾数,统计能拾到最多垃圾数的路径,然后输出一条路径思路:用一个数组g,递增的存储垃圾所在的格数-1,那么g[i]%c即时这个垃圾在的列数-1枚举所有的垃圾,再枚举在其之前的垃圾,如果这个垃圾的g[i]%c>=g[j]%c,那么可达,此时就要判断dp[i] dp[i] == dp[j]+1, 路径数累加,即有多个通向i的原创 2016-02-26 15:53:35 · 316 阅读 · 0 评论 -
Antimatter Ray Clearcutting uva11008
题意:给出n棵树的位置以及要消灭的树的数量m,同一直线上的树可一枪消灭,求最少枪支数思路:记忆化搜索,将树是否存在用二进制表示,一开始则是(1然后枚举所有的树,与当前的状态st相与判断树是否消灭,然后枚举其后的数,再枚举可能与之前枚举的两棵在同一直线上的树,如果在直线上,则可消灭最后取当前花费枪支的最小值技巧携带还需消灭的树会简化代码代码:#include原创 2016-02-26 16:44:55 · 290 阅读 · 0 评论 -
Soju uvalive5845
题意:点分为两个区,一个区的横坐标小于第二个区,求abs(x1-x2)+abs(y1-y2)的最小值思路:主要思想就是把下标一样的同一到一边,那就要由于x1代码:#include#include#includeusing namespace std;const int maxn = 100005;const int INF = 0x3f3f3f3f;int原创 2016-03-12 15:07:32 · 305 阅读 · 0 评论 -
Tour uvalive3305
题意:给出n个点,要求飞行员严格从1点出发至最右点(只能往右),再严格往左回到1思路:由于是闭合的,所以n与n-1一定是相连的,那么一定有总路劲是dp[n][n-1]+a[n][n-1],dp[n][n-1]表示从n走到1在从1走到n-1,从而构成环i与i-1有可能是一侧也有可能是两侧,在枚举i-1之前的点j:如果一侧,那么有dp[i][j]=dp[i-1][j]+a[i][i原创 2016-04-10 15:52:55 · 248 阅读 · 0 评论 -
暴力枚举--uva10132
算法原创 2017-03-15 15:20:25 · 284 阅读 · 0 评论 -
uva10763
题意:可以想象成数字的交换,然后最后判断是否有相换的数字是否有在换回来思路:如果匹配的話那麼兩邊的輸入排序後一定是一致的代碼:#include#includeusing namespace std;const int N = 500005;int n, n1[N], n2[N];int main() { int i; while(scanf("%d", &n) && n)原创 2017-04-04 16:55:18 · 902 阅读 · 1 评论 -
uva270
题目的意思就是给出n个点的坐标,选出最多的点,在一条直线上。就是连接任意两点得到一条线,然后遍历每个点,算出在这条线上点的数量代碼:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[1000];int x[1000],y[1000];int len;void input() {原创 2017-04-04 19:16:52 · 260 阅读 · 0 评论 -
uva10341
题意:给出一个方程,求解X;思路:因为方程是单调递减的,所以二分求解;代碼:#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>#include<cstring>#include<string>using namespace std;double p, q, r, s, t, u;double solv原创 2017-04-04 19:47:33 · 341 阅读 · 0 评论 -
uva 10057
求中位數,允許的解有幾個以及數組中存在幾個解 代碼:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>using namespace std;const int maxn = 1000005;int a[maxn];int main() { int n;原创 2017-04-04 20:28:37 · 280 阅读 · 0 评论 -
uva10706
题目大意:有这样一串序列11212312341234512345612345671234567812345678912345678910123456789101112345678910…,问第i个位置数的值。代碼:#include<cstdio>#include<cmath>#include<cstring>int p;long long sum[33000];char buf[15000原创 2017-04-04 21:13:14 · 392 阅读 · 0 评论 -
uva10487/lower_bound使用
题目大意: 给出的数中,任意两个数相加,找出最接近query的数。思路: 把任意两个数加起来之后,排序完之后,用lower_bound找到插入query的位置,然后找到它左右两边的与它最近的数。输出就可以了。ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, l原创 2017-04-04 23:13:46 · 318 阅读 · 0 评论 -
uva10340
题目:判断a串是不是b串的子串。 代码:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>using namespace std;string s1,s2;int main() { while(cin>>s1>>s2) { int flag =原创 2017-04-04 23:31:45 · 315 阅读 · 0 评论 -
uva10034 Freckles
题意:最小生成树思路:1.求出每两点之间的距离,去一个点最为根,将所有点的距离初始化为到根的距离2.求出未考虑的点到已考虑的点的最短距离,并标记这个点为已考虑(里层循环),每纳入一个新点,就调整未考虑的点到已考虑的点的最短距离3.2执行n此或者到找不到可纳入的点代码:#include#include#include#include#includeusing原创 2016-03-11 13:40:25 · 265 阅读 · 0 评论 -
UVA 607 Scheduling Lectures
题意:给出一节课的时长l以及不满意计算值c,给出n个主题的时长,求怎样安排主题最后的不满意度最低思路:首先计算到i个主题所耗费时间,存在sum里面,用于之后计算一节课占用时间枚举节数,枚举到此节所能涵盖的知识点数,枚举上节课涵盖的知识点数那么这节课的不满意度可由sum[j]-sum[k](第i节用时)算出当然节数和可涵盖的知识点数从小到大,这样才能保证利用之前计算出的结原创 2016-02-25 21:15:00 · 260 阅读 · 0 评论 -
Chinese Mahjong
题意:给出13张牌,判断是否听牌思路:一共34种牌,一一枚举,看是否会胡每成一个序列use就加相应个数,如果use可达14个就可胡牌代码:#include #include #include using namespace std; const char* mahjong[] = {"1T", "2T", "3T", "4T", "5T", "6T",原创 2016-02-05 11:40:38 · 408 阅读 · 0 评论 -
Colored Cubes
题意:给出n个带颜色的正方体,求改变最少面的颜色使得所有正方体一样思路:以第一个正方体最为基准,通过所有旋转,求出最多重叠面的值#include#include#include#include#include#includeusing namespace std;map color;int cube[5][6], now[5][6];int cnt[25];int原创 2016-02-05 11:30:19 · 304 阅读 · 0 评论 -
Subsequence
题意:求N个整数中相加的S的最少个数思路:a[i]表示前i个数的和,然后枚举终点,当遇到a[j-1]=s时累加j直到i-j最短,记录最小值代码:#include#include#includeusing namespace std;int s, n;int a[100005];int main() { int t; while(scanf("%d%d", &n,原创 2016-02-05 15:45:13 · 339 阅读 · 0 评论 -
City Game
题意:求最大子矩阵,求其面积*3思路:暴力枚举,每行都统计一次最大面积,由于某个点经过了左右的扫描,所以面积为 (righ[i][j]-lef[i][j]+1)*up[i][j]代码:#include#include#includeusing namespace std;const int maxn = 1000+10;int n, m;int mat[maxn原创 2016-02-05 16:01:41 · 337 阅读 · 0 评论 -
Anagram and Multiplication
题意:给你m, n, 求一个m位n进制的数, 使得这个数乘以2-m得到的结果都是原m位数的一个排序思路:枚举个位数,然后将个位数与2-m相乘的到的值为其他位(一定会出现在串里),主要是位置不确定所以用judge确定是否存在一个可行序列arr存放顺序,将序列遵循n进制乘法乘以2-m,看序列能否满足乘出的数都在num里面,不能满足就换一种序列由于num里面的第i个数就是个位数*原创 2016-02-15 22:49:12 · 414 阅读 · 0 评论 -
Knowledge for the masses
tip:first from left to right, then from right to left, keep the smaller of the spending when during that, and save every position's possible waycode:#include#include#include#includeusing nam原创 2016-03-15 22:25:33 · 410 阅读 · 0 评论 -
Installations
题意:给出n个工作的耗时以及截止时间,每个时刻只完成一样工作,求超时最大的两个任务最少超出时间.思路:一看到截止时间就想到优先队列,后来发现不适用,题目是求最大值最小.首先先按照最早截止时间排序,即截止时间越早优先级越高,如此先求出超时,同时保留罚时最大的值得下标,然后在暴力枚举此下标以前的所有任务,用意在将任务后调,看最大罚时的两个任务罚时是否会有所减少.即将枚举的任务放于第原创 2016-02-04 14:54:52 · 268 阅读 · 0 评论 -
Supermarket
题意:每个商品都有利润和保质期,在保质期内,能够卖出的最高利润.思路:显然最长时间就是所有商品中的最大保质期,时间自然是递减的,然后利用优先队列取出最大利润的商品.枚举截止时间,商品的保质期在截止时间之后的才能入队,为了保证队内的物品不过期,截止时间应从最长时间递减.代码:#include#include#include#includeusing namespace原创 2016-02-04 17:09:39 · 350 阅读 · 0 评论 -
Ugly Windows
题意:求没被覆盖的窗口思路:枚举暴力,遇到没判断过的类型就横向竖向扫描,然后看是否可以补全另外两条,最后还要判断内部是否含有代码:#include#include#includeusing namespace std;const int maxn = 100+10;char win[maxn][maxn];int v[30];int w, l;bool judg原创 2016-02-05 10:54:24 · 352 阅读 · 0 评论 -
Genome Evolution uvalive5052
题意:题目没搞清楚,结果卡了好久题目求a,b连续的数字相同(注意不是顺序相同)的子集的个数思路:第一个串作为模板, 记录每个位置的数字的值,然后第二个串记录每个值的位子,这么做的目的是为了计算在扫描过的模板串内的字母在第二个串内的长度(通过最大最小位置相减)如果长度与模板串相同,那么一定是一样的,即所有在最小位置之前的都不在串内,所有大于最大位置的都不再串内代码:#incl原创 2016-03-08 22:23:35 · 268 阅读 · 0 评论 -
Maximum sum on a torus uva10827
题意:求一个可上下左右回环相加的矩阵的最大子矩阵和思路:将一个矩阵复制为四个矩阵形成一个大的矩阵,那么横向的扫描就能实现任意方向的回环,枚举起点以及长宽,然后用一个sum数组来存储某列的累加值,用temp存储枚举的这一行的累加值,所以temp在每循环一行就清0,sum每结束一个起点就清0(为每个起点服务的)代码:#include#includeusing namespa原创 2016-03-10 12:25:20 · 235 阅读 · 0 评论 -
UVA 10401 Injured Queen Problem
题意:给出一个串,每个位置代表这个列所指定的行,如果是?则是任意行,而每个位置一旦占有,则周围一圈以及此列都不再可以放东西思路:题目的意思很明显,每个列只能放一个皇后,枚举每一列所有可行的位置(如果此列有指定的行,则只有一种),然后累加前面一列的可放置的行(不在四周)的放置情况数,一直累加到最后一行累加的技巧:如果是指定行,则要枚举所有的行,如果行与行之间相差至少2(不相邻),原创 2016-02-25 17:15:13 · 326 阅读 · 0 评论 -
暴力整理
暴力就是枚举所有的可能。在暴力求解的时候,常常要用到哈希判重 uva10391 题目大意:有一堆按照字典序排好的字符串,问你有多少字符串是由其它两个字符串组成。解题思路:如果用两个字符串拼接看拼接好的字符串是否在字典中,一定会超时。我们可以逆向,由于字符串的长度不是很长,所以把一个字符串拆为两个字符串看这两个字符串是否都在字典中即可 代码:#include<cstdio>#include<i原创 2017-04-06 18:43:38 · 301 阅读 · 0 评论