- 博客(60)
- 资源 (1)
- 收藏
- 关注
原创 杭电 1595 find the longest of the shortest Dijstra
玛丽卡很生米尔科的气因为他找到了一个新的女朋友,她寻求报复。因为她不住在同一个城市,她开始准备长途旅行。我们知道每路多少分钟来从一个城市到另一个。米尔科无意中听到车里有一条路正在修理,它被堵住了,但不知道到底是哪条路。它可能来自马西娅的城市米尔科的无论哪一条路是封闭的。玛丽卡只会用非阻塞的道路旅行,她会以最短路径旅行。米尔科想知道要花多少时间她会在最坏的情况下,他的城市,所以他可以让他的女
2017-05-16 11:55:52
293
原创 杭电 1546 Idiomatic Phrases Game 最短路 Dijstra
题意:给定一个整数 和一串字符串,当字符串末端的四个字符与另一字符串的首端四个字符相同时,加上前面的字符串,然后找出连接状态的最小值,而且每一个符合条件的字符串的首尾四个字符必须相同,才能相加#include#include#includeusing namespace std;char a[1005][1005];int w[1005][1005];int vis[1005];
2017-05-16 11:18:05
255
原创 杭电 2544 最短路 Dijstra
最短路Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 34170 Accepted Submission(s): 14833Problem Description在每年的校赛里,所有进入决赛的同学都会获
2017-05-16 10:38:51
289
原创 杭电 2066 一个人的旅行 最短路 Dijstra
一个人的旅行Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20267 Accepted Submission(s): 7081Problem Description虽然草儿是个路痴(就是在杭电待了一年
2017-05-16 09:39:54
383
原创 杭电 1232 并查集水题 畅通工程
题意:N个城市,判断需要多少条道路连通 例:8个城市都不连通的话最多需要7条道路#include #include using namespace std;int arr[100001];int p, q;int cnt;void init() { for (int i=0; i<100001; i++) { arr[i] = i; }}
2017-05-14 21:51:28
232
原创 POJ 1856 More is better
一个并查集 计算每个集合的元素 找出元素最多的那个集合,输出元素的个数输入n=0时也应该输出1,难点就在于,怎么计算集合的元素个数,其实只要在初始的时候每个元素都初始为1,然后合并集合的时候把两个集合元素加一起#include #include #include const int MAX = 10000005;int pre[MAX],rank[MAX],maxx;v
2017-05-14 17:19:27
419
原创 杭电 Is It A Tree? 并查集 有向图是否为树
注意 这和上面的题有点不一样 是一个有向图所以要判断入度否则会出现判断成树的情况#include#include#define max 1000+10int set[max],in[max];//set记录父节点,in记录入度 int find(int p){ int child=p; int t;
2017-05-14 17:09:26
512
原创 杭电 1272 小希的迷宫 并查集 无向图是否为树
一棵树必须具备如下特性:(1)是一个全连通图(所有节点相通)(2)无回路其中(2)等价于:(3)图的边数=节点数-1因此我们可以利用特性(1)(2)或者(1)(3)来判断。#include #include #include #include #include #include #include #include
2017-05-14 16:49:14
222
原创 杭电 2120 并查集 判断环的个数
题意:富裕的女王 要给ACMER分地,女王的土地中有很多瞭望塔,女王命令下人在瞭望塔(watchtower) 与瞭望塔之间建立笔直的围墙,被围墙圈起来的土地可以用来奖励ACMER,但是女王智商捉急,不知道最多能奖励多少ACMER,请你来帮忙。通过并查集的Union操作就可以实现瞭望塔之间的联通,如果两个瞭望塔所在根节点相同,说明有环。思路:手动画图发现如果1 2 3的根节点都为0
2017-05-14 13:25:56
498
原创 杭电1829 A Bug's Life 并查集
假设有1,22,3即1--2--3, 明显相邻的两个不能是同性别的,如果相邻两个是同性的,那么说明就可能是有同性恋存在。上面假设1是男性,用false来代替,那么按顺序分别是false, true, false假设 再加个关系3, 1那么由于1和3已经都有值了,都是false,说明可能有同性恋。种类并查集的关键在于与结点与根结点的距离, 如果距离是奇数那么性别就和跟结
2017-05-14 12:14:32
249
原创 POJ 2524 宗教问题 并查集
题意:给出一些在一个集合的元素信息,求一共有多少个无交集的集合题解:并查集,初始集合个数为人数,在合并集合的过程中,每次在一个集合里合并了一个人,集合个数就减一#include #include using namespace std; const int maxn =50000+5; int fa[maxn]; int Find(int x) {
2017-05-14 09:48:06
244
原创 POJ 1603 Risk 最短路 Floyd Dijstra
POJ 1603每组数据先输入19组边信息,依次代表从第几个顶点出发有哪些边与之直接相连。要注意的是图是无向图,所以在更改邻接矩阵时根据无向图的对称性来处理数据就是求两点中间的最少的城市个数public class Main{ static int[][] w=new int[21][21]; static final int n=20; public static voi
2017-05-14 09:22:52
285
原创 POJ 1847 Tram Floyd或者spfa 最短路
题意:火车行驶过程有n条岔路(每次只能走一条),默认是第一条路..如果需要改路的话需要操作一次,问从a到b最少需要操作多少次....n个点 a,b是起点和终点,然后n行,第i行有k个点,代表第i个点可以走到这k个点,初始默认方向是第一个点的方向...其他的改道一次需要操作一次...按照操作次数当做边权求最短路即可..输入:3 2 1 //有3个开关点,计算从第二个到第一个最少需要旋转几次
2017-05-14 08:53:01
198
原创 POJ 2139 Six Degrees of Cowvin Bacon 最短路
题目大意:有n头牛,如果两头牛同拍一部电影,这他们之间的距离为一,如果两头牛都和第三头牛拍过同一部电影,那么它们之间的距离经第三头牛传递就为2,,,求那一头牛与其它牛距离的平均值最小,把他乘一百输出。(求的时候,先扩大一百倍再求平均值)#include #include #include #include using namespace std; const int
2017-05-13 23:59:04
218
原创 POJ 2240 Arbitrage 最短路 Floyd
题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率。如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 BritishPound。问在这N种货币中是否有货币可以经过若干次兑换后,兑换成原来的货币可以使货币量增加。 本题其实是FLOYD的变形。将变换率作为构成图的路径的权重。这儿构成的图是一个有向图。最后将松弛操作变换为:if(dis[i][
2017-05-13 23:35:50
211
原创 POJ 1502 MPI Maelstrom 最短路
题意:给你一个不完全的矩阵,数字表示权值,x表示两点间不可达由于自身到自身花费的时间为0,所以没有给出,由于i到j和j到i距离相同,互达时间相同所以只给出了一半的临界矩阵。根据给你的这个临界矩阵,让你来求从点1到其他点所花费最短时间集里面的的最大值。其实这是一个很直接的最短路package 最短路;import java.util.Scanner;p
2017-05-13 21:59:14
198
原创 POJ 3268 Silver Cow Party 最短路
题意:有编号为1-N的牛,它们之间存在一些单向的路径。给定一头牛的编号,其他牛要去拜访它并且拜访完之后要返回自己原来的位置,求这些牛中所花的最长的来回时间是多少。每头牛返回的最短时间很简单就可以算出来,这相当于从目标牛为起点求单源最短路径。但每头牛出发到目标牛的最短时间无法直接算出来,稍微转换一下,发现这个最短时间其实可以通过把所有的边取反向,然后再从目标牛求一次单源最短路径得到。得到这两个最短路
2017-05-13 19:20:34
230
原创 POJ 1797 Heavy Transportation
题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量解题思路:其实这个求最大边可以近似于求最短路,只要修改下找最短路更新的条件就可以了#include using namespace std; #define MAXV 1010 #define min(a,b) (a<b?a:b)
2017-05-13 17:53:58
215
原创 POJ 2253 Frogger 最短路
题目大意:有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃,而从A到B有若干通路,问从A到B的所有通路上的最大边 石头的距离没有直接给出需用距离公式计算解题思路:一个简单的最短路径变形,只要将d[i]的意义变为从1到i的最大边即可,然后修改下更新条件就可以了packag
2017-05-13 17:35:16
404
原创 POJ 2387 Til the Cows Come Home 最短路 Dijstra
题意:给出两个整数T,N,然后输入一些点直接的距离,求N和1之间的最短距离。。思路:dijkstra求单源最短路,但是要注意判重。import java.util.*; public class Main{ public static void main(String args[]){ Scanner in=new Scanner(System.i
2017-05-13 17:13:25
229
原创 POJ 1178 Camelot 最短路 Floyd +枚举
题目大意:在一个8*8的棋盘里有一个国王和一些骑士,我们须要把他们送到同一顶点上去,骑士和国王的行动方式如图所看到的。国王能够选择一名骑士作为坐骑。上马后相当和该骑士 一起行动(相当于一个骑士),同一位置能够同一时候有多个骑士和国王。问最少走的步数解题思路:把8*8棋盘变成0~63的数,Floyd求出随意两点之间的最短路径。8*8枚举就可以。枚举终点,骑士上马点,国王上哪个骑
2017-05-13 15:00:12
267
原创 POJ 1125 Stockbroker Grapevine 最短路
题意:首先,题目可能有多组测试数据,每个测试数据的第一行为经纪人数量N(当N=0时,输入数据结束),然后接下来N行描述第i(1<=i<=N)个经纪人与其他经纪人的关系(教你如何画图)。每行开头数字M为该行对应的经纪人有多少个经纪人朋友(该节点的出度,可以为0),然后紧接着M对整数,每对整数表示成a,b,则表明该经纪人向第a个经纪人传递信息需要b单位时间(即第i号结点到第a号结点的孤长为b)
2017-05-13 13:24:19
213
原创 第八届蓝桥杯JAVAB组第9题 分巧克力 二分搜索
比赛时想复杂了,形状不规则,以为要动态规划或者DFS,后来发现只要求切出来的是正方形...标题: 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状
2017-05-11 18:33:12
318
原创 POJ 1270 Following Orders DFS 搜索
题意: 输入数据有两行,第一行给你由26个单个小写字母表示的变量,第二行给出成对的变量如(x,y),表示x要在y前面.然后要你输出所有可能的变量序列且满足第二行的顺序约束.如果存在多解,按字典序从小到大输出所有结果.#include #include using namespace std; const int maxn=30; const int m
2017-05-11 17:31:20
210
原创 POJ 1950 Dessert DFS 搜索
题意:输入n(1 1011)#includeusing namespace std;const int Max = 16;int n,num; // num记录可能得情况数。char symbol[Max]; void print(){ int i; for(i = 1; i < n; i ++) printf("%d %c ", i, symb
2017-05-11 16:59:59
182
原创 POJ3256 Cow Picnic DFS搜索
题意:给你N块地,然后给出M头牛,在给出这N块地的相连情况。现在这M头牛要聚会,问可以有多少块地可以被选作聚会地点#include #include using namespace std;const int MAXN=1005;bool mp[MAXN][MAXN];int mark[MAXN];int unite[MAXN];int k,n,m;int vis[
2017-05-11 15:45:53
235
原创 POJ 1129 Channel Allocation 涂色问题 DFS 回溯 搜索
题意:构图,如果两点互相影响,则连接一条边。剩下的就是图着色问题,相连的点不能用同一种颜色,问最少需要多少颜色。写法一:0ms#include using namespace std; bool map[26][26]; int n,ans; int color[26]; bool check(int position,int color_index)
2017-05-10 23:40:53
655
原创 杭电 1312 Red and Black BFS 搜索
题意:从‘@’出发,只能站在‘.’上,不能站在‘#’上,求能踩到的.的个数(包括起始点@)#include #include #include #include using namespace std; int map[22][22]; char a[22][22]; int n,m,fx,fy,kind; queue q; void Init() {
2017-05-10 21:43:30
190
原创 杭电1195 Open the Lock
题目大意:有一个紧急开启密码锁的任务。密码由四位数字组成;每个数字从1到9;每次,可以对每一个数字进行加1或者减1;当从1加到9时,由9再加1会变为1;当从9减到1时,由1再减1会变为9;也可以交换两个相邻的数字,每次操作作为一个step。你的任务就是用最少的步骤解锁!#include #include #include #include using namespace
2017-05-10 21:30:54
310
原创 杭电1258 Sum it Up DFS 搜索
题目描述:给你一个数t作为最后等式的和,并给你一组数a[i](i例:t=4. a[]={4,3,2,2,1,1}输出 4,3+1,2+2,2+1+1解题思路:题目要求输出从大到小输出,所以可以先给所有的数进行降序排序。数据的规模很小,所以可以用暴力搜索。搜索过程中,为了避免重复输出,需要记录前一层搜索的起点,下一层递归搜索的起点不能与前一层记录的点一样#include #incl
2017-05-10 18:12:11
254
原创 杭电 3368 Recersi DFS 搜索
题意:题意:给出了一个棋盘的状态,现在放一颗黑棋,问最多能把多少颗白旗翻转了,翻转的规则是:这颗黑棋和另一颗黑棋连线之间都是白旗,则这些白旗都能被翻转.思路: 找到空位,沿着一个方向开始一直搜素#include #include int d[8][2]={-1,0, -1,1, 0,1, 1,1, 1,0, 1,-1, 0,-1, -1,-1
2017-05-10 17:14:00
291
原创 杭电2209 翻纸牌游戏 DFS BFS 搜索
翻纸牌游戏Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3617 Accepted Submission(s): 1356Problem Description有一种纸牌游戏,很有意思,给你N张纸牌,一字排开
2017-05-10 14:17:59
278
原创 杭电2612 Find a way BFS 搜索
题意:很多家肯德基店,求两个人去同一家的总的最短时间#include #include #include #include using namespace std; #define min(a,b) (a)>(b)?(b):(a) #define INF 1<<29 #define N 205 int dir[4][2]={{-1,0}, {1,0}, {0,-1}
2017-05-10 13:42:44
203
原创 杭电 1181 变形课 DFS
变形课Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 18640 Accepted Submission(s): 6720Problem Description呃......变
2017-05-09 20:54:53
242
原创 杭电1495 非常可乐 BFS
题意:输入a,b,c三个数,分别代表可乐,和两个杯子,三个容器可以互相倒,问能不能把a平分,能的话输出最小步数,不能就输出NO。思路:分别对6种倒法进行BFS#include #include #include #include using namespace std; struct node {
2017-05-09 20:33:27
351
原创 杭电 1026 Ignatius and the Princess I BFS 搜索 JAVA
题意:n*m迷宫,求从(0,0)到(n-1,m-1)的最少时间。'X'是墙,'.'是空地,'1'-'9'表示有怪物,消灭之需要数字对应的时间。package DFS;import java.util.PriorityQueue;import java.util.Scanner;import java.util.Stack;public class HD1026 { int n,
2017-05-09 19:26:14
253
原创 杭电1501 Zipper DFS
题意::给三个字符串,保证第三个串长度是前两个串长度之和,确定前两个串保持原有的字母顺序能不能拼成第三个串#include #include #include using namespace std; int flag; int len1,len2,len,vis[300][600]; char str1[300],str2[300],str[600]; void
2017-05-09 18:29:42
195
原创 杭电1016Prime Ring Problem DFS 搜索
Prime Ring ProblemTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25200 Accepted Submission(s): 11252Problem DescriptionA rin
2017-05-09 08:41:17
194
原创 杭电4499 Cannon DFS 搜索
题意:就是给你一个n*m的棋盘,然后上面已经有了 棋子,并给出这些棋子的坐标,但是这些棋子是死的就是不能动,然后让你在棋盘上面摆炮,但是炮之间不能互相吃,吃的规则我们斗懂得 炮隔山打嘛,问你最多能放几个炮#include #include #define max(a,b) a>b?a:b; int mp[10][10],n,m,q,ans; int cal(int x,
2017-05-08 23:43:29
246
原创 杭电1556 Color the ball
Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19723 Accepted Submission(s): 9816Problem DescriptionN个气球排成一排,从左到右依
2017-05-08 21:34:40
255
最小生成树课程设计
2017-12-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人