
ACM 搜索
Tuesday..
这个作者很懒,什么都没留下…
展开
-
UVA 129_ Krypton Factor
题意:一个字符串含有两个相邻的重复的子串,则称这个串为容易的串,其他为困难的串,对于给定n,l,求出由前l个字符组成的字典序第n小的困难的串。分析:按字典序在字符串末尾增加新的字符,并从当前字符串后缀入手,判断长度为偶数的子串中,是否含有重复的相邻子串。代码:#include<cstdio> #include<iostream> using namespace std; int n, l, cnt;原创 2016-01-31 15:58:40 · 383 阅读 · 0 评论 -
Codeforces 667C Reberland Linguistics【DFS】
一道卡题意的题。题目链接:http://codeforces.com/problemset/problem/667/C题意:一个串可以看成一个长度大于4的根,加上其后面的若干个相邻(in a row)不同的长度为2或3的子串组成。给定字符串,问你有多少种不同的子串。分析:很容易想到dfs的做法,注意剪枝的地方,只有在合理的情况下才标记这种情况。代码:#include<cstring> #includ原创 2016-05-01 17:13:34 · 1048 阅读 · 0 评论 -
HDU 5584 LCM Walk【搜索】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5584题意:分析:这题比赛的时候卡了很久,一直在用数论的方法解决。 其实从终点往前推就可以发现,整个过程中的点的gcd都是一样的,利用这个性质倒着搜索一遍就好了。 相同的gcd均为gcd(6,10)gcd(6,10) 以(6,10)(6,10)为例,假设倒数第二个点到达(6−x∗gcd,10)(6-原创 2016-04-27 11:13:57 · 646 阅读 · 0 评论 -
POJ 2965 The Pilots Brothers' refrigerator【BFS+状压 Or 脑洞】
题目链接:http://poj.org/problem?id=1753题意:给定冰箱门的开关情况,改变一个门则其所在行列的门都会发生改变,求出改变门的最少操作使得最终所有门都是打开状态。代码:bfs+状态压缩很容易想到~~ 这里的状态压缩要需要多加小心,注意一下存储的是翻转门的情况~#include<iostream> #include<cstdio> #include<queue> using原创 2016-03-22 23:15:33 · 398 阅读 · 0 评论 -
POJ 2488 A Knight's Journey【DFS】
补个很久之前的题解。。。。题目链接:http://poj.org/problem?id=2488题意:马走“日”字,让你为他设计一条道路,走遍所有格,并输出字典序最小的一条。分析:dfs~~~代码:#include<iostream> #include<cstring> #include<algorithm> using namespace std; typedef pair<int, int>pi原创 2016-03-21 20:33:18 · 293 阅读 · 0 评论 -
Codeforces 659F Polycarp and Hay【BFS】
有毒,自从上次选拔赛(哭哭)一个垃圾bfs写错之后,每次写bfs都要WA几发。。。好吧,其实也就这一次。。。 小白说的对,还是代码能力不足。。。 非常不足。。。题目链接:http://codeforces.com/contest/659/problem/F题意:n*m的格子,每个格子一个数,必须从格子中减去任意一个小于等于这个数的数。 给定数字k,要求: 剩下的格子数字和为k。 所有非零的格子原创 2016-04-01 17:19:49 · 869 阅读 · 0 评论 -
Codeforces 659E New Reform【DFS】
题目链接:http://codeforces.com/problemset/problem/659/E题意:给定n个点和m条双向边,将双向边改为单向边,问无法到达的顶点最少有多少个?分析:无法到达的话即入度为0。 DFS判断每一个连通块中是否存在环,如果存在环,就能保证环中每个点的入度都大于等于1。否则,有头有尾,头的入度为0。代码:#include<cstdio> #include<queue>原创 2016-03-31 20:02:34 · 1028 阅读 · 2 评论 -
Codeforces 645A Amity Assessment【八数码】
题目链接:http://codeforces.com/problemset/problem/645/A题意:2*2的八数码问题分析:这题n为2,不需要搜索,直接判断字母排列顺序就好了。 注意,如果n为奇数,直接看逆序数是否相同。代码:#include<iostream> #include<cstring> using namespace std; int f(string s1, string s原创 2016-03-19 14:18:19 · 421 阅读 · 0 评论 -
Codeforces 653B Bear and Compressing【DFS】
题目链接:http://codeforces.com/problemset/problem/653/B题意:要求你构造一个长度为n的字符串使得通过使用m个操作,最终获得字符a。已知第ii个操作将字符串中开头的字符串aia_i换成字符bib_i,长度减少1。问一共有多少种字符串构造方法。分析:直接dfs一下就好啦~~~代码:#include<iostream> #include<algorithm>原创 2016-03-19 23:11:48 · 654 阅读 · 0 评论 -
八数码总结
题意:八数码问题也称为九宫问题。编号为1~8的8个正方形滑块被摆成3行3列,棋盘上还有一个空格,每次可以把与空格相邻的滑块移到空格中,而它原来的位置就成了新的空格。给定初始局面和目标局面,计算出最少的移动步数。 参考来源:八数码的八境界方法1:暴搜+queue,如果空格用’0’表示的话可以直接将状态压缩成一个9位整数,也可以用字符串表示状态,用结构体表示状态+步数+空格的位置。代码:/* 2641原创 2016-03-18 11:29:47 · 1754 阅读 · 1 评论 -
UVA 10603_Fill
题意:给定三个杯子容量,初始只有第三个杯子满,其余为空,求最少需要倒多少水才能让某一杯子中有d升水,如果不能达到,则小于d且尽量接近。分析:因为要求转移水量最少,所以采用优先级队列保存每次的状态,保证每次都是取出转移水量最少的点进行扩展。bfs求出杯中水达到d(接近d)时最少转移水量。代码:#include<cstdio> #include<iostream> #include<cstring> #原创 2016-01-31 19:18:05 · 327 阅读 · 0 评论 -
POJ 3083_Children of the Candy Corn
题意:给定迷宫图,求出一个人从入口进,从出口出,所走过的最短路径以及分别沿着左手边和右手边的墙走出迷宫所走过的方格数。分析: bfs求最短路 对于沿左右两边的墙走的情况,记录好行走的方向及相对应的左/右边墙的方向坐标 注意判断前方和左/右是否为墙,若前方为墙,则进行逆时针旋转,若左/右方不为墙,则应直接向左/右方向走。 注意考虑前方和左/右边坐标不在迷宫内的情况。 代码:#include<iostr原创 2016-01-31 16:55:56 · 335 阅读 · 0 评论 -
HDU 5676 ztr loves lucky numbers【DFS】
题目链接;http://acm.hdu.edu.cn/showproblem.php?pid=5676题意:由4和7组成的且4和7出现次数相同的数称为幸运数字,给定n,求不大于n的最大幸运数字。分析:可以对于每个数都按位dfs找一发。一旦发现当前位无法满足就回溯,直到找到满足条件的最小的。 也可以先按位dfs把所有结果都找出来存起来,然后对于每个询问直接二分即可。代码:#include<cstdi原创 2016-05-01 19:06:02 · 382 阅读 · 0 评论