自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 POJ ~ 1062 ~ 昂贵的聘礼 (加限制Dijkstra + 建图)

思路: 物品看做点,优惠关系看做边。以0当做起点,1作为终点,跑N遍dijstra,每次,控制一个等级区间。不要忘了建一条0~各个物品的边,权值为物品原价格,表示直接买。AC代码1:多加个等级条件即可,然后枚举最低等级,在等级符合要求的区间内求0~1的最短路。求一个最小值就是答案。套的模板,不过忘了调用init,两个小时没整过样例,搞得怀疑人生。程序不允许半点马虎啊,唉。

2018-01-31 22:40:11 282

原创 HDU ~ 3592 ~ World Exhibition (SPFA + 差分约束)

和上一道题一样:Layout只不过是T组输入输出,样例变了一下。//#include#include#include#include#includeusing namespace std;const int MAXN = 1e6 + 5;const int INF = 0x3f3f3f3f;struct Edge{ int from, to, dist;

2018-01-31 12:52:19 305

原创 POJ ~ 3169 ~ Layout (SPFA + 差分约束)

题意:输入N,ML,MD表示N个人编号为1-N,有ML+MD行,每行三个数字A,b,C。前ML行表示,A和B的距离不能大于C,接下来MD行表示,A和B的距离不能小于C。这些人必须都在一条线上,且两个人位置不能重合。如果这样的排列存在,输出1-N这两个人的最长可能距离,如果不存在,输出-1,如果无限长输出-2。思路:差分约束。三个式子:,求1-N的最长可能距离(即最大值),即最短路,所以把三个式

2018-01-31 12:49:33 308

原创 POJ ~ 3159 ~ Candies (Dijkstra + 优先队列 + 链式前向星 or 栈式SPFA)(差分约束)

推荐一片入门博客:夜深人静写算法(四) - 差分约束个人感觉很有用的地方,暂存一下,备查:  4、最大值 => 最小值      然后,我们将问题进行一个简单的转化,将原先的"<="变成">=",转化后的不等式如下:B - A >= c      (1)C - B >= a      (2)C - A >= b      (3)      然后求C - A的最小...

2018-01-31 10:17:05 341

原创 POJ ~ 2502 ~ Subway (Dijkstra + 建图)

题意:你要从家去学校,先输入你家和学校的坐标。有一些地铁站线,每一条线上有一些站点,每一条线以一对-1,-1结束,地铁站的输入以EOF结束。坐标单位为米,你行走速度为10km/h,地铁速度为40km/h,问你最快多少分钟可以到学校?地铁只能一站一站的走,方向随意,不能从1号站点跳到3号站点,也不能从第一条线上的站点到另一条线上的站点。思路:一看就是Dijkstra,主要是建图稍微比

2018-01-30 22:23:16 967 3

原创 POJ ~ 1511 ~ Invitation Cards (逆向建边 + (SPFA或(优先队列优化的Dijkstra)))

题意:N(1e6)个点,M条单向边(边权1e9),求1~所有点的最短路径之和,再加上所有点~1点的最短路径之和。思路:正向建边求一次1到所有点的最短距离,在反向建边求一次。加和就是答案。但是数据范围很大1e6,所以要用SPFA或优先队列优化的Dijkstra。还有就是路径之和会超int要开long long。优先队列优化Dijkstra://#include#include

2018-01-30 14:16:02 266

原创 POJ ~ 2240 ~ Arbitrage (Floyd或BellmanFord)

题意:你现在有N种类型的货币,这N种类型的货币之间有M种汇率关系,然后输入M组关系,A,rate,B,表示每单位A货币可以换rate的B货币。问你有没有方法使自己的钱增多?思路:判断是否正环。货币类型用MAP映射成数字,然后建图。把你有的货币都设置为1的本金。然后跑一边Floyd看有没有货币使得自己变多了。或者跑N遍BellmanFord看有没有哪  次出现了正环。松弛条件改为权值可以变大时,

