Codeforces Round #466 (Div. 2)

Posted xyleo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #466 (Div. 2)相关的知识,希望对你有一定的参考价值。

D.Alena and The Heater

暴力一波(找规律,前后连续两位不同的是关键)

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,l=-1e9,r=1e9,a[100010];
 4 string b;
 5 int main()
 6 {
 7     cin>>n;for(int i=0;i<n;i++)cin>>a[i];
 8     cin>>b;
 9     for(int i=4;i<n;i++)if(b[i]!=b[i-1])
10     {
11         if(b[i-1]==b[i-2]&&b[i-2]==b[i-3]&&b[i-3]==b[i-4])
12         {
13             for(int j=i-4;j<=i;j++)
14             {
15                 if(b[i-1]==0)l=max(l,a[j]+1);else r=min(r,a[j]-1);
16             }
17         }
18     }
19     cout<<l<<" "<<r<<endl;
20     return 0;
21 } 
View Code

E.Cashback

 

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MOD=1e9+7;
 4 int mi[400010],n,c;
 5 long long sum,dp[100010];
 6 void build(int i,int l,int r)
 7 {
 8     if(l==r)
 9     {
10         scanf("%d",&mi[i]);
11         sum+=mi[i];
12         return;
13     }
14     int md=l+r>>1;
15     build(i<<1,l,md);
16     build(i<<1|1,md+1,r);
17     mi[i]=min(mi[i<<1],mi[i<<1|1]);
18 }
19 int query(int i,int l,int r,int x,int y)
20 {
21     if(x<=l&&r<=y)return mi[i];
22     int md=l+r>>1;
23     int res1=MOD,res2=MOD;
24     if(x<=md)res1=query(i<<1,l,md,x,y);
25     if(md<y)res2=query(i<<1|1,md+1,r,x,y);
26     return min(res1,res2);
27 }
28 int main()
29 {
30     scanf("%d%d",&n,&c);
31     build(1,1,n);
32     for(int i=c;i<=n;i++)
33     {
34         int res=query(1,1,n,i-c+1,i);
35         dp[i]=max(dp[i-1],dp[i-c]+res);
36     }
37     printf("%lld",sum-dp[n]);
38     return 0;
39 }
View Code

 

以上是关于Codeforces Round #466 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #466 (Div. 2)

Codeforces Round #466 (Div. 2) Problem A - E

Codeforces Round #466 (Div. 2)

Codeforces Round #466 (Div. 2) 题解

Codeforces Round #466 (Div. 2) ---e

小蒟蒻初次CF滚粗+爆炸记 (Codeforces Round #466 Div.2)