![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS&DFS
TSOI_Vergil
这个作者很懒,什么都没留下…
展开
-
usaco 2.2.2 Subset sums
一看到这道题先打了一个爆搜,发现N=39太大,TLE。然而我们发现N/2还是可以很快的跑出答案来的,于是开始写折半搜索,于是就写成了人生第一个折半搜索..写完以后调了一下然后过了。看网上的题解发现竟然有递推式,感觉自己还是太弱了...膜拜大神。#include#include#includeusing namespace std;int n,sum;long long ans=0;原创 2016-09-11 11:15:25 · 322 阅读 · 0 评论 -
usaco 3.2.5 msquare
一道BFS求最短路的题,我们可以用一个21位整数来存储,我们可以把8这个数字变成0,那么7这个数字只需3位,而且我们只用知道前7个数就能推出第8个数的值。可惜这个方法在usaco里超出内存限制,不过这种方法还是比较好实现的,代码长度相对较短。#include#include #includeusing namespace std;#define maxn 50000int q[maxn+原创 2016-09-23 21:28:25 · 295 阅读 · 0 评论 -
洛谷 1092
经典搜索题,开始的思路是从右向左推,如果发现有字母没有赋值,就给他赋值,如果发现不满足条件就回溯,这样就有80分了,后来将赋值顺序由0--n-1改成了n-1--0,这样就有90分,因为小的数字比较灵活,容易进到更深层,而大的数字发生回溯的概率更高,然后看了别人的题解有发现了一个剪枝,将当前处理的列左边的那些列扫一遍,如果发现有3个数全确定的判断是否合法,如果不合法就回溯,这样就变成了满分。#i原创 2016-10-23 08:45:22 · 414 阅读 · 0 评论 -
洛谷 1514
这道题我们可以考虑一下,如果我们可以把每个湖能到达的沙漠的区间[l,r]求出,我们是不是可以用贪心来求最小区间覆盖即是答案?那么我们可以怎么求呢?最直观的想法是对每个湖边的点做一遍Dfs,这个复杂度是N立方的,会被卡掉,那么我们如何优化?我们只求满足h[1][i]>=h[1][i-1]且h[1][i]>=h[1][i+1]的L[i]和R[i],因为如果当前点不满足这两个条件的任何一个,我们都可以证原创 2016-10-23 10:31:46 · 265 阅读 · 0 评论 -
NOIP 2011 Day1T3 Mayan游戏
这道题耗了我整整一个下午,被读入坑了,然后还被各种坑,首先不知道为什么在栈中使用memcpy会崩掉,然后数组越界...... 这题就是一个搜索,考验代码能力和基本的模拟,一个非常有效的剪枝是我们对于向左移动,我们只搜左边没有方块的,因为如果它的左边有方块的话,它俩一定会在搜它左边的块的右边时交换过,剩下的就是模拟方块清除和方块下落的过程,对于方块清除操作,我们可以全部扫一遍,用一个标记原创 2016-11-03 19:09:19 · 465 阅读 · 0 评论 -
洛谷 1041
这道题居然是一道搜索题....不过这道搜索题做的也是值得反思,没有从题目的本质入手,一开始打了一个搜索,后来发现更新答案时很不好弄,因为不知道到底什么时候是传染病结束,那么怎么办呢?我参考了题解发现题解是按照一开始全部被传染,然后一点一点减的,这样我们可以每次更新ans,最优的一定会被我们更新。由于每一层只能有一个儿子被切断,我们枚举那个点,然后搜索就好了。#include#include原创 2016-10-25 19:48:31 · 354 阅读 · 0 评论 -
NOIP 2015 Day1T3 斗地主
暴力不解释,数据随机生成,我们可以贪心的按打出牌的数量从多到少出,那么这样就能够使最优化剪枝起到很重要的作用,怎样简化代码呢?我从题解中发现了一种将单顺子,双顺子和三顺子合成一种的方法,具体实现看代码,另外我们不要考虑一种牌一下出1--4张的情况,因为如果我们把其他情况考虑完后,剩下多少种牌就要出几次,这样的话代码量就会减少一部分。#include#include#includeusin原创 2016-10-17 20:52:47 · 573 阅读 · 0 评论 -
洛谷 1073
这题开始我想复杂了,用Tarjan缩点然后在DAG上乱搞,后来冷静分析,题目中要我们求的其实就是1--n的路径中能得到的最大差价,令maxx[i]表示在1--n的路径中,i及i后面的点中水晶球价格的最大值,minn[i]表示在1--n的路径中,i及i前面的点中水晶球价格的最小值,这两个量是容易O(n)去维护的,但是问题是如何知道这个点在不在1--n的路径中。我们可以利用反图的思想,先以1为起点在正原创 2016-10-25 17:54:37 · 351 阅读 · 0 评论