洛谷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路径长度 ...
随机推荐
- 【Matlab】常用函数
1.取整函数 ceil(x)返回不小于x的最小整数值.floor(x)返回不大于x的最大整数值.round(x)返回x的四舍五入整数值.
- Linux MySQL5.5的安装
1.安装cmake [root@server1 src]# cd /opt/ipnms/src[root@server1 src]# tar zxvf cmake-2.8.4.tar.gz[root@ ...
- SimpliciTI APP
SimpliciTI Sample Applications Sample Applications 介绍了4个简单的示例应用程序来演示SimpliciTI的各种特性和功能. Simple Pee ...
- java.lang.NoClassDefFoundError: org/apache/commons/collections/map/LRUMap 解决方法
转自:https://blog.csdn.net/q664243624/article/details/69221324
- JavaScript高级程序设计学习笔记第八章--BOM
1.间歇调用和超时调用: 超时调用:需要使用 window 对象的 setTimeout()方法,它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒).其中,第一个参数可以 ...
- 有两种分别用<bgsound>和<embed></embed>标签,当用<embed>插入背景音乐时可以设置宽度和高度为0,隐藏播放器。
<bgsound>: <bgsound> 是用来插入背景音乐,但只适用于 ie,其参数设定不多.如下 <bgsound src="your.mid" ...
- UVaLive 4256 Salesmen (简单DP)
题意:给一个无向连通图,和一个序列,修改尽量少的数,使得相邻两个数要么相等,要么相邻. 析:dp[i][j] 表示第 i 个数改成 j 时满足条件.然后就很容易了. 代码如下: #pragma com ...
- WordPress博客搭建指南
WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统.WordPress具有插件架构和模板系统.Alexa排行前100万的网站中有超过16.7%的网站使用WordPre ...
- vim配置----YouCompleteMe配置
YouCompleteMe是一个功能极强的自动补全插件,安装这个插件折磨了我好久,找了很多博客查看都无果,最后还是感谢stack overflow.和其它的一些插件相比,YCM能够基于语法来给出相应的 ...
- 无法加载MainifestResourceTransformer
Cannot load implementation hint 'org.apache.maven.plugins.shade.resource.MainifestResourceTransforme ...