The 2019 Asia Nanchang First Round Online Programming Contest B Fire-Fighting Hero(阅读理解)
This is an era of team success, but also an era of heroes. Throughout the ages, there have been numerous examples of using the few to defeat the many. There are VV (Numbers 11 to VV) fire-fighting points in ACM city. These fire-fighting points have EE roads to communicate with each other. Among them, there is a fire-fighting hero in the SS fire-fighting point, and the fire-fighting team is distributed in K fire-fighting points. If a fire-fighting point needs to be put out, the fire-fighting hero or the fire-fighting team must arrive as soon as possible, that is, to choose the shortest route to arrive.
Today, our fire-fighting heroes want to challenge the fire-fighting team. The challenge is to: The maximum value of the shortest path for a fire-fighting hero to go to others fire-fighting points is compared with the maximum value of the shortest path for a fire-fighting team to go to others fire-fighting points from any point in their fire-fighting points. Because firefighting heroes are different and run faster, the maximum value of the shortest path they get should be discounted first, that is, multiplied by a coefficient of \frac{1}{C}C1, and then compared. The smaller one wins. Who is the real firefighter in this situation?
Who is the real firefighter in this situation?
Input
The first line contains a positive integer T (1\le T \le 10)T(1≤T≤10), which indicates that there are TT cases of test data.
The format of each case of test data is as follows:
- Line 11 contains five positive integers V (1 \le V \le 1000)V(1≤V≤1000), E (V-1 \le E \le \frac{V*V}{2})E(V−1≤E≤2V∗V), S (1 \le S \le V)S(1≤S≤V), K (1\le K \le V)K(1≤K≤V) and C (1\le C\le 10)C(1≤C≤10), the meanings are shown above.
- Line 22 contains KK positive integers, which in turn denotes the location number of the fire-fighting point where the fire-fighting team is located.
In the next EE line, three positive integers i, j (1 \le i, j \le V)i,j(1≤i,j≤V) and L (1 \le L \le 10000)L(1≤L≤10000) per line. Represents a path, i, ji,j as the endpoint (fire-fighting point), LL as the length of the path.
Output
Each case of test data outputs one line, which is a integer. That is, the maximum value of the shortest path of the winner (If the fire hero wins, the maximum value before the discount should be output). A draw is also a victory for fire-fighting hero.
样例输入复制
1
4 7 3 2 2
1 4
1 2 7
1 3 2
1 4 6
2 1 1
2 4 1
3 2 1
3 4 3
样例输出复制
2
这个题当时交了89遍floyd,回去写了一遍超级源点,过了,这个垃圾题,是一个裸的超级源点,妈蛋,我就是读不懂他在说什么,这道题就是考察读题意。差评。
#include <cstdio>
#include <string>
#include <cmath>
#include <queue>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 1e5 + 5;
struct Node
{
int to, lat, val;
};
Node edge[1000005];
int head[1005],tot,dis[1005],N;
void add(int a, int b, int c)
{
edge[++tot].to = b;
edge[tot].val = c;
edge[tot].lat = head[a];
head[a] = tot;
}
void dijkstra(int yy)
{
priority_queue<pair<int,int>> pq;
for (int i = 1; i <= N; ++i)
dis[i] = inf;
dis[yy] = 0;
pq.push(make_pair(0,yy));
while (!pq.empty())
{
int s=pq.top().second;
pq.pop();
for (int i = head[s]; i; i = edge[i].lat)
{
int val = edge[i].to;
if (dis[val] > dis[s] + edge[i].val)
{
dis[val] = dis[s] + edge[i].val;
int w= dis[s] + edge[i].val;
pq.push(make_pair(-w,val));
}
}
}
}
int main()
{
int val, e, s, k, c;
int t, x;
scanf("%d", &t);
while (t--)
{
memset(head, 0, sizeof(head));
tot = 0;
scanf("%d %d %d %d %d", &N, &e, &s, &k, &c);
for (int i = 1; i <= k; ++i)
{
scanf("%d", &x);
add(0, x, 0);
add(x, 0, 0);
}
while (e--)
{
int a, b, dis;
scanf("%d %d %d", &a, &b, &dis);
add(a, b, dis),add(b,a,dis);
}
dijkstra(0);
int ans1 = -1;
for (int i = 1; i <= N; ++i) ans1 = max(ans1, dis[i]);
dijkstra(s);
int ans2= -1;
for (int i = 1; i <= N; ++i) ans2 = max(ans2, dis[i]);
if (ans1 * c < ans2)
printf("%d\n", ans1);
else
printf("%d\n", ans2);
}
return 0;
}
这题也没构造啥菊花图,这图那图的,用SPFA照样过,我真是个弟弟,89遍,我太垃圾了。
#include<iostream>
#include<queue>
#include<algorithm>
#include<set>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<bitset>
#include<cstdio>
#include<cstring>
#define Swap(a,b) a^=b^=a^=b
#define cini(n) scanf("%d",&n)
#define cinl(n) scanf("%lld",&n)
#define cinc(n) scanf("%c",&n)
#define cins(s) scanf("%s",s)
#define coui(n) printf("%d",n)
#define couc(n) printf("%c",n)
#define coul(n) printf("%lld",n)
#define speed ios_base::sync_with_stdio(0)
#define Max(a,b) a>b?a:b
#define Min(a,b) a<b?a:b
#define mem(n,x) memset(n,x,sizeof(n))
#define INF 0x3f3f3f3f
#define maxn 100010
#define Ege 100000000
#define Vertex 1005
#define esp 1e-9
#define mp(a,b) make_pair(a,b)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
struct Node
{
int to, lat, val; //边的右端点,边下一条边,边权
};
Node edge[1000005];
int head[1005],tot,dis[1005],N,M,sb[1005],vis[1005];
void add(int from, int to, int dis)
{
edge[++tot].lat = head[from];
edge[tot].to = to;
edge[tot].val = dis;
head[from] = tot;
}
void spfa(int s)
{
memset(dis, 0x3f, sizeof(dis));
dis[0]=0;
memset(vis, 0, sizeof(vis));
vis[s] = 1;
dis[s] = 0;
queue<int>Q;
Q.push(s);
while (!Q.empty()) {
int u = Q.front();
Q.pop();
vis[u] = 0;
for (int i = head[u];i;i = edge[i].lat) {
int to = edge[i].to;
int di = edge[i].val;
if (dis[to]>dis[u] + di) {
dis[to] = dis[u] + di;
if (!vis[to]) {
vis[to] = 1;
Q.push(to);
}
}
}
}
}
int main()
{
int val, e, s, k, c;
int t, x;
scanf("%d", &t);
while (t--)
{
memset(head, 0, sizeof(head));
tot = 0;
scanf("%d %d %d %d %d", &N, &e, &s, &k, &c);
for (int i = 1; i <= k; ++i)
{
scanf("%d", &x);
add(0, x, 0);
add(x, 0, 0);
}
while (e--)
{
int a, b, dis;
scanf("%d %d %d", &a, &b, &dis);
add(a, b, dis),add(b,a,dis);
}
spfa(0);
int ans1 = -1;
for (int i = 1; i <= N; ++i) ans1 = max(ans1, dis[i]);
spfa(s);
int ans2= -1;
for (int i = 1; i <= N; ++i) ans2 = max(ans2, dis[i]);
if (ans1 * c < ans2)
printf("%d\n", ans1);
else
printf("%d\n", ans2);
}
return 0;
}
The 2019 Asia Nanchang First Round Online Programming Contest B Fire-Fighting Hero(阅读理解)的更多相关文章
- The 2019 Asia Nanchang First Round Online Programming Contest
传送门 A. Enju With math problem 题意: 给出\(a_1,\cdots,a_{100}\),满足\(a_i\leq 1.5*10^8\). 现在问是否存在一个\(pos\), ...
- The 2019 Asia Nanchang First Round Online Programming Contest C(cf原题,线段树维护矩阵)
题:https://nanti.jisuanke.com/t/41350 分析:先将字符串转置过来 状态转移,因为只有5个状态,所以 i 状态到 j 状态的最小代价就枚举[i][k]->[k][ ...
- The 2019 Asia Nanchang First Round Online Programming Contest E. Magic Master
题目链接:https://nanti.jisuanke.com/t/41352 题目意思还是好理解的,看过的人不多,感觉是被通过量吓到了.其实就是个水题,反向模拟就好了, 用队列模拟,反向模拟,它要放 ...
- The 2019 Asia Nanchang First Round Online Programming Contest B. Fire-Fighting Hero
题目链接:https://nanti.jisuanke.com/t/41349 题意:有一个灭火英雄,和一个灭火团队,一个人与一个团队比较. 灭火英雄到其他灭火点的最短路最大值,与一个团队到其他灭火点 ...
- The 2019 Asia Nanchang First Round Online Programming Contest The Nth Item
The Nth Item 思路: 先用特征根法求出通向公式,然后通向公式中出现了\(\sqrt{17}\),这个可以用二次剩余求出来,然后可以O(\(log(n)\))求出. 但是还不够,我们先对\( ...
- H. The Nth Item(The 2019 Asia Nanchang First Round Online Programming Contest)
题意:https://nanti.jisuanke.com/t/41355 给出N1,计算公式:A=F(N)Ni=Ni-1 ^ (A*A),F为类斐波那契需要矩阵快速幂的递推式. 求第k个N. 思路: ...
- E.Magic Master(The 2019 Asia Nanchang First Round Online Programming Contest)
直接模拟orhttps://blog.csdn.net/liufengwei1/article/details/100643831
- The 2019 Asia Nanchang First Round Online Programming Contest(B,E)
B. Fire-Fighting Hero 题意:一个消防员和多个队伍比赛,比较所有地方的最短路的最大值,消防员最后的值要乘1/C,求胜利的一方的最短路的最大值是多少.一直没读懂正确题意(内疚). 思 ...
- The 2019 Asia Nanchang First Round Online Programming Contest C. Hello 2019(动态dp)
题意:要找到一个字符串里面存在子序列9102 而不存在8102 输出最小修改次数 思路:对于单次询问 我们可以直接区间dpOn求出最小修改次数 但是对于多次询问 我在大部分题解看到的解释一般是用线段树 ...
随机推荐
- xftp连接centos7
1.下载xftp文件,并正常进行安装 2.安装好之后运行,并新建会话,此时可见如下界面: 注意: 名称,可随便输入,自己能看懂是什么就行 主机,输入当前Linux服务器的ip(如何获取服务器 ...
- CentOS 7 yum安装 k8s 创建Pod一直处于ContainerCreating状态 问题解决
问题描述 使用CentOS7的 yum 包管理器安装了 Kubernetes 集群,使用 kubectl 创建服务成功后,执行 kubectl get pods,发现AGE虽然在不断增加,但状态始终不 ...
- 15.ASP.NET Core 应用程序中的静态文件中间件
在这篇文章中,我将向大家介绍,如何使用中间件组件来处理静态文件.这篇文章中,我们讨论下面几个问题: 在ASP.NET Core中,我们需要把静态文件存放在哪里? 在ASP.NET Core中 wwwr ...
- developerWorks 中文社区
https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=3302cc3 ...
- 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、212345等. 要求:”4”不能在第三位,”3”与”5”不能相连。
private static String[] mustExistNumber = new String[] { "1", "2", "2" ...
- 如何实现Jenkins 编译结果通知到QQ好友及QQ群组<很遗憾 2019年1月1日腾讯停止了webqq机器人的服务支持>
Jenkins-NotifyQQ NotifyQQ 运行于Docker 本文介绍mac 环境下实现Jenkins编译结果QQ即时通知 Jenkins 安装使用及iOS自动化打包,邮件通知请参考本人博客 ...
- 010-字符串-C语言笔记
010-字符串-C语言笔记 学习目标 1.[掌握]二维数组的声明和初始化 2.[掌握]遍历二维数组 3.[掌握]二维数组在内存中的存储 4.[掌握]二维数组与函数 5.[掌握]字符串 一.二维数组的声 ...
- Css3 新增的属性以及使用
Css3基础操作 . Css3? css3事css的最新版本 width. heith.background.border**都是属于css2.1CSS3会保留之前 CSS2.1的内容,只是添加了一些 ...
- harbor仓库搭建
harbor安装要求 harbor快速部署 下载harbor:https://github.com/goharbor/harbor/releases 这边以harbor-1.8.2为例 [root@g ...
- Python中有许多HTTP客户端,但使用最广泛且最容易的是requests
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:北京尚脑软件测试 PS:如有需要Python学习资料的小伙伴可以加点击 ...