
搜索
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
Oil Deposits ZOJ - 1709
https://zoj.pintia.cn/problem-sets/91827364500/problems/91827365208第一次用Python来A算法题习惯问题 和用C写的大差不差的样子。。import numpy as npimport queuedef bfs(e,book,n,m,x,y): next=[[0,-1],[-1,0],[0,1],[1,0],[-1,-1],[-1,1],[1,1],[1,-1]] que=queue.Queue().原创 2020-07-14 10:55:04 · 164 阅读 · 0 评论 -
Spy Syndrome 2 CodeForces - 633C
http://codeforces.com/problemset/problem/633/C这里DFS的作用和for循环一样 复杂度有点迷。。感觉是因为这里用了字典树来剪枝 匹配的要求比较严格 当前位置找不到就必须返回#include <bits/stdc++.h>using namespace std;struct node{ node *next[26...原创 2018-09-11 10:54:15 · 169 阅读 · 0 评论 -
序列分解 51Nod - 1400
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1400想不到有多项式复杂度的办法 两个序列要完全一样 要求还是很严格的 并且n很小 考虑搜索主要就是个数量剪枝 看剩下的数还能不能均分#include <bits/stdc++.h>using namespace std;const int ...原创 2018-10-01 19:36:45 · 216 阅读 · 0 评论 -
六边形平面 51Nod - 1388
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1388显然最多三种颜色 全部不相邻为1 两相邻就为2 三相邻就为3 然后WA找了很久发现 三相邻就是一个奇圈的特例啊。。改成BFS判奇圈就好了#include <bits/stdc++.h>using namespace std;typede...原创 2018-10-01 21:44:31 · 190 阅读 · 0 评论 -
Enigma Gym - 101889E
http://codeforces.com/gym/101889/attachments求给定字符串所能表示的n的最小倍数 n很小 字符串也很短 都是1e3 可以想到记忆化搜索 即搜到当前位置时高位的模数是多少 如果之前在这个位置并以这个模数走下去没结果 那这次也一样 标记下只走一次即可#include <bits/stdc++.h>using namespace std;...原创 2018-10-18 12:04:21 · 220 阅读 · 0 评论 -
Today Is a Rainy Day UVALive - 7263
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5275给两个串s1 s2 有两种操作 一是把单个字符改变 二是吧一种字符改变 问最少几次操作将s2变为s1第二种操作肯定是越多越好 预处理第二种操作各个状态与原...原创 2018-10-24 17:50:58 · 582 阅读 · 3 评论 -
Police Stations CodeForces - 796D
http://codeforces.com/group/CT2Mwjzqo4/contest/796/problem/E有几个城市有警察局 就可以分成几棵子树先把所有有警察局的城市扔到队列里 跑一边bfs 看没警察局的城市到哪个最近 这样就把这几个子树划分好了 #include <bits/stdc++.h>using namespace std;const in...原创 2018-11-09 15:21:39 · 203 阅读 · 0 评论 -
非回文 51Nod - 1523
https://www.51nod.com/Challenge/Problem.html#!#problemId=1523没有其他好办法 那就考虑搜索 题目要求非回文 那就保证搜索到第i个位置时 所选字符与i-2和i-1位置的字符不一样 这样避免了出现长度等于2和3的回文串 长度更大的回文串就更不可能出现但是爆搜肯定不行 发现按上述思路 第i个位置字符的选取只和i-2和i-1位置的字符有关...原创 2018-11-20 15:54:47 · 311 阅读 · 0 评论 -
Connections Gym - 101630C
http://codeforces.com/gym/101630/attachments给m条有向边 选其中2*n条构成一个强连通分量队友想到的 跑两遍以1为起点的bfs 第一遍在原图上选出n-1条边 保证1可达2-n 第二遍反向建图 保证2-n可达1把两遍选中的边凑在一起 任一点都是与1互相可达的 那整个图就两两互相可达了 #include <bits/stdc++....原创 2018-11-22 08:43:06 · 214 阅读 · 0 评论 -
分考场 蓝桥真题
http://lx.lanqiao.cn/problem.page?gpid=T457对于当前学生 先把他放到已经开的考场里 看是否和其他人都不认识 最后再尝试为他单开一个考场 这样很快就可以把n个学生都安置好 从而更新答案来剪枝 #include <bits/stdc++.h>using namespace std;const int maxn=1e2+10;i...原创 2019-02-25 19:00:12 · 289 阅读 · 0 评论 -
Treasure Map ZOJ - 3209
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3209去年L队友写的舞蹈链 今年W队友写的搜索。。再水一次省赛把右上角都存到左下角 按格子搜索 先行后列扫到的第一个空格子是必须要现在填满的 看有没有对应图案能填 搜满就更新答案#include <bits/stdc++.h>using na...原创 2019-03-08 13:02:43 · 257 阅读 · 0 评论 -
完美正方形 蓝桥真题
题目略搜索剪枝 每次从左上角开始一行行找 找第一个空白位置 看能不能放下某个正方形 当产生完全覆盖之后即找到答案 类似方法的题还有zoj 3209两点注意1 先对19个正方形升序排序 只要某个没用过得正方形放不下了 后边的肯定放不下直接跳过(如果是矩形就没法这样贪心)2 如果初始标定的三个正方形放在了左上角 找第一个空白位置就从左上开始 如果放在了右下角 那就从右下开始 不然在很...原创 2019-04-13 19:44:46 · 241 阅读 · 0 评论 -
Garland CodeForces - 767C
http://codeforces.com/problemset/problem/767/C找两个除根节点之外的点 将整棵树分为权值相等的三部分两个点的关系 要么lca是两者其中一个 要么不是对于第一种情况 在dfs时用栈保存权值为(2/3*tot)的点 如果遍历到某个权值为(1/3*tot)的点时战非空 则找到答案对于第二种情况 对于遍历到的每棵子树 看它有多少棵子树含有权值为(...原创 2019-04-22 09:40:42 · 229 阅读 · 0 评论 -
凑平方数 蓝桥真题
题意有问题 明明应该是组间无序 却写成组内无序 坑的一批啊先全排列 然后将每个排列都分成数份 因为组间无序 所以先排个序再去重写这道题有两个智障错误 第一是忘开longlong 第二是排序时直接对dfs用的序列排序。。还有注意遇到当前位置是0时要特殊处理#include <bits/stdc++.h>using namespace std;typedef l...原创 2019-05-20 15:07:23 · 237 阅读 · 0 评论 -
磁砖样式 蓝桥真题
老套路 每次递归 都找最左上角的空白位置 这个地方是必须要填满的 如果放不下合适的瓷砖直接返回即可 具有很强的剪枝效果递归时的参数为已铺的面积 若已铺满 则判重后累加答案即可#include <bits/stdc++.h>using namespace std;const int maxn=20;map <int,bool> mp;int book...原创 2019-05-21 15:02:19 · 261 阅读 · 0 评论 -
Xor-Paths CodeForces - 1006F
http://codeforces.com/contest/1006/problem/F爆搜复杂度2^(n+m) n和m都不大 可以考虑折半搜索 即从起点终点各走一半#include <bits/stdc++.h>using namespace std;#define ll long long#define pil pair <int,ll>map &l...原创 2018-09-14 01:33:25 · 272 阅读 · 0 评论 -
Vitaly and Cycle CodeForces - 557D
http://codeforces.com/contest/557/problem/D最后两分钟过掉D 真的刺激如过所有点都是孤立点 就是n选3 此时连边数为3如果连通块中的点数最多为2 那就将图分为两个集合 点数为1的记为s1 点数为2的记为s2 s2中任意一个都可以和s1中任意一个相组合 s2中两两组合产生四种 此时连边数为2否则 先求个生成树(森林) 用剩下的边判奇圈 即两点...原创 2018-09-15 02:09:55 · 221 阅读 · 0 评论 -
War Chess HDU - 3345
点击打开链接需要通过优先队列(堆) 将行动力最大的点放在堆顶 优先将其向四周扩展其中P(同伴点)与E(敌对点)需注意 当行动力为0时P不可进入 而当某个点四周有E时 则行动力归零 因此P与E若相邻 则P不可进入但这种情况不必考虑 因为P是不可停留的 即该点是无法改变的 如果没有通过P成功向四周扩展 则等同于P没有被遍历过 注意:不可用普通BFS是因为此地图上进入每个点消耗的...原创 2017-07-21 12:26:05 · 539 阅读 · 0 评论 -
Superbot ZOJ - 3865
点击打开链接在任何一个位置上 如果其转向与到达时间对p取模后的状态在之前已经存在 那就没必要再走一遍 开个四维数组标记一下即可还有就是注意 next数组中存的方向必须与题目给定顺序一致#include <bits/stdc++.h>using namespace std;const int maxn=10+10;const int maxm=50+10;s...原创 2018-04-25 08:26:02 · 191 阅读 · 0 评论 -
白色相簿 计蒜客
如何判断一个图中是否存在三元环 先bfs全图 得到一颗bfs树 然后用O(N+M)的方法遍历全图 若相邻两点且深度相同 那一定存在三元环 因为无论从哪一个点进入三元环 另外两点在bfs树中的深度必然相同 #include <cstdio>#include <queue>#include <cstring>#include <algor...原创 2018-04-09 22:10:33 · 273 阅读 · 0 评论 -
Eight POJ - 1077 (HDU - 1043)
点击打开链接 普通bfs预处理 通过康拓展开进行状压 找出所有符合题意的排列 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct node{ int val; int id; char ...原创 2018-03-08 14:49:11 · 250 阅读 · 0 评论 -
Help Jimmy POJ - 1661
点击打开链接两种解法一:记忆化搜索 写法其实很多 一个搜索题一般写法很多理清思路 各种边界处理好就行 不要一会觉得这样行 过一会觉得那样好 反而搞乱了思路#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;#defin...原创 2017-11-18 16:17:51 · 295 阅读 · 0 评论 -
生日蛋糕 POJ - 1190
点击打开链接参考博客点击打开链接还是有些迷。。留坑前两个剪枝是看在当前情况下能不能构成一个蛋糕第三个剪枝是看当前情况下能不能形成最优解 #include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;...原创 2017-11-07 15:20:36 · 199 阅读 · 0 评论 -
Escape HDU - 3533
点击打开链接感觉这题不太好写。。学别人用三维数组标记才过的。。还有 注意bfs时要枚举时间 看当前时间下能否到达终点 有点类似于dfs的迭代 #include <bits/stdc++.h>using namespace std;struct node1{ int d; int t; int v; int x; in...原创 2017-11-04 15:46:22 · 321 阅读 · 0 评论 -
Fliptile POJ - 3279
点击打开链接第一行的每个格子按或不按两种选择 m列则有2^m种情况 通过dfs确定每一个元素都只能通过按下下一行的同列格子来改变 最后看一下第n行是否全为0即可 #include <stdio.h>#include <cstring>#include <algorithm>using namespace std;#define N 0x...原创 2017-11-03 21:49:33 · 211 阅读 · 0 评论 -
Gap HDU - 1067
点击打开链接第一次用哈希 感觉和状压就是一回事。。#include <bits/stdc++.h>using namespace std;#define M 1000007struct node{ int t[10][10]; int s;};queue <node> que;int num[10][10],tar[10][10]...原创 2017-11-03 20:26:22 · 373 阅读 · 0 评论 -
DNA sequence HDU - 1560
点击打开链接算是搜索进阶题吧(发现自己搜索要学的东西还很多啊 到现在才开始进阶。。)枚举搜索深度(可二分) 看当前深度下是否可以解决问题这道题目中还需要剪枝 若剩下所需匹配数大于剩余步数 则无解 提前返回 #include <bits/stdc++.h>using namespace std;int len[10];int n,lim,flag;char...原创 2017-10-31 16:31:13 · 433 阅读 · 0 评论 -
帅气的HYC迷路了 QDU
点击打开链接这个题主要是第一问 要按照要求的规则走到目的地刚接触搜索算法没多久时做了这道题 当时感觉很懵逼 模拟第一问过程的思路都是错的现在再看这个题.. 还是有一些小细节需要注意先DFS模拟第一问过程 注意不可用传参方式记录路长 因为折返时额外走的弯路也要计算在内最后BFS求最短路程即可 #include <stdio.h>struct node{...原创 2017-07-29 13:55:24 · 352 阅读 · 0 评论 -
Find The Multiple POJ - 1426
点击打开链接利用了同余定理(a*b)%m=((a%m)*(b%m))%m(a+b)%m=a%m+b%m;在这里 判断一个较大数是否为目标数n的倍数时(即%n) 等同于判断较大数的两个因子是否为目标数n的倍数 类似于快速幂的思想基于这个规律 我们从高位开始构造这个数(最高位必是1) 而下一位有两个选择 因此采用DFS如 目标数为8 当前已构造的数为1011 继续构有10110...原创 2017-07-29 11:08:22 · 271 阅读 · 0 评论 -
非常可乐 HDU - 1495
点击打开链接三个杯子 就开三维的关系矩阵表示三者之间的关系 通过BFS来遍历关系矩阵若由三杯水分别为 x1 y1 z1 的状态 经过互相倒水的合法操作后 可以变为 x2 y2 z2 的状态则e[x1][y1][z1]与e[x2][y2][z2]之间有关系 相当于(x1,y1,z1)与(x2,y2,z2)两点之间联通 继续遍历直到找到题目所给目标状态为止虽然BFS写的比较麻烦 但...原创 2017-07-28 15:54:32 · 236 阅读 · 0 评论 -
The Tag Game CodeForces - 813C
首先 想要尽可能拖延游戏时间 Bob必须躲在一个离Alice尽可能远的叶节点(度为1)而怎样知道两人分别到每个叶节点的距离呢?分别以两人位置为根 递归遍历整张树图 节点在第几层递归遇到 它就在第几层 离根节点的距离就是多少再以与Alice距离为依据 将所有叶节点排序 距离长者优先考虑 但可能在Bob前往该地时会被Alice截击 也就是说Alice离该点更近这条路行不通 考虑...原创 2017-07-28 09:18:13 · 257 阅读 · 0 评论 -
Ignatius and the Princess I HDU - 1026
点击打开链接还是bfs+优先队列 难点就是保存节点此题用STL的优先队列 但麻烦就是弹出的节点无法保存 求路径比较麻烦不用STL的话模拟这个过程又太麻烦..最后想出再开个专门存 路径中某节点的父节点位置 的二维结构体数组虽然由起点至终点每个点最多可向三个方向各自扩展出一个子节点 哪个方向的子节点才是最短路径中的节点无法确定但是从终点回溯 其父节点是唯一的 因此最终递归输出...原创 2017-07-23 18:47:18 · 232 阅读 · 0 评论 -
Problem J. Let Sudoku Rotate HDU - 6341
http://acm.hdu.edu.cn/showproblem.php?pid=6341搜索题。。可行性剪枝结合最优解剪枝 说着简单 比赛都没敢往搜索想 直接跳了。。#include <bits/stdc++.h>using namespace std;int mp[300];int ans;char ch[20][20];void init(){ ...原创 2018-08-03 00:18:58 · 181 阅读 · 0 评论