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

Codeforces Round #621 (Div. 1 + Div. 2)

时间:2020-03-25 23:44:53      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:amp   c++   pen   test   ESS   --   force   close   多少   

Codeforces Round #621 (Div. 1 + Div. 2)

A. Cow and Haybales

贪心,移到第一堆的代价即为与第一堆的距离。

技术图片
#include <bits/stdc++.h>
using namespace std;
void solve(){
    int n,d;cin>>n>>d;
    int sum;cin>>sum;
    for(int i=1;i<n;i++){
        int t;cin>>t;
        if(d>0){
            sum+=min(t,d/i);
            d-=t*i;
        }
    }
    cout<<sum<<"\n";
}
int main()
{
    int t;cin>>t;
    while(t--)
        solve();
    return 0;
}
View Code

B. Cow and Friend

贪心,考虑能跳的最远距离mx,2*mx内最多跳两次,再加上移动到2*mx内最少需要多少次。

技术图片
#include <bits/stdc++.h>
using namespace std;
void solve(){
    int n,x;cin>>n>>x;
    int a[n];for(int &i:a) cin>>i;
    int mx=*max_element(a,a+n);
    int dis=x,cnt=0;
    if(dis>2*mx) cnt+=(dis-2*mx-1)/mx+1;
    dis-=cnt*mx;
    if(find(a,a+n,dis)!=a+n) cout<<cnt+1<<"\n";
    else cout<<cnt+2<<"\n";
}
int main()
{
    int t;cin>>t;
    while(t--)
        solve();
    return 0;
}
View Code

C. Cow and Message

长为3的组合不会多于1或2的,更长同理,所以只需考虑长为1和2的最多组合。

技术图片
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    string s;cin>>s;
    ll arr1[26]={0},arr2[26][26]={0};
    for(char c:s){
        int i=c-a;
        for(int j=0;j<26;j++)
            arr2[j][i]+=arr1[j];
        ++arr1[i];
    }
    cout<<max(*max_element(arr1,arr1+26),*max_element(*arr2,*arr2+26*26))<<"\n";
    return 0;
}
View Code

D. Cow and Fields

还是不太明白为什么要前后缀距离作差排序,待填。

 

Codeforces Round #621 (Div. 1 + Div. 2)

标签:amp   c++   pen   test   ESS   --   force   close   多少   

原文地址:https://www.cnblogs.com/Kanoon/p/12571204.html

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