2013-2014 ACM-ICPC Pacific Northwest Regional Contest B.Bones’s Battery
题意略。
思路:
这个题目求的是第一个可行解,由此想到用二分试探的方式来解决。
现在讲讲怎么验证该解是否合理:
先用floyd求出两两之间的最短距离。
dp[ i ][ j ]表示,i 到 j 至少要充几次电,如果dist[ i ][ j ] <= 当前规定的试探值,那么令dp[ i ][ j ] = 1,否则赋值为INF,表示不知道要充几次电,
这个要靠第二次Floyd来更新。在第二次跑完Floyd之后,看dp数组中的最大值,如果最大值小于k,那么说明合法。
详见代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL F = 0x3f; LL dist[][];
LL dp[][];
int n,k,m; void init(){
memset(dist,F,sizeof(dist));
memset(dp,F,sizeof(dp));
} void floyd1(){
for(int i = ;i < n;++i)
dist[i][i] = ;
for(int k = ;k < n;++k)
for(int i = ;i < n;++i)
for(int j = ;j < n;++j)
dist[i][j] = min(dist[i][j],dist[i][k] + dist[k][j]);
} void floyd2()
{
for(int i = ;i < n;++i)
dp[i][i]=;
for(int k = ;k < n;++k)
for(int i = ;i < n;++i)
for(int j = ;j < n;++j)
dp[i][j] = min(dp[i][j],dp[i][k] + dp[k][j]);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{ scanf("%d%d%d",&n,&k,&m);
init();
int u,v,d;
for(int i = ;i<m;i++)
{
scanf("%d%d%d",&u,&v,&d);
dist[u][v] = dist[v][u] = d;
}
floyd1();
LL l = ,r = INF;
LL ans = r;
LL mid;
while(l <= r)
{
mid = (l + r)>>;
for(int i = ;i < n;++i)
for(int j = ;j < n;++j)
dp[i][j] = dist[i][j] <= mid ? : INF;
floyd2();
LL d = ;
for(int i = ;i < n;++i)
for(int j = ;j < n;++j)
if(dp[i][j] > d) d = dp[i][j];
if(d <= k){
ans = mid;
r = mid - ;
}
else{
l = mid + ;
}
}
printf("%lld\n",ans);
}
return ;
}
2013-2014 ACM-ICPC Pacific Northwest Regional Contest B.Bones’s Battery的更多相关文章
- 2018 ICPC Pacific Northwest Regional Contest I-Inversions 题解
题目链接: 2018 ICPC Pacific Northwest Regional Contest - I-Inversions 题意 给出一个长度为\(n\)的序列,其中的数字介于0-k之间,为0 ...
- Contest Setting 2018 ICPC Pacific Northwest Regional Contest dp
题目:https://vj.69fa.cn/12703be72f729288b4cced17e2501850?v=1552995458 dp这个题目网上说是dp+离散化这个题目要对这些数字先处理然后进 ...
- ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków
ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)
2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 思路: A Exam 思路:水题 代码: #include<bits ...
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution
A:Alphabet Solved. 签. #include<bits/stdc++.h> using namespace std; ]; ]; int main(){ scanf(); ...
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) S Surf
SurfNow that you've come to Florida and taken up surng, you love it! Of course, you've realized that ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest C Contest Setting(DP)
比赛链接:Contest Setting C题 题意:$n$道题目,每道题目难度为$ai$,选择$k$道难度不同的题目,有多少种选择方案.$1<=k<=n<=1000,1<=a ...
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) 题解
[题目链接] A - Alphabet 最长公共子序列.保留最长公共子序列,剩余的删除或者补足即可. #include <bits/stdc++.h> using namespace st ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution
A:Exam Solved. 温暖的签. #include<bits/stdc++.h> using namespace std; ; int k; char str1[maxn], st ...
随机推荐
- 下载Opencv和OpencvSharp,让我们开始图像之旅
我们学习和使用OpencvSharp,还下载Opencv干什么?很简单,研究人家的源码是最好和最快速的学习方式. 第一Opencv源码下载,网络上很多,请大家自行搜索,版本请下载4.1.0.当前你要用 ...
- [POJ2823] Sliding Window 「单调队列」
我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{ a(i-k+1),a(i-k+2),..., a(i) },i ...
- Android的简述4
NoteEditor深入分析 首先来弄清楚“日志编辑“的状态转换,通过上篇文章的方法来做下面这样一个实验,首先进入“日志编辑“时会触发onCreate和onResume,然后用户通过Option Me ...
- 关于STM32F103+ESP8266+阿里云过程之修改SDK连接至阿里云(二)
继上篇的阿里云物联云平台设置之后,接下来的工作就是对安信可官方给的sdk进行修改 安信可ESP系列集成环境,SDK,aliyun_mqtt_app,下载地址在上一篇博客,https://www.cnb ...
- K8S 部署 Web UI
在早期的版本中 Kubernetes可以在 Dashboard 中看到 heapster 提供的一些图表信息, 在后续的版本中会陆续移除掉 heapster,现在更加流行的监控工具是 promethe ...
- 前端笔记之React(五)Redux深入浅出
一.Redux整体感知 Redux是JavaScript状态管理容器,提供了可被预测状态的状态管理容器.来自于Flux思想,Facebook基于Flux思想,在2015年推出Redux库. 中文网站: ...
- UE4 本地化不起作用 SetCurrentCulture
UE4 本地化 FInternationalization::Get ().SetCurrentCulture ( TEXT ( "en" ) ) FInternationaliz ...
- 用lilypond实现模进
基本练习通常是一个两个简单动作在不同位置上反复操练,所以打谱的时候用模进必不可少. 所谓模进,就是把一个片段平行地转移到其他音高上进行.比如 do re mi fa 可以把从do开始改成从so开始,那 ...
- ASP.NET Core on K8S深入学习(3)Deployment
上一篇<部署过程解析与安装Dashboard>中我们了解K8S的部署过程,这一篇我们来了解一下K8S为我们提供的几种应用运行方式:Deployment.DaemonSet与Job,它们是K ...
- 转载 | SVG向下兼容优雅降级方法
本文引自:http://www.zhangxinxu.com/wordpress/2013/09/svg-fallbacks/ 1.svg image标签降级技术 <svg width=&quo ...