July 16th 模拟赛C T3 圆周舞蹈 Solution
空降题目处
点我点我点我
Description:
熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞。由于没有严格的教育,奶牛们之间的间隔不一致。
奶牛想知道两只最远的奶牛到底隔了多远。奶牛A到奶牛B的距离为A顺时针走和逆时针走,到达B的较短路程。告诉你相邻两个奶牛间的距离,请你告诉奶牛两只最远的奶牛到底隔了多远。
Input
第一行一个整数N,表示有N只奶牛。(2<=N<=100000)。
接下来2~N+1行,第i行有一个数,表示第i-1头奶牛顺时针到第i头奶牛的距离。(1<=距离<=maxlongint,距离和<=maxlongint)
第N+1行的数表示第N头奶牛顺时针到第1头奶牛的距离。
Output
一行,表示最大距离。
Solution
S S为环的长度.
若点AA到点 B B的一边距离为XX,则另一边距离为 S−X S-X.
若 X<S−X X,则 X<S2 X.
所以 max(X)<S2 \max\left(X\right)
利用前缀和,二分位置.
Program
C++
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;int n,s,ans,r;
long long t[200001];int FF(int l,int r,int q);int main()
{scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%lld",&t[i]);s+=t[i];t[i]+=t[i-1];}for (int i=1;i<=n;i++)t[i+n]=t[i]+s;for (int i=1;i<=2*n;i++){r=abs(s/2-FF(1,i-1,t[i]));ans=max(ans,s/2-r);}printf("%d\n",ans);
}int FF(int l,int r,int q)
{if (l>=r)return q-t[l];int m=(l+r)/2;if (q-t[m]<=s/2)return FF(l,m,q);elsereturn FF(m+1,r,q);
}
Pascal
usesmath;varn,s,ans,r,i:longint;t:array [0..200000] of int64;function FF(l,r,q:longint):longint;
varm:longint;beginif l>=r thenexit(q-t[l]);m:=(l+r) div 2;if (q-t[m]<=s div 2) thenexit(FF(l,m,q))elseexit(FF(m+1,r,q));end;beginreadln(n);for i:=1 to n dobeginread(t[i]);inc(s,t[i]);inc(t[i],t[i-1]);end;for i:=1 to n dot[i+n]:=t[i]+s;for i:=1 to n*2 dobeginr:=abs(s div 2-FF(1,i-1,t[i]));ans:=max(ans,s div 2-r);end;writeln(ans);end.
July 16th 模拟赛C T3 圆周舞蹈 Solution相关推荐
- July 16th 模拟赛C T4 奶牛排队 Solution
空降题目处 点我点我点我 Description: 奶牛在熊大妈的带领下排成了一条直队. 显然,不同的奶牛身高不一定相同..... 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮 ...
- July 14th 模拟赛C T3 灌水 Solution
空降题目处 点我点我点我 Description: 学生都很喜欢灌水,第一天只有Alice给她的每个朋友灌了一次水,从第二天开始,所有学生(包括Alice)将会有规律地去灌水: •如果前一天被灌了奇数 ...
- July 16th 模拟赛C T1 竞赛排名 Solution
空降题目处 点我点我点我 Description: Input 输入文件为compe.in.文件的第一行为参赛总人数N(1<=N<=100),从第二行到第N行依次为编号1到编号N的选手的成 ...
- July 16th 模拟赛C T2 奶牛晒衣服 Solution
空降题目处 点我点我点我 Description: 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负 ...
- 洛谷noip 模拟赛 day1 T3
T7983 大芳的逆行板载 题目背景 大芳有一个不太好的习惯:在车里养青蛙.青蛙在一个n厘米(11n毫米s)的Van♂杆子上跳来跳去.她时常盯着青蛙看,以至于突然逆行不得不开始躲交叉弹.有一天他突发奇 ...
- 省选模拟赛Day7 T3 随便乱走
题意: 一个n个点的环,当你在i号点时有Pi/2的概率走向(i%n+1)号点,有Pi/2的概率走向((i-2+n)%n+1)号点,有(1-pi)的概率永远停下,动态修改Pi,多次询问从i号点出发走的距 ...
- 模拟赛01 T3 盖房子
题面 http://zhengruioi.com/problem/248 题解 三重容斥(说是两重也行吧) 我们来看题目的约束 ①有k个位置不能放(k≤8) ②每行每列至少一个 ③正负对角线至少一个 ...
- 备战Noip2018模拟赛3(B组) T2 Dance 开场舞蹈
10月3日备战Noip2018模拟赛3(B组) T2 Dance 开场舞蹈 题目描述 在全世界人民的期盼下,2008年北京奥林匹克运动会终于隆重召开了! 为了展示中华民族博大精深的优秀传统文化,负责开 ...
- 2017.6.11 校内模拟赛
题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小cop ...
最新文章
- 简单好用!利用Spring AOP技术10分钟实现一个读写分离方案
- 手机淘宝轻店业务 Serverless 研发模式升级实践
- 大数据时代的电信运营商的机遇
- SQL的各种连接(cross join、inner join、full join)的用法理解
- 随机化算法-----模拟退火
- Software optimization resources
- javaScript第七天(2)
- Tree Cutting POJ - 2378(树形DP)
- react 子传参父_react子父传参有几种方法?
- 第二十三届高交会闭幕 奇安信三项产品获评“优秀产品奖”
- cocos creator入门教程(十八)—— creator_Director对象与资源加载策略
- 10个提供Logo设计灵感的创意网站
- S5P4418 使用SD卡启动Android系统
- 饥荒控制台输入没用_饥荒联机版代码为什么没效 怎么用怎么输入
- 计时函数clock()与数据类型clock_t
- AT89C51(Atmel)芯片制作简易的频率计
- 系统类毕业设计思路以及各种遇到问题的解决办法
- POJ 3264 Balanced Lineup
- Mybatis-Plus eq、ne、gt、lt、ge、le分别代表含义
- openstack-horizon
热门文章
- html+css简单的实现360搜索引擎首页面
- 微信小程序wxml如何判断字符串中汉语某字符_微信小程序开发经典案例解析“嗨兔儿”...
- navicat导入excel表中数据出错问题
- java集合框架的练习之斗地主洗牌发牌的模拟(升级版)
- 使用OSM通过ArcGis显示城市线路地图
- IOS使用高德地图获取当前位置信息
- 转载 测试面试问题总汇
- Nginx目录结构、编译参数、状态码概述
- Springsecurity+cas整合后无法单点登出
- 数字先锋 | 天翼云牵手中能融合