A
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,k;
cin>>a>>b>>k;
if(a>=b*k)cout<<"good\n";
else cout<<"bad\n";
}
B
先看不能操作的时候就是 1 ,ai石子变为1需要ai-1,求和为总消耗w=sum(ai)-n
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
int a[n];
int sum=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
}
if((sum+n)%2==0)cout<<"sweet\n";
else cout<<"gui\n";
return 0;
}
C
看数据范围 直接模拟
(最开始写的时候没注意 从前往后交换了,后面wa了才看到要把最后放到前面)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,m,x,y;
cin>>n>>m>>x>>y;
vector<string> g(n);
for(int i=0;i<n;i++)cin>>g[i];
int p,q;
cin>>p>>q;
pair<int,int>pr[q];
for(int i=0;i<q;i++)cin>>pr[i].first>>pr[i].second;
while(p--)
{
for(int i=0;i<q;i++)
{
int op=pr[i].first,z=pr[i].second-1;
if(op==1)
{
for(int j=m-1;j>=1;j--)swap(g[z][j],g[z][j-1]);
}
else
{
for(int j=n-1;j>=1;j--)swap(g[j][z],g[j-1][z]);
}
//for(string s:g)cout<<s<<endl;
}
}
cout<<g[x-1][y-1]<<endl;
return 0;
}
D
难绷 思维没到
其实和b类似,您只需要看操作后是怎样的,这里操作后数组的和不会变,就可以抽象为将sum(ai)分割,找sum因子就行,sum>=i*n我没直接写for里,先存set然后筛也能过
题目好名字()
#include "bits/stdc++.h"
#define int long long
using namespace std;
signed main() {
int n;
cin >> n;
int sum = 0;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
sum += x;
}
int cnt = 0;
for (int i = 1; sum / i >= n; i++) {
if (sum % i == 0) {
cnt++;
}
}
if(n!=1)cout << cnt << endl;
else cout << 1 << endl;
}
E
题目好懂
前缀和维护一下
考虑贪心,map记录前缀和%后的余数
用两个指针指向前面和后面的位置查看 if : (sum[i]-sum[p])%k0||mp[sum[i]%k]1代表可以分割下去
然后指针继续往后跑就行
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n,k;
cin>>n>>k;
int a[n+1];
int pre[n+1];
pre[0]=0;
for(int i=1;i<=n;i++){
cin>>a[i];
//a[i]=a[i]%k;
pre[i]=pre[i-1]+a[i];
}
int j=0,cnt=0;
map<int,int>mp;
for(int i=1;i<=n;i++){
if((pre[i]-pre[j])%k==0||mp[pre[i]%k]==1){
cnt++;
j=i;
mp.clear();
}else{
mp[pre[i]%k]=1;
}
}
cout<<cnt<<endl;
}
G
前缀和预处理一下,然后遍历找*找到一个就一直找一个方向的就行了,我把代码hang出来了已经神志有点不清了,因为我要补下一场的了........
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
int n,m;
cin>>n>>m;
vector<vector<int>> a(n+2,vector<int>(m+2,0)),pre(a);
for(int i=1;i<=n;++i) {
string s;
cin>>s;
for(int j=1;j<=m;++j) {
if(s[j-1]=='.') {
a[i][j]=0;
} else {
a[i][j]=1;
}
pre[i][j]=pre[i][j-1]+a[i][j];
}
}
int cnt=0;
for(int i=1;i<=n;++i) {
for(int j=1;j<=m;++j) {
if(a[i][j]==0) {
continue;
}
int lx=i,ly=j,rx=i,ry=j;
for(int k=1;k<=500;++k) {
lx++,ly--;
rx++;ry++;
if(lx<=0||lx>n||rx<=0||rx>n) {
break;
}
if(ly<0||ly>m||ry<0||ry>m) {
break;
}
if(a[lx][ly]!=1||a[rx][ry]!=1) {
break;
}
if(pre[rx][ry]-pre[lx][ly-1]==ry-ly+1) {
cnt++;
}
}
}
}
cout<<cnt<<endl;
}
标签:std,pre,int,sum,cin,寒假,main
From: https://www.cnblogs.com/godcy/p/18037143