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分的更多相关文章

  1. 洛谷 P1081 开车旅行(70)

    P1081 开车旅行 题目描述 小AA 和小BB 决定利用假期外出旅行,他们将想去的城市从 11到 NN 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ii的海 ...

  2. NOIP 2012 洛谷P1081 开车旅行

    Description: 就是两个人开车,只能向东开.向东有n个城市,城市之间的距离为他们的高度差.A,B轮流开车,A喜欢到次近的城市,B喜欢到最近的城市.如果车子开到底了或者车子开的路程已经超过了限 ...

  3. 洛谷P1081 开车旅行

    题目 双向链表+倍增+模拟. \(70pts\): 说白了此题的暴力就是细节较多的模拟题. 我们设离\(i\)城市最近的点的位置为\(B[i]\),第二近的位置为\(A[i]\).设\(A\)或\(B ...

  4. 洛谷P1081——开车旅行

    传送门:QAQQAQ 题意注意点: 1.是从前往后走,不能回头 2.小A小B轮流开,先小A开,而小A是到第二近的点(这点调试的时候查了好久) 3.若绝对值差相同海拔低的更近,而第一个询问若比值相同是海 ...

  5. [NOIP2012] 提高组 洛谷P1081 开车旅行

    题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...

  6. 洛谷 P1081 开车旅行 —— 倍增

    题目:https://www.luogu.org/problemnew/show/P1081 真是倍增好题! 预处理:f[i][j] 表示从 i 点开始走 2^j 次 AB (A,B各走一次)到达的点 ...

  7. 2018.11.04 洛谷P1081 开车旅行(倍增)

    传送门 思路简单码量超凡? 感觉看完题大家应该都知道是倍增sbsbsb题了吧. 首先预处理出从每个点出发如果是AAA走到哪个点,如果是BBB走到哪个点. 然后利用刚刚预处理出的信息再预处理从每个点出发 ...

  8. 洛谷P1081 开车旅行(倍增)

    题意 题目链接 Sol 咕了一年的题解.. 并不算是很难,只是代码有点毒瘤 \(f[i][j]\)表示从\(i\)号节点出发走了\(2^j\)轮后总的距离 \(da[i][j]\)同理表示\(a\)的 ...

  9. 洛谷 P1081 开车旅行【双向链表+倍增】

    倍增数组的20和N写反了反复WAWAWA-- 注意到a和b在每个点上出发都会到一个指定的点,所以这样构成了两棵以n点为根的树 假设我们建出了这两棵树,对于第一问就可以枚举起点然后倍增的找出ab路径长度 ...

随机推荐

  1. 1119 Pre- and Post-order Traversals(30 分)

    1119 Pre- and Post-order Traversals(30 分) Suppose that all the keys in a binary tree are distinct po ...

  2. python+selenium自动化测试环境搭建

    selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: *  免费,也不用再为破解QTP而大伤脑筋 *  小巧,对于不同的语 ...

  3. 单机11g ogg 双向DML复制

    环境说明: Linux为Linux 2.6.32-573.el6.x86_64 Oracle为 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Pr ...

  4. webSocket 简单介绍

    WebSocket :WebSocket协议支持(在受控环境中运行不受信任的代码的)客户端与(选择加入该代码的通信的)远程主机之间进行全双工通信.                       简单的说 ...

  5. std::ostringstream 转std::string

    http://www.cplusplus.com/reference/sstream/ostringstream/ https://en.cppreference.com/w/cpp/io/basic ...

  6. XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译

    XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...

  7. jQuery contextMenu使用

    地址:jQuery contextMenu 需要以下文件: jquery.contextMenu.css jquery.min.css jquery.contextMenu.js jquery.ui. ...

  8. day1 java基础

    常见的dos命令 盘符: 进入指定的盘符下. dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录    注意:rd不能删除非空的文件夹,而且只能用于删除文件夹. cd ...

  9. Umbraco back office 登录不了,如何解决

    通过设置User的默认密码为"default", 它的Hash值为 bnWxWyFdCueCcKrqniYK9iAS+7E= 所以在SQL Server中执行以下脚本 UPDATE ...

  10. Django 框架

    MVC 框架和MTV框架  (了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...