搜索
~
verdin黄大锤
afo啦!
展开
-
uva 11624 Fire!
题目:Fire!思路:两次bfs。第一次bfs预处理出火蔓延到每个格子的时间,每次只需要考虑上一次新被点燃的格子向外蔓延。复杂度O(rc)。第二次bfs找Joe走出迷宫的最短路。代码:#include<bits/stdc++.h>using namespace std;#define maxn 1000int n,m;struct Pair { int x,y; Pa...原创 2018-02-15 14:40:46 · 194 阅读 · 0 评论 -
noip2014 寻找道路
题目:寻找道路思路:反着建图,以终点为起点跑一边dfs,标记可以到达的点。再正着建图,对于每个点,如果它被标记且指向的所有点都被标记那么这个点就可以被经过。然后保留这些点,跑一边bfs就好。代码:#include<bits/stdc++.h>using namespace std;#define read(x) scanf("%d",&x)#define m...原创 2018-10-16 15:50:46 · 288 阅读 · 1 评论 -
洛谷 P1653 猴子
题目:猴子思路:QAQ……当时想的就是……反着处理,把删边看做加边。最开始把要删的边先删除,然后dfs一遍把联通块处理一下,用类似缩点的方法缩一下。然后搞一个带权并查集。注意一定要建图啊……不要直接用两只手拉的猴子处理,会很麻烦代码:#include<bits/stdc++.h>using namespace std;#define maxn 400000#d...原创 2018-10-25 18:35:56 · 198 阅读 · 0 评论 -
noip2016 洛谷 P2831 愤怒的小鸟
题目:愤怒的小鸟思路:搜索。对于每一只鸟,如果可以被之前的抛物线经过,就可以合并,不需要考虑。否则就先考虑能否和之前的单个点组成抛物线,或者单独成一个点。要先考虑第一种情况以便于进行最优性剪枝。一定要注意精度问题!!!WA了好多遍!!!判断两个double类型相等:bool issame(db x,db y) { if(fabs(x-y)&lt;1e-8) return true...原创 2018-10-23 15:32:57 · 214 阅读 · 0 评论 -
noip2017 洛谷 P3959 宝藏
题目:宝藏思路:安利某大佬的博客,代码超好看!这题有点卡常,要注意常数优化。思路就是状压+搜索。先枚举一个起点。令 dp[st] 表示状态为st的时候的最小代价,状态指的是每个点是否和起点连通的二进制状压表示。再令 d[i] 表示 i 到起点的距离。假设当前状态为st,那么枚举st中的一个点i,和st补集中的一个点j,如果这两个点直接连通,就可以进行转移。转移方程:dp[st|...原创 2018-10-23 22:02:48 · 158 阅读 · 0 评论 -
普及组 2017T3 P3956 棋盘
题目:棋盘思路:搜索+剪枝。55分:裸的dfs,传4个参:横纵坐标,当前的步数,走到当前步是否使用魔法。60分:加一个最优性剪枝,判断当前步数大于等于ans时可直接回溯。100分:再加一个最优性剪枝,类似于记忆化。定义状态f[x][y][t]表示横纵坐标为x,y,颜色为t时的最小步数。当前步数大于等于f[x][y][t]时也可以直接回溯。注意一定不要瞎用bool类型!把int写成boo...原创 2018-10-29 21:50:38 · 251 阅读 · 0 评论 -
洛谷 P1144 最短路计数
题目:最短路计数思路:bfs时同时维护次数。代码:#include<bits/stdc++.h>using namespace std;#define maxn 1000000#define read(x) scanf("%d",&x)int n,m;vector<int> a[maxn+5];int dist[maxn+5],cnt[ma...原创 2018-10-24 16:35:04 · 160 阅读 · 0 评论 -
小白菜oj 1038 [视频]递归8(分解数)
题目:分解数思路:直接搜索,顺序要注意。代码:#include<bits/stdc++.h>using namespace std;int n;vector<int> ans;void dfs(int y,int s) { if(s==0) { if(ans.size()==1) return ; printf("%d",ans[0]); ...原创 2018-11-07 16:31:31 · 372 阅读 · 0 评论 -
洛谷 P1120 小木棍 [数据加强版]
题目:小木棍思路:搜索+剪枝。外层迭代加深,枚举最小长度,用dfs判断。dfs维护3个变量x,y,lst,即用了x根木棍,当前拼到了y,上一根木棍的长度为lst。然后枚举拼接的木棍就好。剪枝一:从大到小排序。剪枝二:如果y不为0,那么枚举的木棍长不要大于lst,不然就会重复搜索。剪枝三:如果y==0且枚举的当前木棍不可行那么就不用再往后枚举。剪枝四:如果 y+当前木棍长 == 枚...原创 2018-11-05 23:48:24 · 181 阅读 · 0 评论 -
洛谷 P4005 小Y和地铁
样例解释简单的想法只和0号线有1个交点的线路可以不用考虑,因为可以把它的长度看做无限短。如果有一条线路左右端点间没有另外一条线的端点,那么这条线可以直接删除。这样操作至没有可以删除的线为止。这样子样例3就可以不用考虑任何的线路直接输出0了……一条线和0号线的位置关系dfs。枚举每条线和0号线的位置关系+暴力找交点。时间复杂度O(原创 2018-12-19 16:26:54 · 411 阅读 · 0 评论 -
洛谷 P1514 引水入城
题目:引水入城思路:一次dfs求出第一排每个点建蓄水场可以覆盖的点。然后求最小区间覆盖。代码:#include<bits/stdc++.h>using namespace std;#define maxn 500#define read(x) scanf("%d",&x)struct Pair{ int x,y; Pair(){} bool oper...原创 2019-03-18 16:13:40 · 205 阅读 · 0 评论 -
洛谷 P1041 noip2003 传染病控制
题目:传染病控制思路:搜索。先预处理出每个点的深度。然后对于每一层,枚举割掉的子边,向下一层搜索。注意单支树的情况。代码:#include<bits/stdc++.h>using namespace std;#define maxn 300#define read(x) scanf("%d",&x)int n;vector<int> g...原创 2019-03-25 16:15:58 · 297 阅读 · 0 评论 -
拐弯 ( 洛谷 P1649 [USACO07OCT]障碍路线Obstacle Course )
题目:题目描述N*N ( 1 &lt;= N &lt;= 100 ) 方格中, 'x' 表示不能走的格子, '.'表示可以走的格子。卡门很胖,故而不好转弯。现在要从A点走到B点,请问最少要转90度弯几次?只可以上、下、左、右四个方向行走,并且不能走出这些格子之外。开始和结束时的方向可以任意。输入输出格式输入格式:第一行一个整数: N ,下面N行,每行N个字符,只出现字符: '.'...原创 2018-09-27 20:43:52 · 515 阅读 · 0 评论 -
洛谷 P2420 让我们异或吧
题目:让我们异或吧思路:令XOR[x]为x到根(默认为1)的异或值。所以答案就是 (XOR[x]^XOR[lca])^(XOR[y]^XOR[lca])也就是XOR[x]^XOR[y]但是听说晚上要考LCA模板,就把LCA敲了一遍……代码:#include<bits/stdc++.h>using namespace std;#define maxn 100000#...原创 2018-09-26 16:41:23 · 203 阅读 · 0 评论 -
游玩
题目:zhx 和他的妹子去一个国家旅游,共有 N 个旅游景点,N-1 条双向连接的道路将它们联通起来,每一条道路有固定长度。一开始zhx 位于 1 号景点。 现在希望你能够求出旅行长度最小的方案,使得每个景点至少被访问到一次。思路:整棵树的权值大小*2-最长链长度。代码:#include<bits/stdc++.h>using namespace std;#d...原创 2018-09-06 16:10:52 · 347 阅读 · 0 评论 -
洛谷 1379 八数码难题
题目:八数码难题思路:bfs+hash判重。注意:1、hash的链表不能写错。2、由于用的是一位数组,所以移动时要判断左右边界。比如当前的空位在5处,就不能向右移+1。0 1 23 4 56 7 8代码:#include<iostream>#include<cstdio>#include <cstdio>#include <iostream>...原创 2017-12-31 13:52:48 · 309 阅读 · 0 评论 -
洛谷1123 取数游戏
题目:取数游戏思路:裸的dfs。代码:#include<bits/stdc++.h>using namespace std;#define maxn 6int n,m;int a[maxn+5][maxn+5];bool isuse[maxn+5][maxn+5];int ans=0;void dfs(int x,int y,int s) { if(y>m...原创 2018-04-02 22:36:42 · 491 阅读 · 0 评论 -
洛谷1189 SEARCH
题目:SEARCH思路:搜索。要加上剪枝,当前步数到过的地方不能再走一次。代码:#include<bits/stdc++.h>using namespace std;#define maxn 50#define maxk 1000int n,m;char a[maxn+5][maxn+5];int sx,sy;int k;const int m1[5]={0,0...原创 2018-04-03 13:40:22 · 484 阅读 · 0 评论 -
洛谷1434 SHOI2002 滑雪
题目:滑雪思路:记忆化搜索。代码:#include<bits/stdc++.h>using namespace std;#define maxn 100#define inf (1<<30)int n,m;int a[maxn+5][maxn+5];int f[maxn+5][maxn+5]={0};const int m1[5]={0,0,0,1,-1...原创 2018-06-27 17:37:02 · 340 阅读 · 0 评论 -
面积
题目:题目描述编程计算由“1”围成的下列图形的面积。面积计算方法是统计“1”号所围成的闭合曲线中结点的数目。如样例所示,在10*10 的二维数组中,由“1”围住了15个点,因此面积为15。输入输出格式输入格式:输出格式:输入输出样例输入样例#1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0...原创 2018-07-10 21:21:03 · 903 阅读 · 0 评论 -
洛谷 P3183 [HAOI2016]食物链
题目:食物链 思路:记忆化搜索。就是找出所有入度为0的点到出度为0的点的所有路径。 代码:#include<bits/stdc++.h>using namespace std;#define maxn 100000#define maxm 200000int n,m;vector<int> g[maxn+5]; int i...原创 2018-07-31 20:54:08 · 269 阅读 · 0 评论 -
洛谷P4363 [九省联考2018]一双木棋chess
题目:一木双棋思路: STO ouuan&amp;amp;cxy 状压轮廓线,记忆化搜索。 省选咕咕现在才过……太菜了啊代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define maxn 10#define Sstate ((1&amp;lt;&amp;lt;n)-1)#define Tstate (((1&原创 2018-08-23 16:23:48 · 193 阅读 · 0 评论 -
洛谷 P2015 二叉苹果树
题目:二叉苹果树思路: 树形dp/记忆化搜索。 f[i][j]f[i][j]f[i][j]表示以iii为根,其中需要保留jjj个分叉点最多可保留多少个苹果。 转移方程:f[i][j]=max(f[ch1][k]+w1+f[ch2][j−k−1]+w2)f[i][j]=max(f[ch1][k]+w1+f[ch2][j−k−1]+w2)f[i][j]=max(f[ch1][k]+w1+f[...原创 2018-08-25 11:54:36 · 152 阅读 · 0 评论 -
洛谷 P1032 字串变换
题目:字串变换思路: bfs。 注意要单向存图… 最开始把图建成了无向边,TLE一个点80分,想了半天的优化才发现图存错了… 吐槽luogu神数据…代码:#include<bits/stdc++.h>using namespace std;struct Pair { string x; int y; Pair(string xx,int...原创 2018-09-04 16:26:39 · 251 阅读 · 0 评论 -
三部曲
题目描述因为外来的入侵,国王决定在某些城市加派士兵。所有城市初始士兵数量为0。当城市i被加派了k名士兵时,城市i的所有子城市需要被加派k+1名士兵,这些子城市的所有子城市需要被加派k+2名士兵。以此类推。当然,加派士兵的同时,国王也需要不断了解当前的情况。于是他随时可能询问以城市i为根的子树中的所有城市共被加派了多少士兵。你现在是国王的军事大臣,你能回答出国王的每个询问么?输入输出...原创 2018-09-11 15:07:12 · 381 阅读 · 0 评论 -
Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D. Valid BFS? (cf 1037 D)
题目:Valid BFS?题意:给出一棵树和一个序列,问这个序列能否是这棵数的一种bfs遍历方式。思路: 把存图的顺序按照数在序列中出现的顺序排列,再bfs求解。代码:#include<bits/stdc++.h>using namespace std;#define maxn 200000int n;int a[maxn+5],b[maxn+5];...原创 2018-09-03 21:13:43 · 195 阅读 · 0 评论 -
【19/04/18 膜赛】大逃亡(escape)
题目:题目描述给出数字N(1<=N<=10000),X(1<=x<=1000),Y(1<=Y<=1000),代表有N个敌人分布一个X行Y列的矩阵上,矩形的行号从0到X-1,列号从0到Y-1再给出四个数字x1,y1,x2,y2,代表你要从点(x1,y1)移到(x2,y2)。在移动的过程中你当然希望离敌人的距离的最小值最大化,现在请求出这个值最大可以为多少,以及...原创 2019-04-18 20:34:47 · 332 阅读 · 0 评论