![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_暴力搜索
文章平均质量分 74
亚N程
这个作者很懒,什么都没留下…
展开
-
UVa:193 Graph Coloring
每个点有黑白两种颜色可涂,另外注意涂黑的一个前提是周围没有黑色,这样dfs即可。 因为邻接表一个地方写错了调了好久。。 没有超时我感到非常的不解。 #include #include #include #include #include #include #include #include #define MAXN 105 #define MOD 10原创 2014-01-15 15:24:56 · 591 阅读 · 0 评论 -
UVALive:6182 Ginkgo Numbers
其实是一道挺简单的题,比较重要的信息就是提供的第一条充要条件。 依据这个可以判断【m,n】是否为【p,q】的因子。 怎么找到这些符合的m,n呢?不用太多技巧,只要挨个数试可以了。 这里要注意 1 m2 + n2 ,那么m或n最大是约是142,最小自然是-142,两个循环,暴力也不会超时。 计算过程中有一点要注意,除数是不能为0的,所以对m2 + n2要特判非0,否则一原创 2013-07-27 18:47:52 · 1204 阅读 · 0 评论 -
SDUT:1143 Mine Number(二进制枚举)
题意:给一幅图说明周围的地雷数,要你输出地雷图,确保答案唯一。 思路:枚举第一行的地雷,然后往下递推判断得到的地雷图是否符合原图要求。 #include #include #include #include #include #include #include using namespace std; int n,m; char num_mat原创 2015-04-13 07:52:03 · 534 阅读 · 0 评论 -
UVa:585 Triangles
根据给的图可以发现要找的三角形一定是等边的,所以每层是1,3,5。。这样。只需要枚举三角形的顶点即可。枚举的时候要注意小三角形,不是该位置为“-”就行的,还要注意小三角形的开口方向。由于有两种方向,所以还要倒着枚举一遍即可。 #include #include #include #include #include #include #include #include原创 2014-03-09 12:57:38 · 617 阅读 · 0 评论 -
UVa:471 Magic Numbers
简单回溯。dfs枚举除数,然后除数乘商,判断被除数是否有重复数字。注意一个剪枝,由于被除数长度至多是10,减去商的长度,就是除数的最大长度。 #include #include #include #include #include #include #include #include #define ll long long #define INF 213906原创 2014-02-03 13:45:12 · 565 阅读 · 0 评论 -
UVa:524 Prime Ring Problem
LRJ白书上的例题,简单回溯,比较水 #include #include #include #include #include #include #include #include #define ll long long #define INF 2139062143 #define MAXN 5000000 //ios::sync_with_stdio(f原创 2014-02-02 17:03:48 · 773 阅读 · 0 评论 -
UVa:307 Sticks
加深迭代DFS,需要很强的剪枝。 http://www.cppblog.com/y346491470/articles/155318.html 1.把所有木棍的长度从大到小排列,组合木棒时优先使用长的木棍,这样可以加快组合速度,并且对后面的剪枝有帮助。 2.木棒的长度一定是大于等于最长木棍的长度并且小于等于所有木棍长度的和,这个很容易证明。 3.木棒的长度一定是所有木棍长度的和的约数,这个原创 2014-01-15 12:48:57 · 729 阅读 · 0 评论 -
UVa:301 Transportation
一直都不太会写搜索题,这个题一开始写的非常烂,TLE了。主要是不知道该怎么处理人数这个题。我一开始的办法是递归每一站,然后每一站里再递归每次订票,每次的人数用结构体保存,这样一个状态就是一个结构体,在上站的时候加人数,下站的时候减人数。超时了。 后来学习了网上的办法,用数组表示人数,只用一个数组,数组的每个元素表示每站时候的人数,这样这个数组表示当前状态的人数,不像我那样浪费很多空间。。这样的话原创 2014-01-25 13:20:23 · 757 阅读 · 0 评论 -
UVa:10364 Square
这个题是上个题的简化版,有了之前那些剪枝,速度会非常快。 #include #include #include #include #include #include #define MAXN 25 #define MOD 1000000007 #define INF 2139062143 #define ll double #define eps 1e-8原创 2014-01-15 13:10:54 · 1119 阅读 · 0 评论 -
UVa:140 Bandwidth
这都是之前第七章留下来的水题。 枚举全排列。然后挨个求就可以了。 #include #include #include #include #include #include #include #include #define MAXN 30 #define MOD 1000000007 #define INF 2139062143 #define l原创 2014-01-15 14:39:33 · 584 阅读 · 0 评论 -
UVa:331 Mapping the Swaps
冒泡每次交换的都是相邻的两个,按照这个。首先进行全排列,再从最小序列开始,每次交换两个,直到交换到最终序列。可行的数目就是答案。 #include #include #include #include #include #include #include #include #define MAXN 205 #define MOD 1000000007 #原创 2014-01-15 16:15:26 · 687 阅读 · 0 评论 -
HDU:4101 Ali and Baba(搜索+博弈)
上个月比赛时候的题,今天终于给AC了。 主要看一个临界状态:-1被一圈1包围。这时候只要有人再拿了1个1,将打开包围-1的这个圈,那么下一个人肯定就是赢家。 所以只要数出这个圈外的石头个数即可。当然如果本来就不存在这个圈,即-1原本就靠近边界,那么就是A赢。 数圈外石头用BFS。为了方便,把这个圈成为墙。 首先第一个BFS从-1出发,标记包围-1的所有0.这样会得到这样一个状况:墙包围了所原创 2013-10-10 18:25:41 · 889 阅读 · 0 评论