码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #466 (Div. 2)

时间:2018-02-25 19:01:59      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:ide   body   ace   技术   for   turn   div   不同   i++   

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)

标签:ide   body   ace   技术   for   turn   div   不同   i++   

原文地址:https://www.cnblogs.com/xyleo/p/8469775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!