Codefroces 939 C Convenient For Everybody

Posted Schenker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codefroces 939 C Convenient For Everybody相关的知识,希望对你有一定的参考价值。

939 C

题意:若干年以后地球会变成n个时区, 为了方便计时, 每个时区的时间从1:00开始到n:00点结束, 现在将要举行一场c赛, 每个时区内都有ai个人参加,并且比赛开始时间不早于当地时间s:00, 比赛结束时间不晚于(或等于)f:00才会参加,现在求比赛的开始时间(第一时区的当地时间),使得参加人数最多,如果有多个答案,输出时间最小的那个。

题解:我们可以看作当地时间在[s:00,f-1:00]时间内的人会参加比赛,然后每次增加一个小时就删除最右边那个区间的人数,加上最左边区间的人数,再进行比较就好了。

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define fi first
 5 #define se second
 6 #define lson l,m,rt<<1
 7 #define rson m+1,r,rt<<1|1
 8 #define max3(a,b,c) max(a,max(b,c))
 9 const int INF = 0x3f3f3f3f;
10 typedef pair<int,int> pll;
11 const int N = 1e5+5;
12 ll s, f;
13 ll a[N];
14 int n;
15 ll ans , id = 1;
16 int main()
17 {
18     ios::sync_with_stdio(false);
19     cin.tie(0);
20     cout.tie(0);
21     cin >> n;
22     for(int i = 1; i <= n; i++)
23         cin >> a[i];
24     cin >> s >> f;
25     f--;
26     int l = s, r = f;
27     ll num = 0;
28     for(int i = s; i <= f; i++)
29         num += a[i];
30     ans = num;
31     for(int i = 2; i <= n; i++)
32     {
33         num -= a[r];
34         r--;
35         l--;
36         if(l == 0) l = n;
37         if(r == 0) r = n;
38         num += a[l];
39         if(num > ans)
40         {
41             ans = num;
42             id = i;
43         }
44     }
45     cout << id << endl;
46     return 0;
47 }

 

以上是关于Codefroces 939 C Convenient For Everybody的主要内容,如果未能解决你的问题,请参考以下文章

CodeFroces-- 514.div2.C-Sequence Transformation

Codefroces 366 C Dima and Salad(dp)

CodeForces - 939ALove Triangle

Codefroces 852 G. Bathroom terminal

Codefroces1077F2. Pictures with Kittens (hard version)

Codefroces 675 B. Restoring Painting(数学推公式)