1827:【01NOIP提高组】Car的旅行路线
哇这些真题终于正经起来奥
刚看这道题很不自信觉得自己肯定不能建图成功甚至想过用贪心。。
后来一想发现建图还是蛮容易的,AI我是真的蠢
话说一本通真的很坑啊,把原题的保留1位改成了2
我把在洛谷AC的代码交上去查了好久才发现。。
(话说为什么把读入优化换成scanf效率快了一千倍。。)
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int n,s,t,A,B,T[maxn<<];
double dis[maxn<<];
bool book[maxn<<];
/*inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') if(ch=='-') f=-1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}*/
struct data{
int city;
int x,y;
}a[maxn<<];
inline int power_2(int x)
{
return x*x;
}
void getlast(int x1,int y1,int x2,int y2,int x3,int y3,int i)
{
int x4,y4;
int dis1=power_2(x1-x2)+power_2(y1-y2),
dis2=power_2(x1-x3)+power_2(y1-y3),
dis3=power_2(x2-x3)+power_2(y2-y3);
if(dis2==dis1+dis3) x4=x3-x2+x1,y4=y3+y1-y2;
if(dis1==dis2+dis3) x4=x2-x3+x1,y4=y2+y1-y3;
if(dis3==dis1+dis2) x4=x3-x1+x2,y4=y3+y2-y1;
a[i+].x=x4;a[i+].y=y4;
}//这道题目唯一需要注意的点大概就是这个求第四个点
inline double distance(int x1,int y1,int x2,int y2)
{
return sqrt(power_2(x1-x2)+power_2(y1-y2));
}
void SPFA()
{
memset(book,,sizeof(book));
queue <int> q;
for(int i=;i<=s<<;i++) dis[i]=;
for(int i=A*-;i<=A*;i++) dis[i]=,q.push(i),book[i]=;
while(!q.empty())
{
int u=q.front();q.pop();book[u]=;
for(int i=;i<=s<<;i++)
{
if(i==u) continue;
double cost=distance(a[i].x,a[i].y,a[u].x,a[u].y);
if(a[i].city==a[u].city) cost*=T[a[i].city];
else cost*=t;
if(dis[i]>dis[u]+cost)
{
dis[i]=dis[u]+cost;
if(!book[i])
{
book[i]=;
q.push(i);
}
}
}
}
}
void init()
{
//memset(t,0,sizeof(t));
memset(a,,sizeof(a));
scanf("%d%d%d%d",&s,&t,&A,&B);
int i;
for(i=;i<=s<<;i+=)
{
//int x1,x2,x3,y1,y2,y3;
scanf("%d%d%d%d%d%d%d",&a[i].x,&a[i].y,&a[i+].x,&a[i+].y,&a[i+].x,&a[i+].y,&T[i/+]);
a[i].city=a[i+].city=a[i+].city=a[i+].city=i/+;
getlast(a[i].x,a[i].y,a[i+].x,a[i+].y,a[i+].x,a[i+].y,i);
}
}
int main()
{
scanf("%d",&n);
int i;
for(i=;i<=n;i++)
{
init();
SPFA();
double ans=dis[B<<];
for(int j=B*-;j<B*;j++) if(ans>dis[j]) ans=dis[j];
printf("%.2lf\n",ans);
}
return ;
}
1827:【01NOIP提高组】Car的旅行路线的更多相关文章
- 【noip 2012】提高组Day1T3.开车旅行
Description 小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市i 的海拔高度为Hi,城市i 和城市 ...
- NOIP2012提高组D1T3 开车旅行
n<=100000个山,每个山有高度,从一个山到另一个山代价为高度差,有A和B两人一起开车,A每次选前进方向的次近山,B选最近,保证山高度不同且如果代价相同的山低的代价算小,每次旅行先A走,然后 ...
- 【NOIP2012提高组】开车旅行 倍增
题目分析 朴素的做法就是预处理下一个目的地,然后跑模拟,超时. 本题最重要的考点是倍增优化.设$fa[i][j]$表示a从i出发行驶$2^j$“次”后行驶的路程,$fb[i][j]$表示从i出发行驶$ ...
- 1825:【01NOIP提高组】数的划分
#include<bits/stdc++.h> using namespace std; ],tot; void dfs(int num,int pos) { if(pos==k) ]) ...
- [NOIP2001提高组]CODEVS1014 Car的旅行路线(最短路)
最短路,这个不难想,但是要为它加边就有点麻烦..还好写完就过了(虽然WA了一次,因为我调试用的输出没删了..),不然实在是觉得挺难调的.. ------------------------------ ...
- [NOIP2012] 提高组 洛谷P1081 开车旅行
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- 开车旅行 2012年NOIP全国联赛提高组(倍增+set)
开车旅行 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小A 和小B决定利用 ...
- [NOIp2018提高组]旅行
[NOIp2018提高组]旅行: 题目大意: 一个\(n(n\le5000)\)个点,\(m(m\le n)\)条边的连通图.可以从任意一个点出发,前往任意一个相邻的未访问的结点,或沿着第一次来这个点 ...
- 【NOIP2015模拟11.5】JZOJ8月5日提高组T3 旅行
[NOIP2015模拟11.5]JZOJ8月5日提高组T3 旅行 题目 若不存在第\(k\)短路径时,输出"Stupid Mike" 题解 题意 给出一个有\(n\)个点的树 问这 ...
随机推荐
- sqlserver 统计每分钟内的数量
1.统计每分钟内 url 的访问数量 SELECT SUBSTRING(CONVERT(varchar(100), date, 20), 0,17) as dateTime,COUNT(url) as ...
- 【转载】使用Jedis操作redis
Redis是一个开源的Key-Value数据缓存,和Memcached类似. Redis多种类型的value,包括string(字符串).list(链表).set(集合).zset(sorted se ...
- Task 开始 停止
注意点:需要将每个线程的 MemoryCacheManager 保存,这里我保存在缓存中,需要取消时根据缓存key值取出 MemoryCacheManager //开始Task1 private vo ...
- ASP.NET Core 2.1 中的 HttpClientFactory (Part 1) HttpClientFactory介绍
原文:https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore 发表于:2018年1月 ASP.NET ...
- ivew数控件Tree自定义节点内容示例分析
ivew数控件Tree自定义节点内容示例分析 demo地址:https://run.iviewui.com/plcWlM4H <template> <Tree :data=" ...
- element-ui 页面刷新自动弹Message问题
问题: 通过加载插件的方式引入Message,导致每次页面刷新的时候会自动弹出一个通知消息 该情况只在引入局部插件才会引起 import Vue from 'vue' import 'element- ...
- Java Web-JQuery学习
Java Web-JQuery学习 JQuery概念 是一个JS框架,可以用来简化JS的开发,设计宗旨是"write less,do more",即写更少的代码,做更多的事情.它封 ...
- 关于/var/log/maillog 时间和系统时间不对应的问题 -- 我出现的是日志时间比系统时间慢12个小时
那么让我们来见证奇迹的时刻吧!! 首先你要看下/etc/localtime的软连接,到哪了 一般就是这块出问题了 检查这里就绝对不会错的 对比图 : 这种情况, 删除/etc/localtime : ...
- you might not need jquery
What's the oldest version of IE you need to support? IE10 /**json**/ var request = new XMLHttpReques ...
- web框架(1)-搭建开发环境
一.python安装 首先,确认系统安装的Python版本 $ python3 -V Python 3.6.3 未安装python,请转至:python安装 二.安装第三方依赖库 1.异步框架aioh ...