NOIP2012模拟试题【圆圈舞蹈( circle)
2.圆圈舞蹈( circle)
【问题描述】
熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞。由于没有严格的教育,奶牛们之间的间隔不一致。
奶牛想知道两只最远的奶牛到底隔了多远。奶牛A到B的距离为A顺时针走和逆时针走,到达B的较短路程。告诉你相邻两个奶牛间的距离,请你告诉奶牛两只最远的奶牛
到底隔了多远。
【输入】
第一行一个整数N,表示有N只奶牛。(2≤N≤100000)
接下来2~N+1行,第I行有一个数,表示第I-1头奶牛顺时针到第I头奶牛的距离。(1≤距离≤maxlongint,距离和≤maxlongint)
第N+l行的数表示第N头奶牛顺时针到第1头奶牛的距离。
【输出】
一行,表示最大距离。
【样例】
Circle.in
5
1
2
3
4
5
Circle.out
7
【样例解析】
Circle.out所有奶牛I到J之间的距离和到达方式(顺为顺时针,逆为逆时针)如下:
|
I\J |
1 |
2 |
3 |
4 |
5 |
|
1 |
O |
1 (顺) |
3(顺) |
6(顺) |
5(逆) |
|
2 |
1(逆) |
O |
2(顺) |
5(顺) |
6(逆) |
|
3 |
3(逆) |
2(逆) |
0 |
3(顺) |
7(顺) |
|
4 |
6(逆) |
5(逆) |
3(逆) |
0 |
4(顺) |
|
5 |
5(顺) |
6(顺) |
7(逆) |
4(逆) |
0 |
所以,最远的两头奶牛为3到5,距离是7。
分析样例(手写样例)时我们发现,最远距离总是接近圆圈周长的一半,对此我们可以证明
因为奶牛A到B的距离为A顺时针走(dis)和逆时针走(ddis),到达B的较短路程,逆时针走(ddis)等于圆圈周长(sum)减去顺时针走的路程(dis),所以最远距离即求 min(sum-dis,dis) 的最大值
什么时候最大?
显然,当dis最接近sum/2时。
因此我们只需要求得每个点的最远距离即可解答=v=
下面是寻找每个点的最远距离的过程
(蓝字表示dis)
首先是1号点(o゜▽゜)o☆
当到达4号点时,dis=6;当到达5号点时,dis=10;
因此又引出一个细节:因为我们寻找的总是折中的点,所以要比较它和它相邻的点分别到起点的距离;
距离1号点最远的是4号点

当寻找起点为2号点的最远距离时,简单的方法是将起点顺时针移动,如果距离未达到sum/2,就将终点也顺时针移动

