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. nagios客户端安装与配置windows篇

    一.被监控的windows xp客户端的配置 1.安装NSClient++并安装下载地址: http://sourceforge.net/projects/nscplusNSClient++-0.3. ...

  2. AI-Info-Micron-Insight:通往完全自主之路

    ylbtech-AI-Info-Micron-Insight:通往完全自主之路 1.返回顶部 1. 通往完全自主之路 自动驾驶汽车正在从未来梦想演变为当代现实,随着技术成熟,个人和公共交通将永远转变. ...

  3. 清除@SessionAttributes 网站实现退出登录

    在网站实现登录时,我认识了@SessionAttributes,对我来说是真的好用,@SessionAttributes注解可以使得模型中的数据存储一份到session域中. 这样在页面跳转时可以直接 ...

  4. CF-851B

    B. Arpa and an exam about geometry time limit per test 2 seconds memory limit per test 256 megabytes ...

  5. IDEA上使用github上传代码

    这里的origin是表示我创建一个名为origin的仓库吗? 早已经存在了,我该怎么删除这个wenda呢? 将它修改为wenda1,如下: 点击项目,右击: 再点击项目,右击,选择commit: 问题 ...

  6. AutoHotkey常用配置

    ; 开发常用 ^e:: run D:\soft\java\MyEclipse for Spring 2014\myeclipseforspring.exe return ^d:: run D:\sof ...

  7. Xilinx SDSoc 加载opencv库

    Xilinx SDSoc 加载opencv库需要下载两个文件 xfopencv 和 Revision Platform, Revision Platform需要和具体的开发板型号对应,我用的是zcu1 ...

  8. Celery异步任务重复执行(Redis as broker)

    之前讲到利用celery异步处理一些耗时或者耗资源的任务,但是近来分析数据的时候发现一个奇怪的现象,即是某些数据重复了,自然想到是异步任务重复执行了. 查阅之后发现,到如果一个任务太耗时,任务完成时间 ...

  9. 用MATLAB进行数据分析

  10. unity5 manifest

    https://www.cnblogs.com/lancidie/p/5878789.html 之前曾经写了一篇博客介绍Unity5的AssetBundle,结果似乎很受关注.不过似乎很多人看了之后都 ...