![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索
yzyyylx
这个作者很懒,什么都没留下…
展开
-
POJ 2449 Remmarguts' Date(k短路)
题面题意 给出一幅有向图,求出其中的第k短路方法 首先应该想到用BFS加上优先队列,按照距离由短到长进行搜索,当到达终点次数达到k次时停止.代码(错误)#include<iostream>#include<cstdio>#include<cstring>#include<queue>#define ll long long#define P pair<ll,ll>#defin原创 2017-11-07 20:06:07 · 239 阅读 · 0 评论 -
BZOJ1098: [POI2007]办公楼biu
题面题意给出一张无向图,求其补图(将原图的边去掉,没有的边全部连上)的联通块的个数。做法因为n很大,所以建出其补图根本不现实,但是我们可以根据原图的边判断那两个点有可能不在同一个联通块内,而若原图中的两点间没有边,则在补图中,两点一定在同一联通块内。 基本的思路使用bfs,枚举一个点,然后枚举与其在补图中与其相连的点(即在原图中与它不相连的点),这样复杂度较高。 考虑优...原创 2018-09-14 20:38:43 · 154 阅读 · 0 评论 -
BZOJ4622 [NOI 2003] 智破连环阵
题面题意有n个点需要被覆盖,你有m个半径为k的圆,每个圆覆盖的点是圆内(包括边界)编号连续的一些点,且每个圆只能使用一次,问至少要选择几个圆才能覆盖所有点。做法这个问题可以拆成两个子问题: 1.将n个点根据编号拆成k段。 2.判断m个圆与这k段的最大匹配是否是k。 可以发现第二个子问题可以用二分图的最大匹配轻松求解,而对于第一个子问题只能用搜索。 但是搜索的复杂度最...原创 2018-08-30 16:04:51 · 369 阅读 · 0 评论 -
OIBH的NOIP模拟试题 巧置挡板
题面题意猫猫送走了客人,留住了蜗牛点点,晃晃悠悠走到池子边,又打起了鱼的主意。俯 瞰池子,猫猫发现鱼阵明显乱了。“难道鱼们故意让我无法下嘴?”猫猫看到正在池边散 步的点点,心想:“一定是他告的密……”猫猫愤怒地抓起点点,把他关进了抽屉里。 猫猫想:“好啊,鱼儿啊,你们不就是会传递信息吗?有什么了不起?用挡板把你 们隔离开,看你们还怎么交流!”猫猫随即从后花园里拿来若干挡板,打算...原创 2018-08-16 16:35:37 · 779 阅读 · 0 评论 -
欧拉序
解释 指在dfs过程中各个点扫过的顺序例子 上图的欧拉序为:1 2 4 2 5 6 5 2 1 3 1代码struct Bn{ int to,next,quan;}bn[N*2];int ou[N],oo=0;void dfs(int now,int last){ int p; p=first[now]; oo++; ou[oo]=now原创 2017-10-29 15:43:18 · 599 阅读 · 0 评论 -
IDA*
解释 一种剪枝方法,用于优化dfs,在进行dfs时,每次都预估一下至少还要几步才可以得到答案,若此时的深度加上估价已经大于当前的最小值,则直接剪枝代码int gj(){ 据题意而定;}void dfs(int now){ if(now+gj()>=mn) return;}原创 2017-10-28 15:22:47 · 251 阅读 · 0 评论 -
POJ 1475 Pushing Boxes
题面题意 给出一副只有一个箱子的地图,输出路径.没有则输出”Impossible.” 路径要保证箱子移动次数最小,在此条件下,人移动次数最小.方法 因为求最小次数,故用BFS 因为考虑到要箱子移动次优先,而不是人,故直接搜人怎么移动必然会出错 因而我们可以给每次移动加一个权,人移动的代价是1,箱子是1000,并将结果存储在一个优先队列中,这样就能保证箱子移动次数最少,再用原创 2017-11-06 17:43:08 · 339 阅读 · 0 评论 -
八数码 HDU - 1043(状态压缩,宽搜)
题面题意 3*3的方格中有一个x,可以将x与它相邻的方块交换,使最终结果为 1 2 3 4 5 6 7 8 x方法 用康拓展开式的方法,状压(也可以采用哈希表),然后通过不断的转换实现用1~362880(9!)来记录3*3中数字的状态 记录时,用9来代替x 再进行宽搜(从最终状态开始),用一个数组来记录达到各个状态之前的状态,并用另一个数组记录这次的移动代码原创 2017-10-18 18:01:58 · 518 阅读 · 0 评论 -
hdu1010(dfs+剪枝)
题面题意 给出一个迷宫,从S到D,X是墙,并给出一个时间T,问能否恰好在T时到达D点,不能重复走方法 DFS+剪枝 因为走过的点不能再走,且不是最短路,故不能用BFS,而DFS的回溯能解决此问题,故用深搜. 直接搜索显然不行,必须要加以下剪枝: 预处理时: 1.非x点不到t+1个,直接输出No 2.由奇偶来看,起点走t步后与终点的奇偶性不同,直接No 搜索时原创 2017-11-03 08:24:48 · 227 阅读 · 0 评论 -
Find The Multiple(POJ_1426)
题面题意给出一个n,输出n的倍数中一个仅有0和1构成的数,n<=200.法1 打表将长度在11及以内的01串打下来,并特判几个不在这个长度内的数 也可以直接打印200个数的答案表 非最优方法,但也是个解题技巧代码#include<iostream>#include<cstdio>#define ll long longus...原创 2017-11-02 20:46:46 · 2249 阅读 · 0 评论 -
HDU 4474 Yet Another Multiple Problem
题面题意 题意,给出n和m个数,问是否存在一个n的倍数不包含这m个数,如果有则输出最小的,反之输出-1.方法 BFS,按长度一位一位枚举,首先枚举0~9(能用的数)若还没有数与它除以n同余,就将记录在下标为该余数的数组中,并入队,反之不记录,因为如果存在一个比他先记录下来的数和它同余,那么一定较小且在后续操作中利用价值更高. 每次从队首取出元素,并在它后面加上一个数,若组成的新数除以原创 2017-11-02 17:49:50 · 220 阅读 · 0 评论 -
noip2017 Day1 T3 逛公园
题面题意 给一个有向图,一个起点和一个终点,问有几条路可以在小于等于最短路+k的时间内从起点到达终点,若有无数条(没有0环)则输出-1.方法 首先用迪杰斯特拉跑出终点到达每一个点的最短路,之后用dp[i][j]表示到达i点还可以多走j的时间的方法种数,考试时只想到这,不会判0.代码(考试时的70) #include<iostream>#in原创 2017-11-26 18:07:34 · 500 阅读 · 0 评论