「日常训练」「小专题·图论」Domino Effect(1-5)
题意
分析
这题几乎就是一条dijkstra的问题。但是,如何考虑倒在中间?
要意识到这题求什么:单源最短路的最大值。那么有没有更大的?倒在中间有可能会使它更大。
但是要注意一个问题:不要把不存在的边(边长为inf)算进去;另外,n=1的情况需要注意。
代码
// Origin:
// Theme: Graph Theory (Basic)
// Date: 080618
// Author: Sam X
//#include <bits/stdc++.h>
#include <iostream>
#include <utility>
#include <iomanip>
#include <cstring>
#include <cmath>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ul;
typedef pair<int,int> pi;
typedef pair<int,pi> pii;
int dist[505][505];
int main()
{
int n,m,kase=0;
while(cin>>n>>m)
{
if(!n && !m) break;
memset(dist,0x3f,sizeof(dist));
rep(i,1,n) dist[i][i]=0;
rep(i,1,m)
{
int x,y,z; cin>>x>>y>>z;
dist[x][y]=dist[y][x]=z;
}
if(n==1)
{
cout<<"System #"<<++kase<<"\nThe last domino falls after 0.0 seconds, at key domino 1.\n\n";
continue;
}
int d[505]; memset(d,0x3f,sizeof(d));
d[1]=0;
bool vis[505]; ZERO(vis);
rep(i,1,n)
{
int mind=0x3f3f3f3f,x=-1;
rep(j,1,n) if(!vis[j] && d[j]<mind) mind=d[x=j];
if(x==-1) break;
vis[x]=true;
rep(i,1,n)
{
d[i]=min(d[i],d[x]+dist[x][i]);
}
}
//rep(i,1,n) cout<<d[i]<<" "; cout<<endl;
double ans=-1,ans_mid=-1;
int end=-1,lend=-1,rend=-1,maxd=-1;
bool ismid=false;
rep(i,2,n)
{
if(d[i]>ans)
{
ans=d[end=i];
}
//maxd=max(d[i],maxd);
}
rep(i,1,n)
{
rep(j,i+1,n)
{
if(dist[i][j]==0x3f3f3f3f) continue;
double tmp=(d[i]+d[j]+dist[i][j])/2.0;
if(tmp>ans_mid)
{
lend=i; rend=j;
ans_mid=max(tmp,ans_mid);
}
}
}
ismid=ans_mid-ans>1e-8;
cout<<"System #"<<++kase<<endl<<"The last domino falls after "<<fixed<<setprecision(1)<<double(ismid?ans_mid:ans)<<" seconds, ";
if(!ismid)
{
cout<<"at key domino "<<end<<"."<<endl;
}
else
{
cout<<"between key dominoes "<<lend<<" and "<<rend<<"."<<endl;
}
cout<<endl;
}
return 0;
}
「日常训练」「小专题·图论」Domino Effect(1-5)的更多相关文章
- 「日常训练」「小专题·图论」 Cow Contest (1-3)
题意 分析 问题是要看出来这是个floyd闭包问题.我没看出来- - 分析之后补充. 代码 // Origin: // Theme: Graph Theory (Basic) // Date: 080 ...
- 「日常训练」「小专题·图论」 Frogger (1-1)
题意 分析 变形的dijkstra. 分析题意之后补充. 代码 // Origin: // Theme: Graph Theory (Basic) // Date: 080518 // Author: ...
- 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...
- 「日常训练」「小专题·USACO」 Ski Course Design (1-4)
题目 以后补 分析 mmp这题把我写蠢哭了 我原来的思路是什么呢? 每轮找min/max,然后两个决策:升min/降max 像这样子dfs找最优,然后花式剪枝 但是一想不对啊,这才1-4,哪有那么复杂 ...
- 「日常训练」「小专题·USACO」 Wormholes(1-4)
题意 之后补充. 分析 这是一条很好的考察递归(或者说搜索)的题目.它的两个过程(建立初步解,验证)都用到了递归(或者说运用递归可以相当程度的减少代码量). 具体实现见代码.注意,为了使用std::p ...
- 「日常训练」「小专题·USACO」 Barn Repair(1-4)
题意 之后补. 分析 这题同样也很精巧.我们不妨思考一下,如果只允许用一块木板,那么要购买多少距离?是整个的距离吗?不是,是从第一个到最后一个(哈哈哈哈哈哈哈).但是,不包括第一个的"左边& ...
- 「日常训练」「小专题·USACO」 Broken Necklace(1-2)
题意 圆形链条,打断一处可以形成一条链.问在哪个地方开始打断,能够形成最大的连续颜色(白色视作同样的颜色)? 分析 说起来很高级,但是我们实际上并不需要穷举打断的地方,只需要把串重复三回啊三回.然后从 ...
- 「日常训练」 Fire!(UVA-11624)
与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...
- 「日常训练」Card Game Cheater(HDU-1528)
题意与分析 题意是这样的:有\(n\)张牌,然后第一行是Adam的牌,第二行是Eve的牌:每两个字符代表一张牌,第一个字符表示牌的点数,第二个表示牌的花色.Adam和Eve每次从自己的牌中选出一张牌进 ...
随机推荐
- 【iOS】那些年,遇到的小坑
'NSInvalidArgumentException', reason: '-[__NSPlaceholderDictionary initWithObjectsAndKeys:]: second ...
- 10474 - Where is the Marble?(模拟)
传送门: UVa10474 - Where is the Marble? Raju and Meena love to play with Marbles. They have got a lot o ...
- android(eclipse)广播机制知识梳理(三)
1:分类: 标准广播:没有先后顺序,无法被截断 有序广播:又先后顺序,可以截断 2:接收广播:首先进行注册,注册的方式有静态注册和动态注册.也就是在代码中注册和在AndroidManifest ...
- BFC、IFC、GFC、FFC
原文地址:https://www.xingkongbj.com/blog/css/fc.html FC FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ...
- 配置JAVA_HOME踩得坑 。。
配置JAVA_HOME 的时候这里不能有空格哦 ,还以为什么呢...
- iOS之已经审核通过的app在App Store上搜不到的解决办法
修改定价将你的app定价修改成0.99刀 修改你的发行范围,全取消后只选中国. save这时候你的app status将会变成pending contract. 将之前的修改都改回来,修改定价free ...
- etcd客户端c#
etcd是什么东西就不介绍了,自己网上搜索,简单说就是一个分布式K/V存储系统: 由于它是go语言写的,没有其它客户端,找到一个java的. 出于方案积累原因,写了c#版本,可以使用.c#版本是基于e ...
- django-模板层基础2
1.模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头 部不需要改变),那么这样我们可以把那个头部重新写在一 ...
- Java的内存--内存溢出vs内存泄露(2)
系统上线后,经常会出现内存不足等错误out of memory,很是头疼,决定要一探究竟 内存溢出 1. 定义及原因 内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使 ...
- 蚯蚓(noip2016,贪心,单调性)
题目描述 本题中,我们将用符号⌊c⌋ 表示对 c 向下取整,例如:⌊3.0⌋=⌊3.1⌋=⌊3.9⌋=3 . 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭 ...