枚举
文章平均质量分 66
skajre
这个作者很懒,什么都没留下…
展开
-
UVA 10825 Anagram and Multiplication(暴力枚举)
这题用next_permutation也能过,之前子集写枚举全排列,然后用暴力方法配对写崩了= =。需要注意的只有一点,因为枚举的是最优一位,所以最后一位是固定的,枚举全排列也是枚举第前m-1位的全排列。#include#include#include#includeusing namespace std;const int maxn=10;const int maxm=400+1原创 2016-10-11 15:13:07 · 314 阅读 · 0 评论 -
UVA 1354 Mobile Computing(枚举二叉树+枚举子集)
#include#include#include#include#includeusing namespace std;struct Tree{ double L,R; Tree():L(0),R(0) {}};const int maxn=6;int vis[1<<maxn];vector tree[1<<maxn];double sum[1<<maxn];原创 2016-10-08 18:58:53 · 249 阅读 · 0 评论 -
UVA 1377 Ruler(dfs)
这题目自己写一直WA,后来发现正确搜索枚举的刻度并不一定是题目中给你的,而可能是两个刻度中间隔的,枚举完整之后答案就会完备而且可能会更优。#include#include#include#include#includeusing namespace std;const int maxn=50+5;int vis[maxn],d[maxn],id[1000000+10],a[maxn]原创 2016-10-08 12:49:36 · 279 阅读 · 0 评论 -
UVA 1382 Distant Galaxy(枚举优化)
如果四条边都枚举,那么时间复杂度O(n),但是只枚举上下两条线,然后根据上下两条线来算出左右两条线,时间复杂度会大大降低。#include#include#include#includeusing namespace std;const int maxn=100+10;struct node{ int x,y; bool operator < (const node &原创 2016-10-02 00:00:36 · 234 阅读 · 0 评论 -
UVA 11464 Even Parity(暴力枚举)
因为如果枚举全部点,肯定会超时,所以枚举第一行,然后根据第一行来算出接下来的n-1行,最后取最优就行。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/28.// Copyright © 2016年 邵金杰. All rights reserved.//#include#include#include#inclu原创 2016-09-29 00:12:50 · 223 阅读 · 0 评论 -
UVA 11384 Help is needed for Dexter(构造题)
这题序列是递增的,出几组数据就很好推出来,剪掉中间的,那么后面的序列长度会和前面序列一样,那么数据范围马上变成1/2了。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/28.// Copyright © 2016年 邵金杰. All rights reserved.//#include#include#inc原创 2016-09-29 13:34:15 · 178 阅读 · 0 评论 -
UVA Chinese Mahjong(暴力枚举+模拟)
每种牌只有34种,所以可以直接暴力枚举,然后先找出两张做将,然后接下来枚举三张做刻子或顺子就可以了。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/29.// Mail:1016427040@qq.com or jasonshaosjj@gmail.com// Copyright © 2016年 邵金杰. All righ原创 2016-09-29 19:27:03 · 259 阅读 · 0 评论 -
UVA 1424 Salesmen(dp)
一开始记忆化搜索写的,TLE到死= =。定义状态方程为dp[i][j]代表序列的前i 个,以j为结尾的的序列的最小修改数,那么方程就可以列出来了,if(s[i]==j) dp[i][j]=min(dp[i][j],dp[i-1][k]);else dp[i][j]=min(dp[i][j],dp[i-1][k]+1);发现一个问题,一般需要替换的,大多数不是搜索来做的,而是枚举所有原创 2016-10-15 10:38:42 · 214 阅读 · 0 评论 -
UVA 1432 Fire-Control System(枚举)
枚举半径,然后控制角度。#include#include#include#include#include#includeusing namespace std;#define rep(i,a,b) for(int i=(a);i<(b);i++)#define ss(x) scanf("%d",&x)const double pi=acos(-1.0);const int ma原创 2016-10-15 09:03:53 · 247 阅读 · 0 评论 -
UVA 1481 Genome Evolution(高效算法优化)
记录下第二个数组的位置,然后更新第一个数组的区间,然后更新第二个数组的区间,如果区间长度相等,那么就是有子集相等,此时ans++。#include#include#include#includeusing namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define ss(x) scanf("%d",&x)co原创 2016-10-14 19:36:13 · 234 阅读 · 0 评论 -
UVA 10125 Sumsets(中途相遇法)
首先从大到小枚举d,然后枚举c和b,a根据公示算出,a=d-c-b,只要在剩下的区间中二分查找a就可以了,找到就是成功了。我认为时间复杂度是O(n^3)吧,但是在其他博客看到时间复杂度是O(n^2)。#include#include#include#include#includeusing namespace std;#define ss(x) scanf("%d",&x);#def原创 2016-10-13 09:05:48 · 239 阅读 · 0 评论 -
UVA 1325 Hypertransmission(枚举)
从小到大枚举,每枚举一条边就修改两端,那样的话就不用每次都用一个for循环去更新,时间复杂度O(n)。#include#include#include#include#includeusing namespace std;const int maxn=1000+10;struct Point{ double x,y,z; int sign,same,diff;}原创 2016-10-13 07:32:51 · 221 阅读 · 0 评论 -
UVA 1395 Slim Span(枚举)
#include#include#include#includeusing namespace std;const int maxn=100+5;const int inf=(1<<30);int f[maxn];int n,m;bool map[maxn][maxn],used[maxn];struct edge{ int u,v,w; edge(int u,原创 2017-01-18 15:03:23 · 300 阅读 · 0 评论