![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
----搜索----
文章平均质量分 52
beihai2013
这个作者很懒,什么都没留下…
展开
-
UVA11882 Biggest Number
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23314题意:给定一个方格,格子里或者是数字或者是'#'(即不能通过),问按照贪食蛇走法,按先后来排序,得到最大数字是什么(明显没有说清楚好嘛!)思路:搜索。刚开始想到的只有DFS,超时。上网查题解才知道要用预判进行强力的剪枝。首先用长度进行预判,再在长度相等原创 2015-04-15 18:51:02 · 486 阅读 · 0 评论 -
HDU 2767 强连通分量
HDU 2767题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2767题意:给n个命题,m个推导式表示A能推出B。问至少还需要多少个推导式能使所有命题等价。思路:强连通没什么好说的,主要是最后的答案应该输出什么。n-缩点最长链点数。这个很明显有问题。然后想到最后形成一个森林,所以就是叶子节点数+根节点数-1。然而只差一原创 2015-08-27 09:20:33 · 325 阅读 · 0 评论 -
UVA 11324 强连通分量 最长链
UVA 11324题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=25&page=show_problem&problem=2299题意:给一个有向图,问最大的子图使得任意两点有路径可达。思路:1A啊!求强连通缩点后具有最多结点的链即可。源码:原创 2015-08-27 10:05:49 · 288 阅读 · 0 评论 -
HDU 3072 强连通分量 + topo
HDU 3072 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3072 题意: 给一个有向图,边有权值。 问最小的传递信息代价,代价是边的权值。 一个相互可达的顶点之间交换信息是不需要代价的,肯定存在一个点能把信息传递到其余所有点。 思路: 强连通分量+topo排序,强连通缩点以后找到入度为0的点进行topo,保存信息传递到每个新点原创 2015-09-22 19:33:32 · 351 阅读 · 0 评论 -
POJ 2942 双连通分量
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5409题意:一些点,一些边。要求找出那些点,与任何其他任意多个点都不能构成一个简单奇环。输出这些点的个数。思路:好难~一开始就卡住,想这个怎么去选点都会变成分类讨论。题解直接取了原图的补图,然后判断哪些点不再奇圈上。对于一个双连通图,若中间存在奇圈,则可以证明任意原创 2015-08-24 21:10:28 · 350 阅读 · 0 评论 -
HDU 5409 双连通缩点
HDU 5409题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5409题意:给一个图一些边,保证图连通问对于每条边,如果去除该边后使得图中一些点不连通。设这些点(u,v),要求使u尽量小,v尽量大,输出这样的(u,v)。否则输出0 0。思路:感谢http://www.cnblogs.com/oneshot/p/474884原创 2015-08-24 13:33:32 · 652 阅读 · 0 评论 -
POJ 3532 双连通缩点
POJ 3352题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=11219题意:一些点之间有边相连,保证整个图连通。问至少增加几条边,能使得去掉任意一条原始边后原图仍然保持连通。思路:双连通缩点版题。最后答案为(缩点树种度为1的点个数+1)/2。因为是测版,所以看题解过的~源码:#原创 2015-08-24 15:41:52 · 417 阅读 · 0 评论 -
POJ 3694 双连通分量 割边 LCA
POJ 3694题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=11132题意:给一个图,保证连通。有q个操作,每次加边。问每次操作后,图中剩余的桥数目。思路:图论题不要套版!图论题不要套板!图论题不要套板!刚开始用双连通缩点,缩到后来越来越麻烦,因为更新节点之后更新新点时的指向总会变原创 2015-08-25 07:50:14 · 313 阅读 · 0 评论 -
HDU 3844 双连通分量
HDU 3844题目链接:题意:给一个图,保证连通。问至少修几个通往地上的通道,使得其中一个点坏掉的时候,其他点都有通道可以通向地面。思路:上来先想到应该是划分双连通分量,双连通分量缩点。这是错的啊,这是错的啊,这是错的啊!只有边双连通分量才能缩点啊!改成点双连通分量就行,然后再注意些小问题最后答案注意乘法不爆long long,比如n要清0。源码:邻接表版原创 2015-08-26 14:20:28 · 383 阅读 · 0 评论 -
POJ 2762 强连通分量 Tarjan + 缩点
POJ 2762再贴一发Tarjan#include #include #include #include #include #include #include #include #include using namespace std;#define gmax(a,b) ((a) > (b) ? (a) : (b))#define gmin(a原创 2015-08-26 22:42:00 · 281 阅读 · 0 评论 -
POJ 2762 强连通分量 Kosaraju + 缩点
POJ 2762题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=12633题意:给一个有向图,问两个点之间是否可达(能从一个点到另一个点就行)思路:强连通后缩点,然后判断它是不是链。判断链的方法有很多,数据也比较水,丑陋的姿势如我能过。源码:#include #include原创 2015-08-26 22:00:23 · 298 阅读 · 0 评论 -
11年成都 A 博弈论+记忆化搜索 HDU 4111
博弈 赛中的时候第一反应是结论题,但是跑了几个样例没跑出来 于是试着从算法方面入手。 大概猜测和堆数与石子数的总和有关,但是第一个和第三个样例告诉我应该不是简单的求和关系。 可能是记忆化搜索,但是状态过多实在不知道如何存储,然后就弃疗了……题解是这样的 发现如果当前没有石子是一个,且(石子堆数 + 石子总数 - 1)为偶数,则是必胜状态。 这是整个算法的基础。 但是现在有一些石子堆只有原创 2016-06-14 18:54:20 · 299 阅读 · 0 评论 -
11年福州 G 迭代加深+强剪枝 HDU 4127
刚开始想了一种奇怪的方法去贪心,因为不是正确的就不贴了,然后T了……题解写的是IDA*,其实是迭代加深和剪枝。剪枝的地方有几处:1.估价函数剪枝,还剩几种颜色估计几步2.无效剪枝,如果当前这个颜色已经没有就不用走这一步了整体的思路是这样的把原图按照颜色做一个连通块,然后原图可以分为三个部分:和(1,1)连通的点、和(1,1)连通的点相邻的点、其他点那么,每次只在这些和(1,1)连通点相邻原创 2016-06-13 15:32:02 · 274 阅读 · 0 评论 -
POJ 3648 2-SAT
POJ 3648题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17198题意:n对夫妇,其中0号夫妇为新婚夫妇。新娘由于带着婚纱只能看到对面的人。现在安排座位,座位的规则是不坐左边就坐右边。要求一对夫妇不能同时坐一边,而且一些有特殊关系的人不能坐在新娘的的对面。输出可能坐在新娘这边的夫或者妇原创 2015-08-27 16:19:05 · 282 阅读 · 0 评论 -
UVA 1146 2-SAT
UVA 1146题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36009题意:n架飞机,有两个降落时间任选一个。选择一种合理的降落时间分配方案,使得相邻降落的两架飞机降落时间最小间隔最大。思路:看了题解,也不知道1A有木有效果。二分时间,判断是否合法。因为一架飞机降落只有两种状态,所原创 2015-08-27 20:25:32 · 312 阅读 · 0 评论 -
UVA 1391 2-SAT
UVA 1391题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=38529题意:n个人,年龄在均值以下的去A或C,以上去B或C。有m中仇恨方式,问一种合理的方案并输出。思路:2-SAT我没有看题解哦我没有看题解哦我没有看题解哦我没有看题解哦~刚开始想怎么去处理三种状态,原创 2015-08-27 22:08:53 · 320 阅读 · 0 评论 -
BNU 39423 最大团
BNU 39423题目链接:http://acm.bnu.edu.cn/v3/problem_show.php?pid=39423题意:给n个点,m条边,边有权值。若两点之间没有边则设边权值为0。集合权值的定义为集合内任意一点到其余点边权值最小值之和。问怎样选取一些点,使得点构成的集合权值最小。思路:最大团(即最大完全子图)。其实就是DFS暴搜,枚举哪些点在团里,若原创 2015-08-23 17:29:31 · 309 阅读 · 0 评论 -
POJ 1419 最大独立集(即最大团)
POJ 1419题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17391题意:给一个图,要求把图中点染色,规则是一个点如果染成黑色,则有边相连的其他点不能染成黑色。问怎样选取最多的点染成黑色。输出点个数和选取方案。思路:最大独立集:一个图中最大的互相没有边相连的点集。结论:原图的最大原创 2015-08-23 20:22:36 · 1081 阅读 · 0 评论 -
POJ 2186 强连通分量kosataju + 缩点
POJ 2186题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16578题意:给一个有向图,问图上所有点都能到它的点有多少个。思路:1A好开森。求强连通分量,练习kosaraju。最后缩个点然后topo一下结束。Kosaraju原理:先按照原图dfs的topo一次,然后在根据反top原创 2015-08-26 15:36:48 · 334 阅读 · 0 评论 -
Codeforces Round356 div2 680AB 679ABC
Codeforces Round356 div2 通过数: 3 线上的时候卡在第四题,由于答案的大小没有估计好(猜测最坏情况10^5个),所以没有猜测出相应算法。 返回去看第三题,发现十分简单WA了一发,格式错误一发过了。 看到第五题的时候大概还剩20分钟,代码能力欠缺没调出来。 a:#include <bits/stdc++.h>using namespace std;int a[1原创 2016-06-09 12:54:20 · 441 阅读 · 0 评论 -
Codeforces Round 354 div2 676ABCDE
Codeforces Round 354 div2 通过数: 4 A:#include <bits/stdc++.h>using namespace std;const int MAXN = 100 + 5;int a[MAXN], n;int main(){ while(scanf("%d", &n) != EOF) { for(int i = 1 ; i <原创 2016-05-26 16:58:02 · 285 阅读 · 0 评论 -
HDU 4403 DFS
HDU 4403 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4403 题意: 对于一个数字串(长度小于等于15),问有多少种添加一个等号和多个或者0个+号的方法,使得等号两边值相等。 思路: 暴搜,枚举=号位置后,枚举每次有几个加号,然后这些加号放的位置。 源码://#pragma comment(linker, "/STACK:1原创 2015-09-25 09:28:04 · 281 阅读 · 0 评论 -
HDU 2821 DFS
HDU 2821题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2821题意:给一个矩阵,每个格子可能有权值或者没有。现在有矩阵运动的规则如下,自己确定一个起始点,每次确定一个方向就会一直走下去,直到碰到有权值的单元。碰到有权值的单元时,会消掉一个单位的权值,并且把剩余的权值按照原来的方向推给下一个格子(此处看错题WA一次)。求原创 2015-08-19 14:52:55 · 255 阅读 · 0 评论 -
HDU 1664 BFS
HDU 1664题目链接:题意:给一个数字n,一个数字,在满足数字每个位上拥有最少不同数字的前提下,该数字的最小值。思路:想到了在n的范围内,如果出现重复数就不在往下走的做法。但是依然有难处理的地方,就是如何保证不同数字最少。也想过对n个、十、百、千等每位分解出来讨论,然后维护一个区间,讨论0、1、2、3、4、5、6、7、8、9的区间。然而最后都会卡在这个数到底有多长的条件原创 2015-08-18 11:32:50 · 321 阅读 · 0 评论 -
HDU 1226 BFS
HDU 1226题目链接:题意:求一串密码。密码的规则即密码是c进制的,且能被n整除的最小值。密码最多500位,超出后不合法。密码可能由m中数字任意组成。思路:有没有那种写过一次不想再写一次的题。有,比如这题。需要特判0的情况。需要记录已经出现了余数的情况,用来剪枝。 源码:#include #include #include #includ原创 2015-08-17 22:11:29 · 278 阅读 · 0 评论 -
HDU 1429 BFS + 状压
HDU 1429题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429题意:迷宫,从起点走向终点。有墙,有门禁,有钥匙。思路:BFS + 状压源码:#include #include #include #include #include #include #include using nam原创 2015-08-16 15:45:13 · 267 阅读 · 0 评论 -
UVA 12828 & CSU 1513 DFS
UVA 12828 & CSU 1513题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=59187题意:A队五个球员,B队五个球员,各有进球概率。有规则如果队(假设A队)肯定赢了,则不用继续继续进行比赛。问某种比分概率。思路:dfs爆搜,只是有坑。提醒:有顺序哦。源码:#i原创 2015-08-28 23:32:52 · 328 阅读 · 0 评论 -
二分图 CSU1574 Amanda Lounges
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=158908题意:给一些点和一些边。边的权值可为0,1,2,分别表示边的两个结点上取0个、1个、2个。存在矛盾的答案,即输出impossible。问合法情况下,最少取多少个点。思路:在输入过程中初始化use数组,-1为不能使用,1为使用。此时有矛盾判断。原创 2015-05-01 08:36:46 · 449 阅读 · 0 评论 -
URAL 1557 连通性
URAL 1557 题目链接: 题意: 给一个无向图n个点m条边。 问删除两条边的方案,使得图不连通。 思路: 基本照着别人的博客打的。 题目很复杂,建模也很复杂。 首先分析删除边有几种情况。 一.删除边种有一个为桥,则再删除另外一条任意边即可。 二.删除的两条边都不是桥,则断定删除的两条边一定在一个边双连通分量内。那么,画图可知两个点之间如果能够删边使他们不连通,则他们之间一定原创 2015-10-01 21:05:12 · 458 阅读 · 0 评论 -
HDU 4850 欧拉回路的思想
HDU 4850 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4850 题意: 给出字符串长度n,构造一个字符串使得里面任意一个长度大于等于4的连续子串出现且仅出现一次。 思路: 容易知道只要满足长度为4的子串不重复就可以。 感谢这位博主http://blog.csdn.net/keshuai19940722/article/deta原创 2015-10-01 21:06:28 · 389 阅读 · 0 评论 -
HDU 1560 迭代加深
/* IDA*会MLE,用的迭代加深搜索。 具体来说就是设一个可以搜索的最大深度 如果当前搜索到的深度加上预测还要搜索的深度大于这个最大深度,则不继续进行搜索 否则继续搜索,如果搜到底,则说明这个深度合法,即答案。 */#include <bits/stdc++.h>using namespace std;const int MAXN = 10;int原创 2016-04-11 17:29:14 · 450 阅读 · 0 评论 -
Codeforces India Hack2016 653ABCED
Codeforces India Hack2016 653ABCED 通过数:2 Rating:1288 倒数第二题是后缀数组,倒数第一题没看,哪一天再厉害一点再做吧。A: 简单题#include <bits/stdc++.h>using namespace std;#define pb push_backconst int MAXN = 1000 + 5;int a[MAXN],原创 2016-04-13 19:15:21 · 349 阅读 · 0 评论 -
HDU 2102 BFS
/* 坑点有: 两层相对位置都是#的情况不可取 T时刻到达公主处可取 */#include <bits/stdc++.h>using namespace std;const int MAXN = 10 + 5;char g[MAXN][MAXN][MAXN];int dp[MAXN][MAXN][MAXN];int n, m, T;struct Node原创 2016-04-12 17:59:35 · 318 阅读 · 0 评论 -
HDU 1560 双向BFS
/* IDA*直接TLE 队友说,双向BFS的复杂度是正常BFS的复杂度上开一个根号改双向BFS的时候存在几个问题。一,男人每次可以走三步怎么处理。对他这个队列进行三次BFS就可以 原队列里的元素扩展出的新节点往新队列里加,保证对于这一次BFS只走一步,这样三次BFS即走三步二,鬼魂可以穿墙三,如何判断鬼魂是否相遇。 如果这次遇不到,下一次进行BFS的时候需要判断当前节原创 2016-04-12 16:20:03 · 341 阅读 · 0 评论 -
HDU 3533
HDU 3533 /* 这题代码量太恶心了,中间还隔了一个星期写起来就和重写一样费劲 预处理处每个Castle的最远射程 然后存一个dp[i][j][k],表示(i,j)这个点在k时刻时能不能走到判断Castle是否能射中某个人时那里比较啰嗦,不过没找到更好的写法*/#include <bits/stdc++.h>using namespace std;cons原创 2016-04-07 11:16:29 · 598 阅读 · 0 评论 -
Kuangbin带你飞专题一 简单搜索
Kuangbin带你飞专题一 简单搜索 记得E和M比较难看了题解,其他还好 A:POJ 2321#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <string>#include <algorithm>#include <iostream>using namespace std原创 2016-03-24 10:03:23 · 393 阅读 · 0 评论 -
HDU 5602 记忆化搜索
HDU 5603 题目链接: 题意: 有n(<=3*1e5)条线段。 M个分组,每个分组里有一些点。所有分组的点数和不超过3*1e5 点和线段的点范围均在1e6以内。 为对于一个分组,有多少条线段至少覆盖分组里的一个点。 思路: 基本照着div1里大神们的代码写的,万分感谢~Solution1: 反过来看,只要求每个分组里不覆盖点的线段就可以。 如果把数轴的左端点0和右端点1e6原创 2015-12-27 18:58:59 · 387 阅读 · 0 评论 -
HDU 5113 DFS + 剪枝
HDU 5113 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5113 题意: 给一个矩阵,一些颜色和每种颜色的使用次数。问一种合法的方案使得填色后相邻格子颜色不同。 没有合法方案输出impossible。 思路: 卡常数,用结构体会T。 剪枝,如果一种颜色的个数大于剩余格子个数的一半就减掉。 自己写的时候每次都对颜色按剩余数排序原创 2015-10-13 19:03:55 · 296 阅读 · 0 评论 -
Codeforces Round 355 div2 (E abandoned)677ABCD
Codeforces Round 355 div2 (E abandoned) 通过数: 3 前三题比较正常,D用了很奇怪的算法强行符合的复杂度,E是十分恶心的模拟由于用了比较笨拙的办法,实在是不想改了…… 关于D,赛中的时候考虑可能出现边过多的情况,这时候没法处理。所以,标程算法给出了这样的答案:边过多时,用bfs搜索全图;边少时,用两两之间求曼哈顿距离更新。可以证明这样的复杂度是O(n*m原创 2016-06-15 15:08:20 · 522 阅读 · 0 评论