Codeforces Round #621 (Div. 1 + Div. 2)
Posted kanoon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #621 (Div. 1 + Div. 2)相关的知识,希望对你有一定的参考价值。
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<<" "; } int main() { int t;cin>>t; while(t--) solve(); return 0; }
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<<" "; else cout<<cnt+2<<" "; } int main() { int t;cin>>t; while(t--) solve(); return 0; }
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))<<" "; return 0; }
D. Cow and Fields
还是不太明白为什么要前后缀距离作差排序,待填。
以上是关于Codeforces Round #621 (Div. 1 + Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #621 (Div. 1 + Div. 2) 题解
Codeforces Round #621 (Div. 1 + Div. 2)D dij(思维)
Codeforces Round #621 (Div. 1 + Div. 2)A-C简单记录
Codeforces Round #621 (Div. 1 + Div. 2) D