洛谷P1081 开车旅行70分
https://www.luogu.org/problem/show?pid=1081
太遗憾了明明写出来了,却把最小值初始值弄小了,从第二个点开始就不可能对了。70分!
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,x0,m;
long long h[];
int f[][];
double mint1=1e9+9.1,INF=1e9+9.1;
int mint1w=;
int now,H=;
void work(int x,long long tot,int id,long long a,long long b)//当前起点,剩余路程
{
if(tot==||x==n)
{
if(!b) return ;
if(mint1>1.000*a/b)
mint1=1.000*a/b,mint1w=now,H=h[now];
if(mint1==1.00*a/b&&h[now]>H)
mint1w=now,H=h[now];
return ;
}
int t=f[id][x]; if(abs(h[t]-h[x]) <=tot)
if(id) work(t,tot-abs(h[t]-h[x]),!id,a+abs(h[t]-h[x]),b);
else work(t,tot-abs(h[t]-h[x]),!id,a,b+abs(h[t]-h[x]));
else
{
if(!b) return ;
if(mint1>1.000*a/b)
mint1=1.000*a/b,mint1w=now,H=h[now];
if(mint1==1.00*a/b &&h[now]>H)
mint1w=now,H=h[now];
return ;
}
return;
}
void find(int x,long long tot,int id,long long a,long long b)
{
if(tot==||x==n)
{
printf("%lld %lld\n",a,b);
return ;
}
int t=f[id][x];
if(abs(h[t]-h[x])<=tot)
if(id) find(t,tot-abs(h[t]-h[x]),!id,a+abs(h[t]-h[x]),b);
else find(t,tot-abs(h[t]-h[x]),!id,a,b+abs(h[t]-h[x]));
else
{
printf("%lld %lld\n",a,b);
return ;
}
}
int main()
{ scanf("%d",&n);
long long MM=-INF,MW=;
for(int i=;i<=n;i++)
{
scanf("%lld",&h[i]);
if(h[i]>MM) MM=h[i],MW=i;
}
h[n+]=1e15+;
scanf("%d",&x0);
double min1,min2,minw1,minw2,t;
for(int i=;i<=n;i++)
{
min1=INF,min2=INF,minw1=n+,minw2=n+,t;
for(int j=i+;j<=n;j++)
{
t=abs(h[j]-h[i]);
if(h[j]>h[i]) t+=0.1;
if(h[j]<h[i]) t-=0.1;
if(t<min1)
{
min2=min1,minw2=minw1;
min1=t,minw1=j;
}else
if(t<min2)
min2=t,minw2=j;
}
f[][i]=minw1,f[][i]=minw2;
}
for(int i=;i<=n;i++)
now=i,work(i,x0,,,);
if(mint1==INF) printf("%d\n",MW);
else
printf("%d\n",mint1w);
scanf("%d",&m);
for(int i=,S,X;i<=m;i++)
{
scanf("%d%d",&S,&X);
find(S,X*1LL,,,);
}
return ;
}
洛谷P1081 开车旅行70分的更多相关文章
- 洛谷 P1081 开车旅行(70)
P1081 开车旅行 题目描述 小AA 和小BB 决定利用假期外出旅行,他们将想去的城市从 11到 NN 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ii的海 ...
- NOIP 2012 洛谷P1081 开车旅行
Description: 就是两个人开车,只能向东开.向东有n个城市,城市之间的距离为他们的高度差.A,B轮流开车,A喜欢到次近的城市,B喜欢到最近的城市.如果车子开到底了或者车子开的路程已经超过了限 ...
- 洛谷P1081 开车旅行
题目 双向链表+倍增+模拟. \(70pts\): 说白了此题的暴力就是细节较多的模拟题. 我们设离\(i\)城市最近的点的位置为\(B[i]\),第二近的位置为\(A[i]\).设\(A\)或\(B ...
- 洛谷P1081——开车旅行
传送门:QAQQAQ 题意注意点: 1.是从前往后走,不能回头 2.小A小B轮流开,先小A开,而小A是到第二近的点(这点调试的时候查了好久) 3.若绝对值差相同海拔低的更近,而第一个询问若比值相同是海 ...
- [NOIP2012] 提高组 洛谷P1081 开车旅行
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- 洛谷 P1081 开车旅行 —— 倍增
题目:https://www.luogu.org/problemnew/show/P1081 真是倍增好题! 预处理:f[i][j] 表示从 i 点开始走 2^j 次 AB (A,B各走一次)到达的点 ...
- 2018.11.04 洛谷P1081 开车旅行(倍增)
传送门 思路简单码量超凡? 感觉看完题大家应该都知道是倍增sbsbsb题了吧. 首先预处理出从每个点出发如果是AAA走到哪个点,如果是BBB走到哪个点. 然后利用刚刚预处理出的信息再预处理从每个点出发 ...
- 洛谷P1081 开车旅行(倍增)
题意 题目链接 Sol 咕了一年的题解.. 并不算是很难,只是代码有点毒瘤 \(f[i][j]\)表示从\(i\)号节点出发走了\(2^j\)轮后总的距离 \(da[i][j]\)同理表示\(a\)的 ...
- 洛谷 P1081 开车旅行【双向链表+倍增】
倍增数组的20和N写反了反复WAWAWA-- 注意到a和b在每个点上出发都会到一个指定的点,所以这样构成了两棵以n点为根的树 假设我们建出了这两棵树,对于第一问就可以枚举起点然后倍增的找出ab路径长度 ...
随机推荐
- zero to one (3)
工具使用 AWVS Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞. 功能及特 ...
- Spring MVC 中/和/*的区别
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...
- ScikitLearn 学习器类型
源自在线课程的学习:http://www.studyai.com/course/detail/d086826e9be84b818f9c54893633663d
- Oracle查询24小时制的时间格式
select to_date('2016-11-11 13:42:27', 'yyyy/mm/dd hh24:mi:ss') from dual.
- orcale用户名的创建及权限设置
oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,gr ...
- docker 学习(七) docker 容器挂载
1:docker的默认存放位置: $ sudo su # cd /var/lib/docker # ls -F containers/ graph/ repositories volumes/ ...
- appium+python 快速给真机安装app
#coding=utf-8from appium import webdriverfrom time import sleepimport os,time,unittest '''给手机快速装app的 ...
- Java keytool命令说明
Java keytool命令说明 Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中 ...
- day12Session案例 JSP
2 Session案例 用户登录场景 package gz.itcast; import java.io.IOException; import java.io.PrintWriter; import ...
- 微信小程序之自定义组件与使用
一般我们在定义了一个组件之后,为了复用,需要将它导出以提供给其他页面使用. 组件导出的关键字是 exprot default 没有加default时,例如: export class Template ...