
ACM-搜索
「已注销」
这个作者很懒,什么都没留下…
展开
-
EOJ 2527 Fj & haozi【dfs】
题目简介haozi 很淘气,最近 FJ 带了很多好吃的,haozi 乘 FJ 不在的时候就吃了很多好吃的,FJ 回来发现了,决定一定要抓住 haozi。 但是 haozi 很聪明,假设原来他在 16 号楼,那么下一分钟必定是在 15 号楼或者 17 号楼 . 如果他一开始在 1 号楼,那么下一分钟只能在 2 号楼 , 如果他一开始在 n 号楼,那么下一分钟一定在 n-1 号楼。 现在给定一共原创 2017-12-16 18:24:15 · 376 阅读 · 0 评论 -
EOJ 1718/POJ 3134/UVA 1374 Power Calculus
https://cn.vjudge.net/problem/UVA-1374LRJ紫书说要用IDA*,粗略想了想似乎是可以不用的.这里就简单dfs了一下+照搬紫书剪枝,代码意外地短.还可以进一步优化,不过考虑到这题的数据量,已经没有必要了.#include<cstdio>using namespace std;int ans, n, a[105];bool dfs...原创 2018-04-03 20:01:12 · 254 阅读 · 0 评论 -
图论练习
https://www.luogu.org/problemnew/show/P2661把同学看作点,传信息看作连一条边,那么游戏结束当且仅当图中存在环,这题中即是求最小环。DFS当然是可以的,出于偷懒这里用了带权并查集,在路径压缩和合并时还需要更新父节点的值。#include <bits/stdc++.h>using namespace std;const int m...原创 2018-03-27 22:24:33 · 168 阅读 · 0 评论 -
EOJ 3464/NEERC 2017 C.Connections【Kosaraju求强连通分量】
http://acm.ecnu.edu.cn/problem/3464/ 给定一个n个点m条边的图,要求删掉一些边使得图仍然强连通且只剩2n条边。问删去哪些边。我觉得这就是一题Kosaraju模板题。。随便选个点dfs,然后反向建图再让所有点往刚才选的这个点dfs,这样经过的边就是必须留下的边了。尽管没有tarjan那么简单,但实际上还是不难理解的。#include<b...原创 2018-03-04 22:57:08 · 306 阅读 · 0 评论 -
EOJ 3497/EOJ Monthly 2018.2 D.黑心的出租车
题目简介给定一个树/森林,从1号点出发,遍历森林中所有的点最后回到1号点。 大巴可以在有边相连的两点间往返,而出租车可以在任意两点间往返。 要求:乘出租车次数最少的情况下,乘大巴次数也最少,求两个次数。说明官方题解: 因为题目保证无环,因此必为树或森林。 当图为一棵树时,答案为 0,2(n−1)。 当图为森林时,出租车次数判一下联通块即可,其实答案就是 ...原创 2018-02-24 14:44:35 · 394 阅读 · 0 评论 -
EOJ 1839 恶魔之城
题目简介给定一个迷宫和起点终点,求最快要多少步到终点以及最快的路径,不能到达输出-1。说明显然bfs,也因此需要开一个step数组记录步数,更新没有走过的点的step。路径还原则又需要一个数组记录这一步的上一个点,还原时从后往前递归输出即可。#include <bits/stdc++.h>using namespace std;const int maxn...原创 2018-02-28 14:23:14 · 303 阅读 · 0 评论 -
EOJ 2018.1.29新生训练Week2
总体来说不算好做……但是确实也不难。A给定正整数n,k,求f(n,k)=∑i=1nik" role="presentation" style="position: relative;">f(n,k)=∑ni=1ikf(n,k)=∑i=1nikf(n,k)=\sum^n_{i=1}i^k,结果对19260817取模。 1 时限0.698s(???)上来用拉格朗日原创 2018-02-05 15:21:35 · 678 阅读 · 0 评论 -
DFS and Similar系列
EOJ 1646/POJ 3126 Prime Path 把一个四位质数变为另一个四位质数,要求每次只能改动一位数,且变化过程中产生的数也是四位质数。先筛出质数,然后普通bfs。#includeusing namespace std;int prime[10000];string s, t;bool vis[10000];void init(){原创 2018-02-04 12:09:10 · 2347 阅读 · 0 评论 -
简单dfs合集
以下题目全部来自EOJ。1012 The 3n+1 Problem(Uva 100)对一个数,如果是奇数则乘3加1,是偶数则除以2。重复直至变为1,总操作次数记为c。给定区间[i,j],求区间内最大可能取到的c的值。说明按照题意,离线dfs即可。#include #define MAX 1000000int sum[MAX + 1], m, n;int dfs原创 2018-01-04 13:29:20 · 627 阅读 · 0 评论 -
EOJ 1224 简单迷宫问题【bfs】
题目简介一天,sunny 不小心进入了一个迷宫,不仅很难寻找出路,而且有的地方还有怪物,但是 sunny 有足够的能力杀死怪物,但是需要一定的时间,但是 sunny 想早一点走出迷宫,所以请你帮助他计算出最少的时间走出迷宫,输出这个最少时间。我们规定每走一格需要时间单位 1, 杀死怪物也需要时间 1, 如果不能走到出口,则输出 impossible. 每次走只能是上下左右 4 个方向。原创 2018-01-10 21:34:12 · 465 阅读 · 0 评论 -
装箱问题两解
题目简介有一个箱子容量为 V (正整数,0≤V≤20000),同时有 n 个物品(0 < n ≤ 30),每个物品有一个体积(正整数)。要求从 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。说明考虑到n,V都不大,可以用搜索和动规两种方法来做。 可以说是模板题了。搜索:#include <stdio.h>#include <m...原创 2017-12-31 20:29:16 · 397 阅读 · 0 评论 -
EOJ 2155/UVA 529/POJ 2248/Ulm Local 1997 Addition Chains
https://cn.vjudge.net/problem/UVA-529容易想到用搜索做.比较难想的是:构造一个a数组记录每个小于n的数要经过多少个数列项之后才能到达n.这样做的好处是便于最优性剪枝:如果发现[当前数列长度]加上[至少还需要的数列长度]已经超过了当前最优解则剪枝.之后就是按题意常规dfs.#include <bits/stdc++.h>using nam...原创 2018-04-12 21:38:00 · 244 阅读 · 0 评论