2018-01-30 13:25:52 290

原创 POJ ~ 1502 ~ MPI Maelstrom (Dijkstra + 字符处理)

题意:N个点。下面N-1行,给出你一些无向边,‘x’表示不互通。问1点到哪个点的距离最远,输出距离?解释下样例,55030 5100 20 5010 x x 10有五个点1~5,1到1的距离为0,没有给出。第二行表示,2到1距离为50。第三行表示3到1距离为30,3到2距离为5。第四行表示4到1距离为100,4到2距离为20,4到3距离为50。第五行表示5到1距离为

2018-01-30 10:37:21 272

原创 POJ ~ 3660 ~ Cow Contest (Floyd + 闭包传递)

题意:有n(1保证输入信息不存在矛盾第一行n和m。以下m行 A B 表示A实力比B强。思路:Floyd闭包传递。//#include#include#includeusing namespace std;const int MAXN = 105;int n, m;bool d[MAXN][MAXN];void Floyd(){ for (int k =

2018-01-29 22:52:15 306

原创 POJ ~ 1860 ~ Currency Exchange (BellmanFord或SPFA)

题意:我们的城市有几个货币兑换点。让我们假设每一个点都只能兑换专门的两种货币。可以有几个点,专门从事相同货币兑换。每个点都有自己的汇率,外汇汇率的A到B是B的数量。同时各交换点有一些佣金,你要为你的交换操作的总和。在来源货币中总是收取佣金。 例如,如果你想换100美元到俄罗斯卢布兑换点,那里的汇率是29.75,而佣金是0.39,你会得到(100 - 0.39)×29.75=2963.3975卢布。

2018-01-29 22:18:17 389

原创 POJ ~ 3268 ~ Silver Cow Party (Dijkstra + 逆向建边)

题意:输入N,M,X。N表示有N头牛,牛1在1处,牛2在2处,依次编号为1~n,这些牛要在牛X聚会,有M条单向道路,聚完会他们需要回到各自原来的地方。问哪个牛走的路最远?输出这个牛走的距离?思路:先正向建边,跑一边Dijkstra的出来牛X到所有牛的距离(即回家的长度)记录下来,然后在反向建边,跑一边Dijkstra求出所有牛到牛X处需要走的距离。两个加起来就是每个牛走的路径长度,求一个最大值

2018-01-29 19:23:04 249

原创 POJ ~ 1797 ~ Heavy Transportation (Dijkstra+最小值最大化)

题意:有n个城市,m条道路,在每条路上有一个承载量,求从1到n城市最大承载量,找到一条路。思路:Dijkstra过程中,每次求最长的边(即承载量最大),以最长的边去松弛,松弛的时候取较小值(即承载量)与dis数组比较,取较大的。注意初始化条件,先把所有的承载量都初始化为极小值,源点承载量设置为极大值。懒得写,直接在我的模板上改的。//#include#include#inclu

2018-01-29 11:05:52 313

原创 POJ ~ 2253 ~ Frogger (Dijkstra或Floyd,最大值最小化)

题意:一个青蛙跳石头,现在有N块石头,编号为1~n,输入这N个点的坐标。他要从1号石头跳到2号石头,让你求一条路径,使得该路径在所有路径中为最长边最短的那条路径,问这个最短边?思路:最大值最小化问题。Floyd过程中不存储路径之和,存储路径中的最长边。Floyd://#include<bits/stdc++.h>#include<iostream>#include&lt...

2018-01-29 10:14:05 352

原创 POJ ~ 2387 ~ Til the Cows Come Home(Dijkstra)

题意:求无向图1~n的最短路。n个点m条边,然后m行,每行输入u~v的边权为w。思路:Dijkstra。注意有重边,M和N输入顺序是反着的,先输入边数M,在输入顶点数N。懒得写了,直接怼模板就过了。//#include#include#include#include#includeusing namespace std;const int MAXN = 1e5 + 6;con

2018-01-29 09:33:50 224

原创 POJ ~ 1125 ~ Stockbroker Grapevine (Floyd)

题意: 众所周知,证券经纪人对于市场传闻十分敏感。现在你被雇佣去开发一种在经纪人之间传播虚假信息的模式,使得你的雇主在市场中获得特殊的战略优势。为了获得最大的效果,你必须在尽可能快的时间内传播谣言。不幸的是,证券经纪人只信赖来自他们认为是“可靠来源”的消息。这意味着你必须在开始传播流言时考虑他们之间的关系。当流言开始传播时,某个经纪人需要一定的时间将其传递给他的所有同事。你的任务是编写一个

2018-01-29 09:27:03 330

原创 POJ ~ 3259 ~ Wormholes (BellmanFord和SPFA(BFS,DFS)模板)

题意:一个famer有一些农场,这些农场里面有一些田地,田地里面有一些虫洞,田地和田地之间有路双向路,虫洞有这样的性质: 时间倒流。问你这个农民能不能看到他自己,也就是说,有没有这样一条路径,能利用虫洞的时间倒流的性质,让这个人能在这个点出发前回去,这样他就是能看到他自己。输入n个点m条田地之间的路,w个虫洞。思路:有负环输出YES,没负环输出NO。交POJ会CE,换一下万能头就好了。...

2018-01-28 23:57:56 389

原创 2018年全国多校算法寒假训练营练习比赛(第二场)题解

A:栈模拟or字符串处理 题目链接:吐泡泡 思路:栈模拟,或者用string自带的函数进行处理,用string处理的时候要注意顺序从左到右!!!字符串处理: #include<bits/stdc++.h>using namespace std;int main(){ string str; while (cin >> st...

2018-01-28 22:31:39 637 1

原创 (Floyd模板,最短路+传递闭包)

Floyd:复杂度:优点:可以处理负权,可以传递闭包缺点:复杂度太高。void Floyd(int n){ for (int k = 0; k < n; k++) { for (int k = 0; k < n; k++) { for (int k = 0; k < n; k++) { d[i][j] = min(d[i][j], d[i][k]

2018-01-28 13:29:20 487

原创 HDU ~ 2544 ~ 最短路 (Dijkstra模板,常规版 and 优先队列优化版)

 Dijkstra:复杂度:,优先队列优化。优点:稳定。缺点:不能有负权。优先队列: #include&lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 105;const int INF = 0x3f3f3f3f;struct Edge{ int from, to, dist; ...

2018-01-28 12:51:52 393

原创 最小费用最大流模板

刘汝佳的MCMF模板:队列优化的BellmanFord(SPFA)版: #include&lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 1e5 + 5;const int INF = 0x3f3f3f3f;struct Edge{ int from, to, cap, flow, cost; ...

2018-01-27 19:04:26 953

原创 POJ ~ 1273 ~ Drainage Ditches(Dinic和EK模板)

题意:给定 n个点,m条边。下面m行,每行三个数字s,e,c表示s到e的容量为c/秒。问从1-n的每秒钟的最大流量为多少?思路:刘汝佳大神的模板。交POJ的话会CE,大家把万能头换掉就好了。Dinic:#include&lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 1e5 + 5;const int IN...

2018-01-27 13:18:37 378

原创 POJ ~ 2337 ~ Catenyms (欧拉路 + 路径输出)

题意:给你n个单词(只有小写),要求这些单词首尾相连,问你这n个单词能不能全部连起来,可以连成一条链或者连成一个环,如果可以输出路径,不可以输出“***”。思路:先判断度数,然后判断图的连通,在回溯的时候记录路径。虽然AC了但是还是有一个地方不是很明白,看来对递归和回溯的过程理解还是不够啊。不明白的地方:cnt是全局变量,对于dfs过程,如果过程中选择了错误的路怎么办?为什么却能求出正...

2018-01-27 12:30:07 291

原创 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)F.苦逼单身狗(滑动窗口 or DP or 二分)

链接:苦逼的单身狗思路:滑动窗口 or DP or 二分。滑动窗口:#include using namespace std;const int MAXN = 100005;int num[4];//L,O,V,E的个数const string LOVE = "LOVE";char str[MAXN];int main(){ int T; scan

2018-01-26 14:44:52 550

原创 分割线

===============

2018-01-25 18:17:16 336

原创 POJ ~ 1386 ~ Play on Words (欧拉路)

题意:给你n个单词(只有小写),要求这些单词首尾相连,问你这n个单词能不能全部连起来,可以连成一条链或者连成一个环。思路:顶点集合就是26个小写字母,用0到25来表示,每个单词的首字母到尾字母就是一条有向边,因为单词是不能倒回来的。其实就是问你这个图是否存在欧拉道路(一条链的情况)或者欧拉回路(环的情况),反正存在欧拉路就是成功的,否则就是失败。①有一个入度比出度大一的点&&有一个出度比入

2018-01-25 18:06:21 334

原创 POJ ~ 1751 ~ Highways (最小生成树 + 打印路径)

题意:N个点,给你N个点的坐标,现在还有Q条边已经连接好了。问把N个点怎么连接起来的花费的距离最短?坑点:注意多组输入输出可能会超时。本题为:Special judgeYes,只要是符合要求的正确答案即可。思路:prim或者kruskal的路径输出。①prim,已经建好的边的权值设置为0。开一个pre数组//pre[i]记录距离i最近的点。那么建立的边也就为pre[i]和i,但是i节点...

2018-01-25 11:19:29 731

原创 POJ ~ 1789 ~ Truck History (最小生成树)

题意:给你N个车牌号(字符串),两个车牌号之间的distance为这两个编号之间不同字母的个数。一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance,现在要找出一个“衍生”方案,使得总代价最小,也就是distance之和最小。思路:建图,然后跑prim或者建边跑kruskal。prim: //#include&lt;bits/stdc++.h&gt;...

2018-01-25 09:32:16 302

原创 POJ ~ 3026 ~ Borg Maze (BFS预处理 + 最小生成树)

题意:在一个M行N列的迷宫中(看下样例别弄反了),‘#’表示墙不可以走,其他都可以走,还有两种英文字母A和S,现在从S出发,要求用最短的路径L连接所有字母A,输出这条路径L的总长度。AC是AC了,但是我依旧没看懂样例是咋来的。。。思路:先把所有A,S点编号,用BFS处理出来A,S中每一个点到剩余所有点的最短路径长度,然后以A,S为点,A到S的最短路径长度为边权建立一个新图,最后对于这个新图...

2018-01-24 18:38:11 382

原创 POJ ~ 1679 ~ The Unique MST (次小生成树)

题意:T组测试数据,有N个点M条边,问最小生成树是否唯一?唯一输出权重,不唯一输出“Not Unique!”。思路:求次小生成树。其实求法很简单,就是记录一下最小生成树用的边,然后尝试删去这些边中的某一条边,然后再求最小生成树。数据有点坑,代码下面附3组数据。 //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#in...

2018-01-24 14:51:24 257

原创 POJ ~ 2349 ~ Arctic Network (最小生成树)

题意:输入S,N表示有N个哨所要通信,现在有S课卫星。然后输入N个点的坐标。有卫星的两个哨所之间可以任意通信(卫星是你分配的);否则,一个哨所只能和距离它小于等于D的哨所通信。求D的最小值?思路:其实就是求最小生成树,删掉S条边以后,最长的边的边权为多少?因为一定能形成最小生成树,所以我们在建立最小生成树的时候,本来需要建立N-1条边,那么现在只需要建立N-1-(S-1)条边即可。输出最后一条...

2018-01-24 11:15:28 313

原创 HDU ~ 1875 ~ 畅通工程再续 (最小生成树)

思路:注意建边的时候,距离小于等于1000且大于等于10才可以建边。需要判定下是否能够形成最小生成树。  //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;const int MAX...

2018-01-24 09:06:50 299

原创 HDU ~ 1233 ~ 还是畅通工程 (最小生成树)

思路:最小生成树。。。 //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;const int MAXN = 1005;const int MAXM = 1005 * 1005;int...

2018-01-24 08:41:52 275

原创 POJ ~ 1258 - Agri-Net (最小生成树)

题意:有N个点,给出邻接矩阵表示边权,求最小生成树。思路:kruskal套上就过了。  //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;const int MAXN = 100...

2018-01-24 08:35:48 268

原创 ZOJ ~ 1586 ~ QS Network (最小生成树)

题意:T组测试数据。有N个点需要通讯,先输入N个点的点权,然后输入N*N的邻接矩阵表示边权。两个点之间可以互相通讯的条件为两点的边权加点权。思路:先把点权输入。处理边权的时候直接把两点的点权加上,然后求一个最少生成树。  //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#include&lt;cstdio&gt;...

2018-01-24 08:28:54 260

原创 POJ ~ 2421 ~ Constructing Roads (最小生成树)

题意:有N个村庄,给你一个邻接矩阵表示他们之间的距离,现在有一些路已经建好了,问你还需要建多长的路才能使这N个村庄连通?思路:最小生成树。已经有路的边的边权设置为0,从邻接矩阵中把边处理出来。 //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algo...

2018-01-23 20:27:22 320

原创 POJ ~ 2031 ~ Building a Space Station (最小生成树)

题意:三维空间内有N个球,给你圆心坐标和半径X,Y,Z,R。问使这些球连通的需要修建路的最小距离?如果两个球不是相离的,那么认为他们已经联通。思路:只有100个点。暴力把边处理出来进行kruskal就行了,已经连通的两个星球可以把权值直接置为0,或者不建这条边,直接把这两个点合并进并查集。 边权置为0的代码: //#include&lt;bits/stdc++.h&gt;#...

2018-01-23 20:11:23 358

原创 POJ ~ 1251 ~ Jungle Roads (最小生成树)

题意:给你N个点,然后有N-1行,每行先输入起点,然后输入和他有边(即可以直接到达)的点有k个,然后输入这k个点的和到他们的花费。问使这些这些点都连通的最小花费是多少?思路:最小生成树。注意输入的时候要把换行和空格给处理掉,然后把边去起来求最小生成树就可以。 //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#inclu...

2018-01-23 19:14:41 340

原创 POJ ~ 1287 ~ Networking (最小生成树)

题意:N个点M条边,M行每行u,v,w表示有一条u-v的边边权为w,使N个点都连通的最小花费。思路:kruskal模板题。 //#include&lt;bits/stdc++.h&gt;#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;cons...

2018-01-23 17:39:29 313

原创 2018年全国多校算法寒假训练营练习比赛(第一场)题解

A:贪心+暴力 链接:大吉大利,今晚吃鸡——枪械篇 思路:我用了一个map使配件种类对应一个最大威力的配件。然后暴力判断每把枪都装上最优的配件以后的威力,求一个极大值即可。 #include&lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 1005;int n, m, k;double p[MAXN...

2018-01-21 20:09:22 1621 6

原创 POJ ~ 2912 ~ Rochambeau (枚举+并查集)

题意:你在看N个小孩在玩石头剪刀布,编号为0 ~ n-1,每个小孩会一直出同一种手势(如果出石头就一直出石头),但是这些小孩中有一个法官,法官想出什么手势就出什么手势。他们总共玩了M局游戏(1~M),ab表示a赢了b,a=b表示平局。问你能否发现这些孩子中的法官,如果发现了是在第几局游戏中发现的?在解释一下问的内容:1.”Impossible“谁当法官都不可以使全部对局成立。2.”Pl

2018-01-21 13:35:56 408

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除