ACM/ICPC图论_DFS
just_sort
Acdream.
展开
-
NYOJ 82 迷宫寻宝
描述一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门(N 输入输入可能会有多组测试数据(不超过10组)。每组测试数据的第一行包含了两个整数M,N(1.表示可以走的路S:表示ACM的出发点G表示宝藏的位置X表示这里有墙,ACM无法进入或者穿过。A,B,C,D,E表示这里是门,a,b,c,d,原创 2016-04-08 11:39:37 · 691 阅读 · 0 评论 -
BZOJ 1081: [SCOI2005]超级格雷码 神他妈规律,DFS
Description 著名的格雷码是指2n个不同n位二进制数(即0~2n-1,不足n位在前补零)的一个排列,这个排列满足相邻的两 个二进制数的n位数字中最多只有一个数字不同(例如003和001就有一个数位不同,而003和030有两个数位不同, 不符合条件)。例如n=2时,(00,01,11,10)就是一个满足条件的格雷码。 所谓超级格雷码就是指Bn个不同的n位B 进制数的排列满足上面的条件原创 2017-01-30 15:04:17 · 666 阅读 · 0 评论 -
BZOJ 1082: [SCOI2005]栅栏 DFS,剪枝,二分答案
Description 农夫约翰打算建立一个栅栏将他的牧场给围起来,因此他需要一些特定规格的木材。于是农夫约翰到木材店购 买木材。可是木材店老板说他这里只剩下少部分大规格的木板了。不过约翰可以购买这些木板,然后切割成他所需 要的规格。而且约翰有一把神奇的锯子,用它来锯木板,不会产生任何损失,也就是说长度为10的木板可以切成长 度为8和2的两个木板。你的任务:给你约翰所需要的木板的规格,还有木原创 2017-01-30 16:57:14 · 768 阅读 · 0 评论 -
BZOJ 1086: [SCOI2005]王室联邦 树分块,贪心DFS
Description “余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成 员来管理。他的国家有n个城市,编号为1..n。一些城市之间有道路相连,任意两个不同的城市之间有且仅有一条 直接或间接的道路。为了防止管理太过分散,每个省至少要有B个城市,为了能有效的管理,每个省最多只有3B个 城市。每个省必须有一个省会,这个省会可以位于省内,也可以在该省原创 2017-01-31 12:30:15 · 581 阅读 · 0 评论 -
HDU 5544 独立回路,高斯消元,线性基
Problem Description During the Three-Kingdom period, there was a general named Xun Lu who belonged to Kingdom Wu. Once his troop were chasing Bei Liu, he was stuck in the Ba Gua Zhen from Liang Zhuge.原创 2017-03-05 15:47:44 · 1090 阅读 · 0 评论 -
CF 490E 贪心,回溯法
题目链接:这里 题意:一个严格递增序列 某些数字的某些位被盖住了 求 恢复后的序列。 解法:贪心,让每个数在大于前一个的基础上尽量小,先考虑数字长度。if(len[i] < len[i+1])输出NO,当len[i] > len[i-1],如果第一位是?就改成1,其他的问号改成0,接下来是长度相等的时候DFS(回溯法)即可。//CF 490E#include <bits/stdc++.h>原创 2017-03-09 14:01:54 · 358 阅读 · 0 评论 -
CF 782C 贪心,DFS染色,水题
题目链接:见这里 题意:给了一颗树,要让每个连起来的(u, v, w)三个点的颜色不同,默认1点被染成颜色1,问最少多少种颜色可以完成,并输出每个点的颜色编号。 解法:贪心+DFS,直接记录一下,这个点的父亲的颜色,和这个点的父亲的父亲的颜色,只要颜色颜色和它们不同就可以用这个颜色更新当前这个点的颜色,染完这个点之后让颜色编号nowc++,使得每个点的其他儿子节点和它的颜色不同。#include原创 2017-03-06 14:55:27 · 1050 阅读 · 0 评论 -
CF 789D 规律,图论,计数
题目链接:http://codeforces.com/contest/789/problem/D 题意:给定一个无向图,可能有自环,无重边,你要求出满足恰好有两条边只走了一次,其它都走了两次的路径数量。两种方案不同当且仅当边不同。 n,m⩽1e6解法: 先判联通。然后我们把自环和普通边分开考虑。 如果都选普通边,那么这两条边一定要有公共点,用度数计算一下即可。 如果一个选自环,那么显然任意原创 2017-03-31 19:22:17 · 1492 阅读 · 0 评论 -
信息新生训练 BFS,DFS 小朋友的专题作业
A,题目链接https://www.oj.swust.edu.cn/problem/show/1378 解法:DFS,经典的FloodFilld填充,找个点开始DFS,把这个点可以扩展到的点标记,然后答案加1,然后继续DFS其他没有被访问的点。#include<stdio.h>#include<queue>#include<iostream>#include<cstring>using n原创 2017-04-01 10:15:31 · 728 阅读 · 0 评论 -
BZOJ 1224: [HNOI2002]彩票 搜索,上下界剪枝,前缀和优化
Description某地发行一套彩票。彩票上写有1到M这M个自然数。彩民可以在这M个数中任意选取N个不同的数打圈。每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同。每次抽奖将抽出两个自然数X和Y。如果某人拿到的彩票上,所选N个自然数的倒数和,恰好等于X/Y,则他将获得一个纪念品。已知抽奖结果X和Y。现在的问题是,必须准备多少纪念品,才能保证支付所有获奖者的奖品。 Input输入文件有且仅有一原创 2017-04-12 09:37:46 · 773 阅读 · 0 评论 -
BZOJ 1306: [CQOI2009]match循环赛 爆搜,剪枝
Input 第一行包含一个正整数n,队伍的个数。第二行包含n个非负整数,即每支队伍的得分。 Output 输出仅一行,即可能的分数表数目。保证至少存在一个可能的分数表。 Sample Input 65 6 7 7 8 8Sample Output 121 HINTN<=8解法:看到这题懵了,什么鬼题啊。。。。。。看了题解才知道可以爆搜。。但是需要一些剪枝优化才可以过。1.如果剩下的比赛原创 2017-04-24 20:07:30 · 780 阅读 · 0 评论 -
BZOJ 1053: [HAOI2007]反素数ant 数论,DFS
Description 对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0#include <bits/stdc++.h>using namespace std;typedef long long LL;LL n;int ans = 1, num = 1; //数的大小, 约数个数int pri[15] = {1, 2原创 2017-01-22 19:46:07 · 551 阅读 · 0 评论 -
BZOJ 1048: [HAOI2007]分割矩阵 记忆化搜索,二维前缀和
Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵。(每次分割都只能 沿着数字间的缝隙进行)原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和。现在需要 把矩阵按上述规则分割成n个矩阵,并使各矩阵总分的均方差最小。请编程原创 2017-01-21 11:34:55 · 783 阅读 · 0 评论 -
HDU 5025 Saving Tang Monk.
【题意】求悟空到师傅的最短距离,这中途会有一些门,悟空必须依次拿到钥匙,打开所有的门,中途遇到妖怪就会多停留1s,求悟空救出师傅的最短时间!【解题思路】我的第一道dfs+状压!其中dp[x][y][k][s]中,x,y代表位置,k代表拿到了k把钥匙,s代表状态。【AC代码】#include #include #include #include #include using n原创 2016-04-08 18:07:40 · 332 阅读 · 0 评论 -
Light OJ 1061 N Queen Again
【题意】这两天和n皇后问题结缘了->【分析】一种可行的方法是先把8皇后问题所有可能的合法状态初始化出来,然后对于每个状态计算这个状态到棋盘的状态所需要的步数的最小值。当然我也是这样做的。【AC代码】#include #include #include #include #include #include #include using namespace st原创 2016-04-12 18:24:11 · 535 阅读 · 0 评论 -
HDU 4499 Cannon
【题意】给了棋盘上一些兵位置,最大5*5,现在要求你放一些炮到这个棋盘上,使得这些炮之间不能互相攻击!【分析】水dfs,比8皇后还要简单,简单回溯即可!【AC代码】#include #include #include #include #include using namespace std;int n,m,q,x,y,sum;int chess[6][6];void原创 2016-04-12 19:44:32 · 438 阅读 · 0 评论 -
HDU 4848 Wow! Such Conquering!
【题意】给了n个点,对于每个点除了0点之外都有一个到达的deadline,超过了这个期限的话,就不能到达了。并且给出了从u到v点的权值!现在要求从0到达n-1点的最小耗费时间!【分析】由于只有30个点,点很少Q_Q,所以可以直接预处理出两点之间的最短距离,然后dfs,这里最重要的dfs的两种剪枝,亲身测试,去掉任意一个都会tle!【剪枝1】这个是针对最后期限的剪枝,如果当前点到达任意一个点原创 2016-04-10 11:14:24 · 428 阅读 · 0 评论 -
SWUST OJ 1768 n皇后问题
【题意】这题也是醉了,其实不用怎么剪枝啊,只需要把m==0的情况列个表,还一直以为m==1的时候列表,好毒。【分析】就是普通的n皇后问题,由于可能有一个点已经有皇后,开始的时候标记就行啦!其实暴力,全部打表也可以,可是还是不会呀!【AC代码】#include #include #include #include #include using namespace std;原创 2016-04-11 20:57:34 · 619 阅读 · 0 评论 -
POJ 3279 Fliptile
【题意】一个m*n的01矩阵,每次点击(x,y),那么她的上下左右以及本身就会0变1,1变0,问把矩阵变成全0的,最小需要点击多少步。【分析】只需要枚举第一行的状态即可,后面的状态都可以根据第一行直接推出来,还要注意这题还有不存在的情况,详见代码!【AC代码】#include #include #include #include #include #include us原创 2016-05-10 11:02:54 · 849 阅读 · 0 评论 -
HDU 1241 Oil Deposits
【题意】@表示油田,求一共有多少组油田是连通的,连通的意思是与@的八个方向相邻【解题思路】用深度优先遍历每个点,每走过了一个油田就标记为走过了。【AC代码】#include#include#include#include#include#include#include#include#include#includeusing namespace std;原创 2016-05-11 21:14:23 · 436 阅读 · 0 评论 -
CCPC 2015 部分题解
【A Secrete Master Plan】http://acm.uestc.edu.cn/#/problem/show/1215【题意】水题,题意就是给了两个2*2的矩形,判断通过旋转是否这两个矩形是否相同。【解题方法】水题。模拟一下,【AC 代码】#include using namespace std;typedef long long LL;int main原创 2016-09-22 21:15:50 · 1947 阅读 · 0 评论 -
BZOJ 1102: [POI2007]山峰和山谷Grz FloodFill 算法
Description FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。为了能够让他对他的旅程有一个安排,他想 知道山峰和山谷的数量。给定一个地图,为FGD想要旅行的区域,地图被分为n*n的网格,每个格子(i,j) 的高度w( i,j)是给定的。若两个格子有公共顶点,那么他们就是相邻的格子。(所以与(i,j)相邻的格子有(i?1, j?1),(i?1 ,j),(i?1,j+1),原创 2017-02-05 14:56:00 · 765 阅读 · 0 评论 -
UVALive-4793 Robots on Ice 搜索加剪枝
题意:#include using namespace std;const int maxn = 11;int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};int n, m, t;int x[5], y[5], c[5];//第i个检查点的坐标为(x[i],y[i]),访问时间为c[i]int mp[maxn][maxn];//存储网原创 2017-11-17 17:04:56 · 541 阅读 · 0 评论