
搜索
文章平均质量分 85
cillyb
这个作者很懒,什么都没留下…
展开
-
欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2016-04-07 11:35:36 · 347 阅读 · 0 评论 -
蓝桥杯 剪格子 (搜索)
题目地址:点击打开链接同一部分一定是连着的,所以从左上角开始搜索即可。注意输入是先列数再行数。代码:#include#include#includeusing namespace std;const int INF = 0x3f3f3f3f;const int maxn = 15;int a[maxn][maxn], n, m, sum, ans;bo原创 2017-02-26 22:28:39 · 384 阅读 · 0 评论 -
qduoj 30 帅气的HYC求乘积(dfs)
题目地址:点击打开链接思路:因为数据量比较小,直接搜索枚举放乘号的位置就行。注意枚举到最后一位数字后别忘了记录下来。代码:#include#include#includeusing namespace std;typedef long long ll;ll rec[10], ans;int num[25], n, k;bool book[25]原创 2017-03-07 15:25:07 · 479 阅读 · 0 评论 -
Codeforces 366D Dima and Trap Graph(搜索剪枝/二分)
题目地址:点击打开链接题意:给你一个图,每条边有一个[L, R],只有在这个区间内的点才能通过,问满足能从1到n的最大连续区间的长度为多少思路:二分思路:枚举下界,二分上界,dfs是否能到。搜索思路:剪枝1.如果到过该点,并且此时的左右边界比原先的小,剪枝;剪枝2:如果当前左右边界范围的值比之前搜到的答案还小,剪枝;二分代码:#i原创 2017-03-07 20:47:45 · 834 阅读 · 0 评论 -
Codeforces Round #374 (Div. 2) C. Journey(dfs+dp)
dp[i][j]表示在i点出走过j个点所需的最短时间。状态转移方程:dp[i][j] = min(dp[i][j], dp[k][j-1]+dis[k][i])原创 2016-10-07 15:20:11 · 419 阅读 · 0 评论 -
poj 3321 Apple Tree(dfs标号+树状数组)
很好的一个题,讲一个树通过标号,巧妙的转换成了树状数组。参考思路:点击打开链接思路很巧妙,我们通过自己来编号所有苹果,每个节点保存两个值,左值为本身,右值为其包含的所有后代中最大的编号我们可以通过搜索来进行编号,在编好号之后,我们可以知道,对于某一点而言,我们是先通过这个点搜完所有他的后原创 2016-10-28 19:52:40 · 713 阅读 · 0 评论 -
hdoj 5113 Black And White(dfs, 剪枝)
搜索好写,但是需要剪枝,。此题的剪枝是设剩下需要need个要填,此时各个颜色还要ci个,若某个ci大于need的一半(即ci > (need+1)/2)肯定会有相邻的同色,所以可以剪去这种情况。代码:#includeusing namespace std;const int maxn = 10;int row, col, k, pic[maxn][maxn], c原创 2016-11-04 19:22:53 · 393 阅读 · 0 评论 -
Educational Codeforces Round 22 C. The Tag Game(思维 搜索)
题意:给你一个无向有根树,根节点为1,有两个人,A在节点1,B在节点X,AB轮流走,B先走,每次可以原地不动或是向相邻节点移动一次。A想最快抓到B,B想最慢被抓到,问什么时候A抓到B。思路:每个人都走最优,是不会走回头路的(B来回走可以看作在一点不动),那么我们可以先求下A,B分别到所有节点的最短时间,对于每个节点如果B走的时间小于A走的时间那B就可以走到这个,所以找到disB[i原创 2017-06-06 00:58:36 · 758 阅读 · 0 评论 -
之江学院2017ACM校赛 Problem B: qwb与矩阵(记忆化搜索)
题意:(n, m)的迷宫,每个点都有一个值,从(1, 1)走到(n, m) 有三种走法:移动到(x+1,y),(x,y+1)或者(x,y*k),其中k>1,问走到(n,m)的最大价值。思路:和HDU1078很像,记忆化搜索就行。代码:#include#include#includeusing namespace std;const int maxn = 25;原创 2017-06-01 20:00:00 · 1523 阅读 · 0 评论 -
HDU 5094 Maze & HDU 4845 拯救大兵瑞恩 (BFS + 状压)
题意:给你一个n*m的迷宫,地图中有一些障碍不能走,还有p种门,要过门首先得拿到跟这扇门同类型的钥匙。问从(1,1)到(n,m)最短时间。(1思路:没有门的时候都会做,一个bfs就行,现在只不过是多了门这种情况。解决办法:book[x][y][sta] 表示(x, y)这个点在sta状态下是否已经走过,sta表示拥有钥匙情况。bar[x1][y1][x2][y2] 表示原创 2017-08-02 23:38:12 · 477 阅读 · 0 评论 -
2017 Multi-University Training Contest 10 1001 Admiral HDU 6171 (双向搜索 哈希)
题意: 给你一个高度为6的塔形数组,你每次只能将0与他上下相邻的某个数交换,问最少交换多少次可以变为初始状态,若需要的步数大于20,直接输出too difficult,初始状态为:0 1 1 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5思路:因为最多走20步,当存搜索时间复杂度4^20, 所以我们可以分别从当前状态和初始状态进行双向原创 2017-08-25 21:56:35 · 562 阅读 · 0 评论 -
HDU 5887 Herbs Gathering (超大01背包|dfs+剪枝|map|卡时)
题意:最多100个物品,v和w都思路:是个超大01背包。这题有好多做法,学到不少东西。1.dfs+剪枝:我们可以按性价比排序,若剩下的背包空间都以最高性价比选也比我们已知的ans小,则剪枝。2.map优化dp,见代码3.按一定贪心策略把更可能是答案的放前面排序后dfs,运行时间达到一定程度则returnif((clock()-startTime)/CLOCKS_PE原创 2017-08-28 18:06:26 · 749 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2) C. Ilya And The Tree(dfs)
题意:给你一棵树,根节点是1,每个节点都有一个权值,现在要求出每个节点的结果,结果的定义为从根节点到该节点(包含)路径上所有点的值的gcd,求解每个点时可以把路径上某一个点的值变为0。每个节点的结果独立计算。思路:可以直接进行dfs,每个节点有set分别保存它到根节点不取每一个点的gcd,比如路径为1 - 2 - 3 - 4,4号节点保存的set是gcd(a[1], a[2],原创 2017-08-30 11:08:46 · 543 阅读 · 0 评论 -
HDU 5556 Land of Farms(枚举 匈牙利)
题意:N*M的矩阵,'.'代表空地,'0-9'代表古代建筑,我们如果选择了一个编号的古代建筑想要建立,那么对应就要将该编号全部建筑建立起来,如果在空地上建筑,只建立当前点。问最多能够建立多少种建筑,并且每两种建筑之间没有公共边。思路:如果没有古代建筑,匈牙利就行,相邻的点建边,最后答案就是最大独立集=点数-匹配数(因为是双向边 所以/2).这题有古代建筑,但是建筑数最多才1原创 2017-09-27 23:21:08 · 394 阅读 · 0 评论 -
HihoCoder 1233 Boxes (bfs 状压)
题意:有n个盒子放在n个放盒子的位置(1盒子往没盒子的位置或大的盒子上移。求最小移动多少次后盒子能从小到大排列地放在每个位置(每个位置一个)(T思路:因为n才7,所以容易想到状压。每个位置有3位二进制表示,所以一共需要2^21这么大的数组。状态表示第i个盒子所在的位置。(因为盒子大小只与相对大小有关,所以一开始先将大小离散化成1-n)。因为T比较大,每次盒子只能向左放或者向右放原创 2017-10-07 17:26:28 · 330 阅读 · 0 评论 -
Gym 101572E Emptying the Baltic(优先队列)
题意:n*m的地图, 每个格子有一个海拔高度, 海拔思路:从(x,y)开始bfs,扩展到的点v[tu][tv] = max(v[tu][tv], v[u][v])。但是不能用普通的bfs。需要加优先队列。(点击打开链接)因为水可以往八个方向流, 如果先出队列的不出最深的一个点的话, 原本能流过去的水可能就流不过去了, 所以用优先队列, 保证先出队列的是当前已处理的最深的节点原创 2017-11-02 23:30:00 · 496 阅读 · 0 评论 -
hdoj 1045 Fire Net (dfs or 匈牙利)
题意:给出一个图,其中有 . 和 X 两种,. 为通路,X表示墙,在.中放炸弹,然后炸弹不能穿过墙且不能互相炸到,问你最多在图中可以放多少个炸弹?思路:因为数据很弱,所以搜索也可以过。还有个更好的方法,二分图最大匹配。难在建图,把每一行中的可以放一个炸弹的一块区域标记为同一个数字,列也一样(行和列的标记数字不要有重复)。这样每个点就有一个行标记值和列标记值,然后按照这两个数字进原创 2017-02-18 13:49:53 · 465 阅读 · 0 评论 -
hdoj 2553 N皇后问题
学到了对角线标记的方法。↖对角线的规律是列-行都是相同的,因为会存在负数,所以都加上n即可。↗对角线的规律是行+列是相同的。代码:#includeusing namespace std;const int maxn = 25;int ans[maxn], n, sum;bool vis[3][maxn];void dfs(int cur){原创 2016-11-10 15:40:05 · 455 阅读 · 0 评论 -
poj 1190 生日蛋糕(dfs, 剪枝)
剪枝....参考博客点击打开链接由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用一般的神搜肯定会超时,所以这题还需要剪枝,剪枝条件有(从m层向上搜,假设前dep层的体原创 2016-11-10 17:55:49 · 425 阅读 · 0 评论 -
HDU - 1010 temp of the bone(搜索, 剪枝)
本来是写给自己看的,类似于总结的一点东西,可越写越长后觉得,不能白写啊,于是就贴上来了……….. 这题老刘上课也讲过,课件上也有标程,而且oj上都快被做烂了, 我写的也比较幼稚,毕竟还是以很菜的眼光来看搜索的,但这里面提到的一些问题觉得,如果能给新手一些启发还是不错的,毕竟是自用的东西,大家不要嘲笑我…… http://acm.hdu.edu.cn/showproblem.php?pid=101转载 2016-04-07 11:39:46 · 460 阅读 · 0 评论 -
hdoj 1045 Fire Net(dfs)
Fire NetTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10264 Accepted Submission(s): 6012Problem DescriptionSuppose that we原创 2016-08-15 16:44:10 · 452 阅读 · 0 评论 -
poj 3984 迷宫问题(bfs, 记录路径)
迷宫问题Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 16156 Accepted: 9636Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,原创 2016-08-15 16:36:35 · 402 阅读 · 0 评论 -
poj 2362 Square(dfs, 剪枝)
SquareTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 23828 Accepted: 8253DescriptionGiven a set of sticks of various lengths, is it possible to join th原创 2016-08-15 15:58:04 · 394 阅读 · 0 评论 -
qduoj 分辣条1 (搜索+剪枝)
分辣条发布时间: 2016年6月26日 20:36 最后更新: 2016年6月26日 20:37 时间限制: 1000ms 内存限制: 128M描述“你喝的酸奶是我买的,辣条也是我买的,你现在要跟我分手,你把我当什么?”“因为你每次分辣条的时候都比我多一根!”可见分好辣条是一件多么重要的事情。。现在有n(1那么能不能把这些辣条分为重量相等的两原创 2016-08-16 00:04:21 · 840 阅读 · 0 评论 -
lightoj 1174 - Commandos(最短路)
1174 - Commandos PDF (English)StatisticsForumTime Limit: 2 second(s)Memory Limit: 32 MBA group of commandos were assigned a critical task. They are to原创 2016-09-16 15:51:59 · 553 阅读 · 0 评论 -
PAT 1099. Build A Binary Search Tree (30)
1099. Build A Binary Search Tree (30)时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA Binary Search Tree (BST) is r原创 2016-09-06 17:47:19 · 462 阅读 · 0 评论 -
PAT 1013. Battle Over Cities (25)
1013. Battle Over Cities (25)时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueIt is vitally important to have all the原创 2016-09-06 23:09:45 · 329 阅读 · 0 评论 -
hdoj 3345 War Chess (搜索,优先队列)
War ChessTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2332 Accepted Submission(s): 561Problem DescriptionWar chess is hh's原创 2016-09-23 20:03:23 · 530 阅读 · 0 评论 -
PAT 1053. Path of Equal Weight (30)
1053. Path of Equal Weight (30)时间限制10 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueGiven a non-empty tree with root R, an原创 2016-09-08 16:08:44 · 363 阅读 · 0 评论 -
poj 1088滑雪(记忆化搜索, dp)
滑雪Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 92465 Accepted: 34980DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等原创 2016-09-21 00:08:01 · 474 阅读 · 0 评论 -
hdoj 2102 A计划(简单bfs)
特别要注意的是,如果时光机对面仍然是时光机..这样是过不去的,题目也没说这样不可以过啊..坑代码:#include#include#include#includeusing namespace std;const int maxn = 15;char pic[2][maxn][maxn];bool book[2][maxn][maxn];int row, col,原创 2016-10-23 19:39:31 · 476 阅读 · 0 评论 -
hdoj 4198 Quick out of the Harbour(bfs,优先队列)
一个裸的bfs+优先队列,居然还MLE两次,WA两次,哎MLE:忘记book[tx][ty] = 1了,还找了半天哪里会MLE啊。。。WA:没考虑到S就在边界的情况。。。代码:#includeusing namespace std;const int maxn = 505;int row, col, d, sx, sy;char pic[maxn][原创 2016-11-04 22:49:50 · 537 阅读 · 0 评论 -
poj 2676 Sudoku (dfs)
解数独..暴搜即可一开始傻逼的以为没必要把格子还原为0,wa了半天还坚信这不用还原...长记性了。。还有这题正搜和反搜时间差好多,正搜要400ms反搜只需16ms....代码:#include#include#includeusing namespace std;char tpic[15][15];int pic[15][15], book_row原创 2016-11-05 12:18:26 · 518 阅读 · 0 评论 -
poj 2531 Network Saboteur(dfs)
题意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值。n看网上还有用NP、随机化什么什么的。。。都不会 等学了再回过来看看吧代码:#include#include#includeusing namespace std;const int maxn = 25;int d[maxn][maxn], a[maxn],原创 2016-11-05 23:10:22 · 433 阅读 · 0 评论 -
PAT 1103. Integer Factorization (30)(dfs)
题意:给你n,k,p,让你求一个长度为k的数组a满足, n = a1^p + a2^p + .... ak^p, 如果有多个解,则取a的和最大的,如果还是有多解,则取字典序最大的。(n <= 400, k <= n, 1 < p <=7)思路:因为数据量很小,所以可以爆搜,考虑有多解的情况需要选择和最大其次字典序最大,所以我们可以倒着搜。代码:#include<ios...原创 2018-03-07 21:10:06 · 229 阅读 · 0 评论