寻找完后,dis=6-1+4=9,距离是6,与1号点的最远距离比较,最远距离不变依然为6
重复上述步骤,最终最远距离为起点是3号点,终点是5号点的距离,即7
(っ*´Д`)っ下面放出代码
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
int n;
long long sum;
long long l[];
long long dis;
void work()
{
int u=;
int v=;
dis=;
long long ans=;
int j;
for(int i=;i<=n;i++)//寻找距离一号点最远的点
{
dis+=l[i-];//***
if(dis>sum/)
{
j=i;//记录这个点
break;
}
}
ans=max(ans,min(sum-dis,dis));//因为我们寻找的是折中的点,所以需要比较两次,即它和它相邻的点;
ans=max(ans,min(dis-l[j-],sum-dis+l[j-]));
for(int i=;i<=n;i++)
{
dis=dis-l[i-];//寻找第i个点的最远距离,将起点从上一个点顺时针移动
while(dis<sum/)
{
dis+=l[j+];
j++;//终点也顺时针移动
}
ans=max(ans,min(sum-dis,dis));//与上面同理
ans=max(ans,min(sum-dis+l[j-],dis-l[j-]));
}
printf("%lld ",ans);
}
void read()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&l[i]);
sum+=l[i];//记录圆圈周长
}
}
int main()
{
freopen("circle.in","r",stdin);
freopen("circle.out","w",stdout);
//clock_t start=clock();
read();
work();
//clock_t end=clock();
//printf("%d %d",start,end);
return ;
}
F$PVDSR85.png)
F$PVDSR85.png)
F$PVDSR85.png)
NOIP2012模拟试题【圆圈舞蹈( circle)的更多相关文章
- NOIP2012模拟试题【奶牛晒衣服】
1.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任 ...
- NOIP2012模拟试题 121105【奶牛排队(tahort)
3.奶牛排队(tahort) [ 问题描述] 奶牛在熊大妈的带领下排成了一条直队. 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的 ...
- 冲刺NOIP2015提高组复赛模拟试题(五)2.道路修建
2.道路修建 描述 Description liouzhou_101最悲痛的回忆就是NOI2011的道路修建,当时开了系统堆栈,结果无限RE… 出于某种报复心理,就把那题神奇了一下: 在 Z星球上有N ...
- 模拟试题C
模拟试题C 一.单项选择题(2′*14 =28′) 1.双线性法向插值法(Phong Shading)的优点是( ) A)法向计算精确 B)高光域准确 C)对光源和视点没有限制 D)速度较快 2.用编 ...
- 模拟试题B
模拟试题B 一.单项选择题(2′*8 =16′) 1.灰度等级为256级,分辨率为2048*1024的显示器,至少需要的帧缓存容量为( ) A)512KB B)1MB C)2MB D)3MB 2.在多 ...
- 模拟试题A
模拟试题A 一.单项选择题(2′*12=24′) 1.下面各种坐标变换中,会产生变换前后维度的改变的是( ) A)建模变换 B)观察变换 C)投影变换 D)视口变换 2.下列描述深度缓冲消隐算法的特点 ...
- CCF 模拟试题——出现次数最多的数 官方答案解析及自己写的正确答案
前几天知道的CCF计算机职业资格认证考试,觉得好像比软考含金量高一些,就去了解了一下,做了模拟试题中的 “出现次数最多的数” 这道题,我的算法和官方答案算法不同,个人觉得觉得官方的好一点,没那么繁琐, ...
- 【NOIP2012模拟8.7】JZOJ2020年8月8日提高组T1 奶牛编号
[NOIP2012模拟8.7]JZOJ2020年8月8日提高组T1 奶牛编号 题目 作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛. 然而,他有点迷信,标识奶牛用的二进制数字 ...
- 9.29noip模拟试题
环上的游戏(cycle) 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这 ...
随机推荐
- autolisp 列表 resbuf
有以下 list : (1 2 3 (4 5 6) "Properties" (("id" . 3) ("name" . "hel ...
- The 5th tip of DB Query Analyzer
The 5th tip of DB Query Analyzer Ma Genfeng (Guangdong UnitollServices incorporated, G ...
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头 疼,Objective-C的代码在语法上和Java, C++有着很大的区别, ...
- 深入理解JVM : Java垃圾收集器
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾收集器都可能会有很大差 ...
- myeclipse中自己手动配置maven
第一步,配置myeclipse的jdk,因为myeclipse默认的是运行在jre之上,而maven是在jdk之上 第二步,配置maven:
- SQL Server数据恢复——日志备份
太坑了,我把数据给删了 “大坑啊,数据被我误删了.”从事数据库相关工作的过程中,我想应该很多人会有过和我一样的遭遇吧?尤其是在进行update或者delete操作的时候,忘记了where条件.这些毁灭 ...
- Java多线程并发编程之原子变量与非阻塞同步机制
1.非阻塞算法 非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 -- 例如比较和交换.非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞 ...
- PCL点云库增加自定义数据类型
#include <pcl/filters/passthrough.h> #include <pcl/filters/impl/passthrough.hpp> // the ...
- 出现No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here异常
问题描述: public void save(BaseEntity baseEntity) { Session session = null; try { session = currentSessi ...
- JUnit报空指针错误,控制台不报任何错误
解决方法:1. 在测试类的beforeClass方法上加try-catch块 2. 添加main方法,里面添加beforeClass();