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. zero to one (3)

    工具使用 AWVS Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞. 功能及特 ...

  2. Spring MVC 中/和/*的区别

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...

  3. ScikitLearn 学习器类型

    源自在线课程的学习:http://www.studyai.com/course/detail/d086826e9be84b818f9c54893633663d

  4. Oracle查询24小时制的时间格式

    select to_date('2016-11-11 13:42:27', 'yyyy/mm/dd hh24:mi:ss') from dual.

  5. orcale用户名的创建及权限设置

    oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,gr ...

  6. docker 学习(七) docker 容器挂载

    1:docker的默认存放位置: $ sudo su # cd /var/lib/docker # ls -F containers/ graph/ repositories volumes/     ...

  7. appium+python 快速给真机安装app

    #coding=utf-8from appium import webdriverfrom time import sleepimport os,time,unittest '''给手机快速装app的 ...

  8. Java&nbsp;keytool命令说明

    Java keytool命令说明 Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中 ...

  9. day12Session案例 JSP

    2 Session案例 用户登录场景 package gz.itcast; import java.io.IOException; import java.io.PrintWriter; import ...

  10. 微信小程序之自定义组件与使用

    一般我们在定义了一个组件之后,为了复用,需要将它导出以提供给其他页面使用. 组件导出的关键字是 exprot default 没有加default时,例如: export class Template ...