Codeforces 939C - Convenient For Everybody
2018-03-03
http://codeforces.com/problemset/problem/939/C
2 seconds
256 megabytes
standard input
standard output
In distant future on Earth day lasts for n hours and that's why there are n timezones. Local times in adjacent timezones differ by one hour. For describing local time, hours numbers from 1 to n are used, i.e. there is no time "0 hours", instead of it "n hours" is used. When local time in the 1-st timezone is 1 hour, local time in the i-th timezone is i hours.
Some online programming contests platform wants to conduct a contest that lasts for an hour in such a way that its beginning coincides with beginning of some hour (in all time zones). The platform knows, that there are ai people from i-th timezone who want to participate in the contest. Each person will participate if and only if the contest starts no earlier than s hours 00 minutes local time and ends not later than f hours 00 minutes local time. Values s and f are equal for all time zones. If the contest starts at f hours 00 minutes local time, the person won't participate in it.
Help platform select such an hour, that the number of people who will participate in the contest is maximum.
The first line contains a single integer n (2 ≤ n ≤ 100 000) — the number of hours in day.
The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 10 000), where ai is the number of people in the i-th timezone who want to participate in the contest.
The third line contains two space-separated integers s and f (1 ≤ s < f ≤ n).
Output a single integer — the time of the beginning of the contest (in the first timezone local time), such that the number of participants will be maximum possible. If there are many answers, output the smallest among them.
3
1 2 3
1 3
3
5
1 2 3 4 1
1 3
4
In the first example, it's optimal to start competition at 3 hours (in first timezone). In this case, it will be 1 hour in the second timezone and 2 hours in the third timezone. Only one person from the first timezone won't participate.
In second example only people from the third and the fourth timezones will participate.
题意:在未来,一天一共有n个小时,也一共有n个时区,每两个相邻的时区之间差是一个小时。现在有一些网站想要举办在线编程比赛,希望有最多的人能参与。因为人们以自己的时区的时间为标准,只参加在s点以后(包括s点)开始的且在f点之前(包括f点)的比赛。每场比赛的时间为1个小时,让你求出比赛在什么时间开始会有最多的人参加,输出以第一个时区的时间为标准的开始时间。
感想:错了好几次,主要问题在 数据类型不对导致的RE、TLE以及一个坑点:没考虑到可以是后面的时区可以比开头的时区要早一点开始比赛。其他还有一些问题在cf提交的地方看。关于TLE的反思,以后做题先计算复杂度再做题,不要想当然。有一些循环是可以变化为等式降低复杂度的,就不用写得跟之前一样麻烦了...
Code
#include<string.h>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
#define MAX 0x3f3f3f3f
#define fi first
#define se second
#define LL long long
int a[];
int main()
{
int n,s,f;
int ans;
/*int ans,p1,p2,p3,p4;*/
while(cin>>n)
{
for(int i=;i<=n;i++)
cin>>a[i]; cin>>s>>f;
int t=f-s;
LL maxn=; //
for(int i=;i<=t;i++)
maxn+=a[i];
/*int flag=1;*/
LL cc=maxn; //
/*p2=s*/;
ans=s; //这个地方又是一个坑点,错在样例28
for(int i=;i<=n-t+;i++)
{
cc=cc-a[i-]+a[i+t-];
if(cc>maxn)
{ maxn=cc;
/*flag=i;
p1=(flag-1)%n;
p2=s;
while(p1--)
{
if(p2==1)
p2=n;
else
p2--;
}
ans=p2;*/
ans=s-i+;
if(ans<=)
ans+=n;
}
else if(cc==maxn)
{ /*p3=(i-1)%n;
p4=s;
while(p3--)
{
if(p4==1)
p4=n;
else
p4--;
}
if(p4<p2)
{ans=p4;p2=p4;}*/
int tmp=s-i+;
if(tmp<=) tmp+=n; //其实修正的时候 加n减n结合前面的等式是等价的
ans=min(ans,tmp); }
}
int q=;
for(int i=n+;i<=n+t-;i++)
{
a[i]=a[q++];
}
for(int i=n-t+;i<=n+t-;i++)
{
cc=cc-a[i-]+a[i+t-];
if(cc>maxn)
{
maxn=cc;
/* flag=i;
p1=(n+1)-flag;
p2=s;
while(p1--)
{
if(p2==n)
p2=1;
else
p2++;
}
ans=p2;*/
ans=s+n-i+;
if(ans>n)
ans-=n; }
else if(cc==maxn)
{
/*flag=i;
p3=n+1-flag;
p4=s;
while(p3--)
{
if(p4==n)
p4=1;
else
p4++;
}
if(p4<p2)
{ans=p4;p4=p2;} */
int tmp=s+n-i+;
if(tmp>n) tmp-=n;
if(tmp<ans) ans=tmp;
} }
cout<<ans<<endl;
}
}
其他人的写法
Codeforces 939C - Convenient For Everybody的更多相关文章
- Spring Boot Reference Guide
Spring Boot Reference Guide Authors Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, ...
- Codeforces Round #464 (Div. 2) C. Convenient For Everybody
C. Convenient For Everybody time limit per test2 seconds memory limit per test256 megabytes Problem ...
- Codeforces Beta Round #2 A,B,C
A. Winner time limit per test:1 second memory limit per test:64 megabytes input:standard input outpu ...
- Login Verification CodeForces - 928A (实现)
When registering in a social network, users are allowed to create their own convenient login to make ...
- Codeforces Round #102 (Div. 1) A. Help Farmer 暴力分解
A. Help Farmer 题目连接: http://www.codeforces.com/contest/142/problem/A Description Once upon a time in ...
- Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
地址:http://codeforces.com/contest/811/problem/D 题目: D. Vladik and Favorite Game time limit per test 2 ...
- Codeforces Beta Round #2 C. Commentator problem 模拟退火
C. Commentator problem 题目连接: http://www.codeforces.com/contest/2/problem/C Description The Olympic G ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
随机推荐
- Nestjs 设置静态文件,public
Docs: https://docs.nestjs.com/techniques/mvc main.js import { NestFactory } from '@nestjs/core'; imp ...
- Oracle管理常用查询语句
1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom dba_tablespaces ...
- Angel - MemoryDataBlock - angel.task.estimize.sample.number
angel.task.estimize.sample.number val validData = new MemoryDataBlock[LabeledData](isVali) trainData ...
- css学习_css伪元素的本质
1.伪元素的本质(插入了一个元素(行内元素/标签/盒子) 案例1: 案例2:
- Eclipse 00: 常用快捷键
Eclipse常用快捷键 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2 显示搜索 ...
- Java开发想尝试大数据和数据挖掘,如何规划学习?
大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司. 现在已 ...
- SpringMVC Maven项目 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServle
今天在搭建SpringMVC开发框架时,遇到了一个问题,尽管在maven的POM.xml文件中配置了项目所依赖的jar包,但在启动项目是已然报错如下: 信息: Starting Servlet Eng ...
- 如何在一个电脑上使用两个github账号
问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个S ...
- Python加密保护解决方案
防止代码反编译,高强度加密保护exe或pyc文件 产品简介 Python语言写的程序无需编译成二进制文件代码,可以直接从源代码运行程序.在计算机内部,Python解释器把源代码转换成字节码的中间形式, ...
- eclipse打包jar包
项目右键 选择Export 选择java文件夹 选择 JAR file选择包,类,选择导出路径然后 Finish