<题目链接> 题目大意: 每个玩家控制一个颜色去扩张,每个颜色的扩张有自己的速度,一个颜色跑完再跑下一种颜色.在所有颜色不能在继续扩张的时候停止游戏.询问此时各种颜色的数量. 解题分析: 就是用BFS去模拟颜色的扩张,但是需要注意的是,本题需要加一些小的优化,比如,每次只用扩张上一轮BFS新更新的点就行. #include <bits/stdc++.h> using namespace std; #define N int(1e3+7) #define rep(i,s,t) for…
[题目] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次移动花费一分钟 2.从X移动到2*X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动.农夫最少要花多少时间才能抓住牛? [输入] 两个整数,N和K. [输出] 一个整数,农夫抓到牛所要花费的最小分钟数. [输入样例] 5 17 [输出样例] 4 [思路]就是简单的bfs,但是我忘记了上…
Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度.请你设计一个程序,帮助乔治计算木棒的可能最小长度.每一节木棍的长度都用大于零的整数表示. Input 输入包含多组数据,每组数据包括两行.第一行是一个不超过64的整数,表示砍断之后共有多少节木棍.第二行是截断以后,所得到的各节木棍的长度.在最后一组数据之后,是一个零. Output 为每组数据,分别输出…
[题目描述] 输入nn代表有个n×nn×n的棋盘,输入开始位置的坐标和结束位置的坐标,问一个骑士朝棋盘的八个方向走马字步,从开始坐标到结束坐标可以经过多少步. [输入] 首先输入一个nn,表示测试样例的个数. 每个测试样例有三行. 第一行是棋盘的大小L(4≤L≤300)L(4≤L≤300): 第二行和第三行分别表示马的起始位置和目标位置(0..L−1)(0..L−1). [输出] 马移动的最小步数,起始位置和目标位置相同时输出00. [输入样例] 3 8 0 0 7 0 100 0 0 30 5…
[题目描述] 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走. 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到).只能在水平方向或垂直方向走,不能斜着走. [输入] 第一行是两个整数,R和C,代表迷宫的长和宽.( 1≤ R,C ≤ 40) 接下来是R行,每行C个字符,代表整个迷宫. 空地格子用‘.’表示,有障碍物的格子用‘#’表示. 迷宫左上角和右下角都是‘.’. [输出] 输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子…
[题目描述] 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫.今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪.现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪. 迷宫用一个R×C的字符矩阵来表示.字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行.阿尔吉侬在1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界. [输入]…
[题目描述] 定义一个二维数组: int maze[5][5] = { 0,1,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,1,0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线. [输入] 一个5 × 5的二维数组,表示一个迷宫.数据保证有唯一解. [输出] 左上角到右下角的最短路径,格式如样例所示. [输入样例] 0 1 0 0 00 1 0 1 00 0 0…
[题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全.现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他.现在要求你来帮助他实现这个目标. 下图 显示了一个迷阵的样例及李逍遥找到仙药的路线. [输入] 输入有多组测试数据. 每组测试数据以两个非零整数 M…
最后刷个水,睡觉去.Bless All! [题目大意] 给定一个地图,为FGD想要旅行的区域,地图被分为n*n的网格,每个格子(i,j) 的高度w(i,j)是给定的.若两个格子有公共顶点,那么他们就是相邻的格子.(所以与(i,j)相邻的格子有(i−1, j−1),(i−1,j),(i−1,j+1),(i,j−1),(i,j+1),(i+1,j−1),(i+1,j),(i+1,j+1)).我们定义一个格子的集合S为山峰(山谷)当且仅当:1.S的所有格子都有相同的高度.2.S的所有格子都联通3.对于…
http://poj.org/problem?id=3278 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 52463   Accepted: 16451 Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He star…
[思路] 预处理时先将陨石落到各点的最短时间纪录到数组中,然后在时间允许的范围内进行广搜.一旦到某点永远不会砸到,退出广搜. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<queue> using namespace std; +; const int INF=0x7f7f7f7f; struct Rec { int x,y,t;…
[法一]枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意dis的初值0x7f)<=Time ? 1 : 0); 判断是否满流; #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; #d…
[题目链接]: Educational Codeforces Round 35 (Rated for Div. 2) A. Nearest Minimums time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an array of n integer numbers a0, a1, ..., an -…
 Problem 2124 吃豆人 Accept: 134    Submit: 575 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 吃豆人是一款很经典的游戏,游戏中玩家控制吃豆人在地图上吃光全部豆子,而且避免被怪物抓住. 这道题没有怪物,将游戏的画面分成n*m的格子,每格地形可能为空地或者障碍物.吃豆人能够在空地上移动,吃豆人每移动一格须要1s时间,而且仅仅能朝上下左右四个方向移动,特别的是吃豆人还…
斗地主 题目描述 众所周知,小 X 是一个身材极好.英俊潇洒.十分贪玩成绩却依然很好的奆老.这不,他又找了他的几个好基友去他家里玩斗地主了……身为奆老的小 X 一向认为身边人和自己一样的厉害,他坚信你和他一样有未卜先知的能力,他在他们玩完斗地主后,告诉了你他们的最终得分,希望你猜出他们最少玩了几局牌?注意:小 X 他们至少玩了 1 局斗地主.以下是斗地主的规则:发完牌后三人依次叫牌,可叫 1 分.2 分.3 分或不叫,所叫的分数称为底分,分数叫的高赢的多,输的也多.叫完后叫分最高者为地主,然后开…
题目描述 The people of a certain kingdom make a revolution against the bad government of the princess. The revolutionary army invaded the royal palace in which the princess lives. The soldiers of the army are exploring the palace to catch the princess. Y…
ZeptoLab Code Rush 2015 D. Om Nom and Necklace [题意] 给出一个字符串s,判断其各个前缀是否是 ABABA…ABA的形式(A和B都可以为空,且A有Q+1个,B有Q个,Q给定). [官方题解] 对于前缀P,我们可以把它拆成P=SSSS…SSSST,其中T是S的前缀.显然可以用KMP算法,时间复杂度是O(n). 当T=S:P=SSS…S.假设S出现了R次.如果转换为ABABAB…ABABA的形式,A和B是由几个S组成,而且最后的A一定是P的一个后缀.由…
A. Book Reading time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Recently Luba bought a very interesting book. She knows that it will take t seconds to read the book. Luba wants to finish r…
A. ACM ICPC time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output In a small but very proud high school it was decided to win ACM ICPC. This goal requires to compose as many teams of three as po…
AC代码: #include<bits/stdc++.h> #define ll long long #define endl '\n' #define mem(a,b) memset(a,b,sizeof(a)) #define IO ios::sync_with_stdio(false);cin.tie(0); using namespace std; const int INF=0x3f3f3f3f; const ll inf=0x3f3f3f3f3f3f3f3f; ; ; struct…
题目: 给出一张游戏地图和每个玩家的位置,每次能移动的步数.p个玩家轮流移动占领地图中的格子(当格子已经被占领时就不能在占领了)在每个玩家都不能移动时游戏结束. 问在游戏结束后,每个玩家占领的格子的数目. 思路: 当时做的时候,并没有思路,借鉴了大佬的……Orz 对每一个玩家分配一个队列,这个队列中只保存移动时最后一步的位置.如果在一个循环中p个玩家都没有能够成功移动的,就说明游戏结束了. 然后遍历一下地图,统计一下每个玩家占领的格子就ok了. 代码: #include <bits/stdc++…
题目链接 http://codeforces.com/problemset/problem/580/C 题意 根节点是 1 然后所有的叶子结点都是饭店 从根节点到叶子结点的路径上 如果存在 大于m 个 连续的结点都有猫 那么这条路径就是不可行的 求 最后能到达几个饭店 思路 BFS 就可以了 一层一层往下搜 但是要注意 这个输入的时候 xi yi 没有说 那个是父节点 哪个是儿子结点 那就都给它进去 也就是说 每个结点存的结点里面 有一个结点是自己的父亲结点 用visit[] 访问标记一下就可以…
有毒,自从上次选拔赛(哭哭)一个垃圾bfs写错之后,每次写bfs都要WA几发...好吧,其实也就这一次... 小白说的对,还是代码能力不足... 非常不足... 题目链接: http://codeforces.com/contest/659/problem/F 题意: n*m的格子,每个格子一个数,必须从格子中减去任意一个小于等于这个数的数. 给定数字k,要求: 剩下的格子数字和为k. 所有非零的格子的数字应该相同. 至少一个格子的数字没有改变. 含有非零数字的格子应该连通. 分析: 枚举每个能…
<题目链接> 题目大意: 给你一颗树的所有边,这些边是无向的,然后给你一段BFS序列,BFS都以1为根节点,判断这段BFS序列是否合法. 解题分析: 就是模拟BFS,某个父亲节点的所有子节点必然是连续一段出现的(如果该BFS序合法的话),所以每次从队列中弹出节点的时候,就将对应位置连续的所有儿子全部标记,如果有儿子不是连续的出现在对应位置,则之后永远不会被标记到. #include <bits/stdc++.h> using namespace std; ; int n,vis[N…
那个人第一步肯定要么能向下走,要么能向右走.于是一定可以判断出上下是否对调,或者左右是否对调. 然后他往这个方向再走一走就能发现一定可以再往旁边走,此时就可以判断出另一个方向是否对调. 都判断出来以后,跑个spfa或者bfs就行了. 细节较多……有一些边界情况需要处理.比如终点在第一行或者第一列的情况. #include<cstdio> #include<queue> #include<cstring> #include<algorithm> using n…
思路: 求所有树的最大高度? 注意:所有树从树根开始? #include <bits/stdc++.h> using namespace std; typedef long long LL; struct asd{ int to; int next; }e[2500]; int head[2500],tol; int pre[2500]; int n; void add(int u,int v) { e[tol].to=v; e[tol].next=head[u]; head[u]=tol++…
题意: s是这个人开始位置:连续相同大写字母是 Each of the k trains,相应的火车具有相应的字母: '.' 代表空: 有个人在最左列,上面有连续字母代表的火车,火车从左边出去的话,会从右边继续进来, 一开始是人先往右走一步,然后上下或者一步,然后火车往左移两步. n有100,代表长度,k代表火车的数量: 思路: BFS; 走完还要再走两个= =.妈个鸡啊. 一开始一直踏马地觉得没必要BFS,没必要BFS...后面搞懂了之前比赛中的思路是递推,也就是DP,但是踏马的DP递推真的写…
题意:给出一个n*m的矩阵,“.”代表完整的冰,“X”代表破碎的冰,现在为了前进,需要掉下去一层,唯一的方法就是从破碎的冰上面掉下去 然后给出起点还有终点,问能否可达 即为到达终点的时候,终点必须是破碎的冰,这样才能够保证只掉了一层 然后这个也说明了节点该怎么扩展,如果当前跳到的点是"X"(破碎的冰),且当前点不是终点,那么这个点就不用加入队列了(因为它还没有到达终点就落下去了) 如果当前点是“.”完整的冰,那么跳上去之后,这一点变成破碎的冰"X",再把这一点加入队…
第一题: tractor 题目描述 农场上有N(1 <= N <= 50,000)堆草,放在不同的地点上.FJ有一辆拖拉机,也在农场上.拖拉机和草堆都表示为二维平面上的整数坐标,坐标值在1..1000的范围内.拖拉机的初始位置与所有草堆不同. FJ开拖拉机时,只能平行于坐标轴(即东.南.西.北四个方向),而且每次开动的一段必须是整数长度. 例如,他可以向北开2个单位长度,然后向东开3个单位长度.拖拉机不能开到草堆的位置. 请帮助FJ计算出最少要移动多少个草堆,他才能将拖拉机开回坐标原点. 拖拉…
题目链接:https://www.luogu.org/problemnew/show/P1032 题意: 给定一个原字符串和目标字符串,以及几个字符串变换的规则. 问能否根据这几个规则在十步之内把原字符串变为目标字符串. 思路: bfs,队列维护字符串和所经过的步骤这样一个二元组而不是简单的字符串. 每一次取出一个字符串,用所给的规则进行变换得到新的字符串. 由于字符串中可能有多次匹配,所以用vector存每一次匹配的开始位置,这些都是独立的一次变换都要单独存入vector中.[这一点最开始没有…