本文主要是介绍Codeforces Round 952 (Div. 4)(A~E题解),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这次比较遗憾的就是第五个,本来直接计算就过了,结果存到一个数组里面一直都在超时,导致这次第五题都没做出来,确实小丑了
话不多说直接看题
A. Creating Words
题解:这题就直接交换一下就OK,没有别的事。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
char a[5];
char b[5];signed main()
{cin>>t;while(t--){cin>>a;cin>>b;char s=a[0];char t=b[0];a[0]=t;b[0]=s;for(int i=0;i<=2;i++)cout<<a[i];cout<<" ";for(int i=0;i<=2;i++)cout<<b[i];cout<<"\n";}return 0;
}
B. Maximum Multiple Sum
题意,这题就是说不超过n的某个数的所有倍数之和最大(我当时以为是所有数加起来不超过n,所以浪费了一点时间) ,题目也是很水,循环一遍直接过了
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n;
int x;
int maxn=0;
signed main()
{cin>>t;while(t--){maxn=0;cin>>n;for(int i=2;i<=n;i++){int flag=1;int ans=0;while(flag*i<=n){ans+=flag*i;flag++;}if(ans>maxn){maxn=ans;x=i;}}cout<<x<<"\n";}return 0;
}
C. Good Prefixes
题解:类似于一种模拟栈的思想吧, 反正对每次加进去的数进行判断即可,同时也设置一个数是所有数的总和,如果新来的这个数是最大值,那么直接和之前的总和比较,看是否相等,然后对于不是的话,就是之前的总和加上这个数,是否等于最大的数
然后模拟一遍直接过
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n;
int a[200005];
int pre[200005];
int cnt=0;
int maxn=0;
signed main()
{cin>>t;while(t--){maxn=0;cnt=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];pre[i]=pre[i-1]+a[i];}for(int i=1;i<=n;i++){if(a[i]>maxn)maxn=a[i];if(pre[i]-maxn==maxn)cnt++;}cout<<cnt<<"\n";}return 0;
}
D. Manhattan Circle
题解:这题也比较水,找出哪一行和那一列有最多的‘#’,然后输出行和列的下标即可,但是我这个菜鸡还是一开始看错数据了,用数组存的,结果数据爆缸了,然后小小修改了十分钟才修改完毕直接过的
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m;
int numl[200005];
signed main()
{cin>>t;while(t--){cin>>n>>m;memset(numl,0,sizeof(numl));int flagh=0,flagl=0;int maxnh=0,maxnl=0;char s;for(int i=1;i<=n;i++){int cnt=0;for(int j=1;j<=m;j++){cin>>s;if(s=='#'){cnt++;numl[j]++;}if(cnt>maxnh){maxnh=cnt;flagh=i;}}}for(int i=1;i<=m;i++){if(maxnl<numl[i]){maxnl=numl[i];flagl=i;}}cout<<flagh<<" "<<flagl<<"\n";}return 0;
}
E. Secret Box
题意:其实问的就是在一中状态下能放置的位置最多是多少,其实也是类似于组合数的问题,但是唯一要注意的就是边找边更新,不要存进数组再更新,因为我已经错在这个地方了,看了别的巨佬的代码才发现我这个地方出问题了,我是存进数组去更新的
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t, x, y, z, v;
signed main()
{cin>>t;while (t--){int cnt = 0;cin>>x>>y>>z>>v;int k;int ans=0;for(int i=1;i<=x;i++){for(int j=1;j<=y;j++){if(v%(i*j)==0&&v/(i*j)<=z){cnt++;k=v/(i*j);ans = max(ans, (x - i + 1) * (y - j + 1) * (z - k + 1));}}}cout<<ans<<"\n";}return 0;
}
这篇关于Codeforces Round 952 (Div. 4)(A~E题解)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!