Codeforces Round #621 (Div. 1 + Div. 2)
程序员文章站
2022-07-14 15:17:17
...
A. Cow and Haybales
给定数列a,数列长度n、天数d。每天可以把一个搬到相邻的一个。问第一个最大数值。
贪心:数列从下标从2向n遍历,每次将第i堆能够搬到第一堆的最大个数tt是剩余天数d/(i-1),同时记得与min取min。而每次付出的代价是tt×(i-1)
int a[maxn];
int main(){
int t=ird();
while(t--){
int n=ird();
int d=ird();
for(int i=1;i<=n;i++){
a[i]=ird();
}
int pre=0;
for(int i=2;i<=n;i++){
int tt=min(a[i],d/(i-1));
if(d>=tt*(i-1)){
a[1]+=tt;
d-=tt*(i-1);
}
else
break;
}
cout<<a[1]<<endl;
}
return 0;
B. Cow and Friend
x轴上给定一点(x,0),要求从(0,0)跳到给定点x。跳跃的长度从给定的数列种选择。求最小跳跃次数。
贪心:如果x不整除a[i]就相当于构造三角形答案+1,否则就直接直线到达x/a[i]。
注意如果答案是1而又不是直接到达的情况,就比如(13,0),a[i]=15,那么答案++,最后sort一下输出最小值
int a[maxn];
int main(){
int t=ird();
while(t--){
int n=ird();
int x=ird();
for(int i=1;i<=n;i++){
a[i]=ird();
int tt=a[i];
a[i]=x/a[i]+(x%a[i]!=0);
if(tt>x)
a[i]++;
//cout<<a[i]<<endl;
}
sort(a+1,a+1+n);
cout<<a[1]<<endl;
}
return 0;
}
C. Cow and Message
给定字符串s,要求下标为等差数列的子串的个数的最大值
因为有等差数列限制,所以最大值必然在含有一个或者两个字符的子串中(最初想法我也不知道对不对了反正最后想到了前缀和也没有什么gou用)
- 统计单个字符最大值
-
仅找当前字符和前面其他字符形成的字符串所产生的最大值
看看看看知道前缀和有啥用????在线憨憨真的有被气道o都不知道多想想找????气死我了我怎么这么笨
string s;
LL a[30][30];
LL ans=0;
int main(){
cin>>s;
int len=s.length();
map<char,LL> mp;
for(int i=0;i<len;i++){
for(int j=0;j<26;j++){
a[s[i]-'a'][j]+=mp[j+'a'];
ans=max(ans,a[s[i]-'a'][j]);
}
mp[s[i]]++;
ans=max(ans,mp[s[i]]);
}
cout<<ans<<endl;
return 0;
}
D. Cow and Fields
待补
推荐阅读
-
Codeforces Round #595 (Div. 3)D1D2 贪心 STL
-
Codeforces Round #655 (Div. 2) A. Omkar and Completion
-
Codeforces Round #656 (Div. 3)D. a-Good String(递归+dfs)
-
Codeforces Round #487 (Div. 2)
-
CodeForces 1324 - Codeforces Round #627 (Div. 3)
-
Codeforces Round #649 (Div. 2)-B. Most socially-distanced subsequence(思维)
-
Codeforces Round #649 (Div. 2) C-Ehab and Prefix MEXs
-
Educational Codeforces Round 71 (Rated for Div. 2)E. XOR Guessing
-
Codeforces Round #659 (Div. 2) A. Common Prefixes(字符串,思维)
-
Codeforces Round #610 (Div. 2)