CH6B12 最优高铁环
6B12 最优高铁环 0x6B「图论」练习
背景
幻影国建成了当今世界上最先进的高铁,该国高铁分为以下几类:
S---高速光子动力列车---时速1000km/h
G---高速动车---时速500km/h
D---动车组---时速300km/h
T---特快---时速200km/h
K---快速---时速150km/h
该国列车车次标号由上述字母开头,后面跟着一个正整数(<=1000)构成。
描述
由于该国地形起伏不平,各地铁路的适宜运行速度不同。因此该国的每一条行车路线都由K列车次构成。例如:K=5的一条路线为:T120-D135-S1-G12-K856。当某一条路线的末尾车次与另一条路线的开头车次相同时,这两条路线可以连接起来变为一条更长的行车路线。显然若干条路线连接起来有可能构成一个环。
若有3条行车路线分别为:
x1-x2-x3
x3-x4
x4-x5-x1
x1~x5车次的速度分别为v1~v5
定义高铁环的值为(环上各条行车路线速度和)的平均值,即:
[(v1+v2+v3)+(v3+v4)+(v4+v5+v1)]/3.
所有高铁环的值的最大值称为最优高铁环的值。
给出M条行车路线,求最优高铁环的值。
输入格式
第一行为行车路线条数M
接下来M行每行一条行车路线,由若干车次构成,各车次之间用'-'号隔开,车次的标号方式如上所述。
数据保证输入的合法性。
输出格式
最优高铁环的值。四舍五入到最接近的整数。
若不存在这样的环,输出-1.
样例输入
3
T120-D135-S1
S1-G12
G12-K856-T120
样例输出
1283
数据范围与约定
- 50%的数据:0<M<=1000
100%的数据,0<M<=50000
每条行车路线车次个数不超过20,数据保证结果不超过2^31-1。
样例解释
[(200+300+1000)+(1000+500)+(500+150+200)]/3=1283
</article>
题解
把每段行车路线的起点终点车次看成节点,则给出的就是一些边,然后要求一个01分数规划问题。
二分答案后,找负(正)环即可。
#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
rg T data=0,w=1;rg char ch=getchar();
for(;!isdigit(ch);ch=getchar())if(ch=='-') w=-w;
for(;isdigit(ch);ch=getchar()) data=data*10+ch-'0';
return data*w;
}
template<class T>il T read(rg T&x) {return x=read<T>();}
typedef long long ll;
co int N=5e4+1;
co double eps=1e-3;
int n,m,st,ed,t;
int head[N],edge[N],next[N],tot;
double d[N],s[N],leng[N];
bool v[N];
il void add(int x,int y){
edge[++tot]=y,next[tot]=head[x],head[x]=tot;
}
il int f(char ch){
switch(ch){
case 'S': t=0;return 1000;
case 'G': t=1;return 500;
case 'D': t=2;return 300;
case 'T': t=3;return 200;
case 'K': t=4;return 150;
}
return -1;
}
bool dfs(int x){
v[x]=1;
for(int i=head[x];i;i=next[i]){
int y=edge[i];double z=leng[i];
if(d[y]>d[x]+z){
d[y]=d[x]+z;
if(v[y]||dfs(y)) return 1;
}
}
v[x]=0;
return 0;
}
bool pd(double x){
for(int i=1;i<=m;++i) leng[i]=x-s[i];
memset(v,0,sizeof v);
memset(d,0x3f,sizeof d);
for(int i=1;i<N;++i)
if(dfs(i)) return 1;
return 0;
}
int main(){
read(m);
for(int i=1;i<=m;++i){
static char str[150];
scanf("%s",str),n=strlen(str);
int x=0;
bool flag=0;
for(int j=0;j<n;++j){
if(isdigit(str[j])) x=x*10+str[j]-'0';
else if(str[j]=='-'){
if(!flag) st=x+t*10000;
flag=1;
x=0;
}
else s[i]+=f(str[j]);
}
ed=x+t*10000;
add(st,ed);
}
double l=0,r=0x7fffffff,ans=-1; // edit 1: -1
while(r-l>eps){
double mid=(l+r)/2;
if(pd(mid)) l=ans=mid;
else r=mid;
}
printf("%.0lf\n",ans);
return 0;
}
CH6B12 最优高铁环的更多相关文章
- linux下改动内核參数进行Tcp性能调优 -- 高并发
前言: Tcp/ip协议对网络编程的重要性,进行过网络开发的人员都知道,我们所编写的网络程序除了硬件,结构等限制,通过改动Tcp/ip内核參数也能得到非常大的性能提升, 以下就列举一些Tcp/ip内核 ...
- Linux配置支持高并发TCP连接(socket最大连接数)
Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58| 分类:LNMP&a ...
- 【译】调优Apache Kafka集群
今天带来一篇译文“调优Apache Kafka集群”,里面有一些观点并无太多新颖之处,但总结得还算详细.该文从四个不同的目标出发给出了各自不同的参数配置,值得大家一读~ 原文地址请参考:https:/ ...
- 技能篇:linux服务性能问题排查及jvm调优思路
只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求.最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的.如果你是负责中间件或 ...
- 【算法】快速排序-Java版
说在前面的话 平常码砖的时候,对于一个数组进行排序更多的是起泡排序,起泡排序对于一般不是很长的数组进行操作没什么问题,一旦数组过大,很明显效率低. 而快排是对起泡排序的一种改进,效率明显优高. 快排思 ...
- MySQL_第三方数据库引擎_tokudb
前阵子迁移zabbix到tokudb,整理部分操作笔记到这篇博文. 如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所有.望各 ...
- 常见性能优化策略的总结 good
阅读目录 代码 数据库 缓存 异步 NoSQL JVM调优 多线程与分布式 度量系统(监控.报警.服务依赖管理) 案例一:商家与控制区关系的刷新job 案例二:POI缓存设计与实现 案例三:业务运营后 ...
- lesson5-图像检测-小象cv
R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...
- 专利事务所信息Python爬取
数据来源:http://www.acpaa.cn/ 目前事务所的信息没有做反爬限制,还是很容易拿到数据的 没有用html解析工具,直接上正则,结果就是需要处理很多乱七八糟的空格...为了能将日期顺利的 ...
随机推荐
- winphone 中的指针和手势事件
注意 有关这些主题的最新概述,请参阅指针事件和手势事件主题. 小心 W3C 指针事件规范自从在 Internet Explorer 10 中实施以来,已经经历了多次修订.此外,截止到 Intern ...
- group_concat函数导致的主从同步异常
group_concat函数导致的主从同步异常的问题总结 今天在处理一个group_concat函数导致的主从异常的问题,排查过程比较简单,不过第一次遇到这个问题记录一下排查的思路,后面如果再遇到其他 ...
- css 坑记
1. div 内容超出 (做换行处理) 要注意 white-space属性的运用 设置 div width:100%;(或者固定值) 设置换行 word-break: break-all; 设置 ...
- SpringBoot中的配置文件
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
- 【python】-- 深浅copy、集合
深浅copy 1.数字.字符串的copy: 赋值(=).浅拷贝(copy)和深拷贝(deepcopy)其实都一样,因为它们永远指向同一个内存地址: >>> import copy & ...
- Android笔记之OnLongClickListener
OnLongClickListener中的回调函数boolean onLongClick(View v),其返回值的官方释义如下 如果这个回调消耗了长点击,则返回true,否则返回false. 即使翻 ...
- CentOS6下安装PHP7
更新软件源[1] wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm wget http://rpm ...
- You are using pip version 8.1.2, however version 9.0.1 is available.
[root@localhost ~]# pip install virtualenvmapperCollecting virtualenvmapper Could not find a versio ...
- [Symfony\Component\Config\Definition\Exception\InvalidConfigurationException] The child node "db_driver" at path "fos_user" must be configured.
$ php bin/console server:run [Symfony\Component\Config\Definition\Exception\InvalidConfigurationExce ...
- centos7 Authentication failure
root@localhost ~]#su bash-4.2$ su Password: su: Authentication failure //这里切换的是系统用户,现在还不清楚为什么postgre ...