搜索
exmy
Less is more, and more is less.
展开
-
poj--1100 Dreisam Equations(dfs)
Problem Link题解在等式中重新放置 + - * 以便构造一个有效的等式。对于每个可以放置运算符的位置,都有三种选择,因此解空间是一棵完全三叉树,回溯搜索O(n3)O(n^3)。需要注意存在冗余括号的情况。#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cctype原创 2016-11-08 21:19:35 · 1047 阅读 · 0 评论 -
nyoj--19 擅长排列的小明(dfs)
nyoj 19题解简单DFS.#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n, m, t;int p[10], vis[10];void dfs(int pos){ if(pos == m) { for(i原创 2016-03-13 00:34:25 · 372 阅读 · 0 评论 -
nyoj--20 吝啬的国度(dfs)
nyoj 20题意求一棵树每个结点的父节点,根节点为-1.题解就是一个无向图,dfs一下。#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 100000 + 10;int p[ma原创 2016-03-09 23:12:55 · 420 阅读 · 0 评论 -
PAT--1085 Perfect Sequence(二分查找)
题意给一个正整数序列和正整数p,定义完美序列为 M<=m∗pM <= m *p,其中,M是序列中最大的数,m是序列中最小的数。 从给定的序列中找到这样一个完美序列,使其包含尽可能多的元素。输出其包含的个数。题解首先排序,对序列的每一个数aia_i,计算 ax=ai∗pax = a_i * p,在序列中找出axax应该所处的位置pospos,pos−i+1pos - i + 1就是一个“完美”子序列原创 2016-02-22 15:07:30 · 555 阅读 · 0 评论 -
UVa--140 BandWidth (DFS)
传送门题意:给出一个有n个顶点的图,结点编号 A ~ Z。给定顶点的一个排列,那么定义结点v的带宽B(v)为v和相邻结点在排列中的最远距离,而所有B(v)的最大值定义为图的带宽。本题所求为给定图G,求出让带宽最小的结点的排列。n 题解:考虑到n 此题建立图略微麻烦。#include #include #include #include #includ原创 2016-02-09 20:26:16 · 334 阅读 · 0 评论 -
UVa--129 Krypton Factor(DFS)
传送门题解:LRJ大法。如何避免相邻的重复子串?每增加一个字符,从长度j(1 # include # include # include using namespace std;int n, L;int S[100];int cnt;int dfs(int pos) //返回0表示已经得到解,无须继续搜索{ if(cnt++ ==原创 2016-02-09 13:56:55 · 792 阅读 · 0 评论 -
蓝桥杯--历届试题 剪格子(DFS)
历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB问题描述如下图所示,3 x 3 的格子中填写了一些整数。+--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。原创 2016-02-05 11:11:56 · 3639 阅读 · 4 评论 -
POJ--1064 Cable master(二分搜索)
传送门:1064 Cable master(挑战程序设计竞赛--练习)题意:有N条绳子,长度分别为 Li, 从它们中切割出K条长度相同的绳子,求这 K 条绳子每条最长能有多长?分析:设最长为x,则x满足条件:问题便转化为寻找到这样一个满足上述条件的x,这可以用二分搜索来寻找,搜索区间为 [0, max(Li) + c],c为任意常量,只要保证大于 max(Li)。每次迭代都会缩小解原创 2016-02-04 18:06:07 · 418 阅读 · 0 评论 -
蓝桥杯--算法提高 最大乘积(DFS)
Problem 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?Solution 数据规模不大,直接DFS穷举每一种组合,计算最大乘积。原创 2016-01-21 19:36:39 · 733 阅读 · 0 评论 -
PAT--1091. Acute Stroke (30)(三维bfs)
DescriptionOne important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the results of image analysis in which the core regions are identified in each MRI slice, your j原创 2016-12-10 00:13:21 · 387 阅读 · 0 评论 -
nyoj--92 图像有用区域(bfs)
nyoj 92题解此题实际上是要遍历”0”圈以外的数,把它们置为0。 BFS遍历是一层一层的,对于每个当前正遍历的结点,如果它的邻接点(邻近的元素)为0,那就不作为扩展结点放入队列中,否则将其置为0并作为扩展节点放入队列。 这种方法需要把整个图像(矩阵)套在”1”圈里,像装裱一副字画?#include <iostream>#include <cstdio>#include <queue>#原创 2016-03-15 10:44:37 · 351 阅读 · 0 评论 -
nyoj--58 最少步数
题解BFS或者DFS最短路。#include <iostream>#include <cstdio>#include <queue>#include <cstring>#include <algorithm>using namespace std;typedef pair<int, int> pii;const int inf = 1 << 30;int maze[9][9] = {原创 2016-03-19 10:21:14 · 620 阅读 · 0 评论 -
nyoj--284 坦克大战(bfs+优先队列)
nyoj 284题解与一般的迷宫问题不同,这里的每一点如果可扩展,可能要走1步或者2步,如果用普通的队列,无法保证到达终点时步数最少。 因此使用优先队列,每一次走都选择步数最少的进行扩展。#include <iostream>#include <queue>#include <cstring>#include <string>#include <cstdio>#include <algo原创 2016-03-19 12:36:48 · 434 阅读 · 0 评论 -
hdoj--1175 连连看(dfs)
link to problem题解判断两点是否连通,多了一个转向次数不超过两次的条件。 嗯,,还可以继续优化。。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int maxn = 1000 + 4;c原创 2016-10-29 14:37:11 · 408 阅读 · 0 评论 -
poj--2676 Sudoku(dfs)
Sudoku题解从左上角到右下角一行一行填数。递归需要返回状态,即填数是否成功,如果成功就无需回溯,否则需要回溯。#include <iostream>#include <cstdio>#include <string>#include <algorithm>#include <cstring>using namespace std;#define MEM(a, v) memset(原创 2016-10-23 08:44:21 · 448 阅读 · 0 评论 -
poj--2449 Remmarguts' Date(k短路)
Remmarguts’ Date题解求s到t的第k短路的长度。 SPFA + A*算法。A*算法通过一个估价函数f(h)来估计图中的当前点p到终点的距离,并由此决定它的搜索方向,当这条路径失败时,它会尝试其他路径。估价函数 = 当前值+当前位置到终点的距离,即f(p)=g(p)+d(p)f(p) = g(p)+d(p) 其中,g(p)g(p)为当前从s到p所走的路径长度,d(p)d(p)为从原创 2016-09-16 20:32:56 · 396 阅读 · 0 评论 -
poj--3258 River Hopscotch(最大化最小值)
River Hopscotch题意题目抽象一下,就是N个整数的数组,去除其中的M个,使得具有最小间距的相邻两个数间距最大,即这个最小间距有个上界,不会有比其更大的最小值。题解确定上下界,二分搜索。#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int maxn = 50000 +原创 2016-09-13 20:24:30 · 336 阅读 · 0 评论 -
poj--3273 Monthly Expense(最小化最大值)
Monthly Expense题意有N个整数构成的数组,将其分成连续的m段区间,使得每段区间之和的最大值最小,求这个最小值。题解最小化最大值的问题,即最大值有个下界,不会有比其更小的最大值。 这类问题常使用二分搜索解决。#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int m原创 2016-09-13 17:22:12 · 392 阅读 · 0 评论 -
CCF-201409-4 最优配餐(BFS)
问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务。随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。 方格图中的线表示可以行走的道路,相邻两个格点的距离为1。栋栋要送餐必须走可以行走的道路,原创 2016-09-09 10:36:21 · 584 阅读 · 0 评论 -
CCF-201604-4 游戏(三维BFS)
问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行第一列,目标是前往第n行第m列。 方格图上有一些方格是始终安全的,有一些在一段时间是危险的,如果小明控制的角色到达一个方格的时候方格是危险的,则小明输掉了游戏,如果小明的角色到达了第n行第m列,则小明过关。第一行第一列和第n行第m列永远都是安全的。 每个单位时间,小明的角色必须向上下左右四原创 2016-09-02 11:46:32 · 519 阅读 · 0 评论 -
PAT--1021. Deepest Root(DFS+并查集)
pat 1021题解判断图是否连通;找到深度最大的结点,按递增的顺序输出。#include <iostream>#include <cstdio>#include <vector>#include <queue>#include <cstring>#include <algorithm>using namespace std;const int maxn = 10000 + 10原创 2016-07-18 11:23:54 · 327 阅读 · 0 评论 -
nyoj--1058 部分和问题(dfs)
nyoj 1058题解dfs搜索。 注意剪枝。#include <iostream>#include <vector>#include <cstring>#include <algorithm>using namespace std;const int maxn = 25;int a[maxn], vis[maxn];int n, k, flag;void dfs(int po原创 2016-03-19 16:42:40 · 924 阅读 · 0 评论 -
hihoCoder--1041 国庆出游(dfs + bitset)
描述 小Hi和小Ho准备国庆期间去A国旅游。A国的城际交通比较有特色:它共有n座城市(编号1-n);城市之间恰好有n-1条公路相连,形成一个树形公路网。小Hi计划从A国首都(1号城市)出发,自驾遍历所有城市,并且经过每一条公路恰好两次——来回各一次——这样公路两旁的景色都不会错过。令小Hi苦恼的是他的小伙伴小Ho希望能以某种特定的顺序游历其中m个城市。例如按3-2-5的顺序游历这3座城市。(具体来原创 2017-01-15 22:03:57 · 1183 阅读 · 0 评论