这道题就是让我们求一只地鼠的远亲,所以我们可以用枚举的方法来作,只要判断一下d[i][j]是否等于d[a][b]如果等于那么求(i-a)* (i-a)+(b-j)*(b-j)的最大值。
#include<bits/stdc++.h>
using namespace std;
long long n,m,d[55][55];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>d[i][j];
}
}
for(int i=1;i<=n;i++){//// 枚举每一只地鼠
for(int j=1;j<=m;j++){
long long x=0;
for(int a=1;a<=n;a++){
for(int b=1;b<=m;b++){
if(d[i][j]==d[a][b]{//判断他是否为亲戚
long long l=(i-a)*(i-a)+(b-j)*(b-j);
x=max(l,x);//求最远的亲戚
}
}
}
cout<<x<<" ";
}
cout<<endl;
}
return 0;
}
这道题就是求小鱼游了多少米,所以我们可以用for循环从n到n+m来依次判断如果%7==0或者%7==6,那么代表他是星期6和星期7,然后跳过,否x+=250。
#include<bits/stdc++.h>
using namespace std;
long long n,m,x;
int main(){
cin>>n>>m;
for(int i=n;i<=n+m-1;i++){
if(i%7==6||i%7==0){//判断i是否是星期6或星期7
continue;//跳过此次循环
}
x+=250;
}
cout<<x;
return 0;
}
这道题就是让我们求津津能开心多少天,这里每块金牌会使得我持续高兴T天,但是如果在这T又获得了一块奖牌,我们高兴的天数是不会累加的,是重新计算持续开心T天所以我们答案用+=min(m,a[i+1]-a[i])。
#include<bits/stdc++.h>
using namespace std;
long long n,m,x,a[200005],f,ans;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int ans=m;//最后一天一定会开心m天
for(int i=1;i<n;i++){
ans+=min(m,a[i+1]-a[i]);//因为第i块金牌的时间为a[i + 1] - a[i]
}
cout<<ans;
return 0;
}
这道题就是让我们判断最多能切割出多少个他特别喜欢的字符串 ,所以我们只要用if判断一下是否是他特别喜欢的字符串然后把ans++,i+=2,就可以了。
#include<bits/stdc++.h>
using namespace std;
string s,a;
long long ans=0;
int main(){
cin>>s;
for(int i=0;i<s.size();i++){
a=s.substr(i,3);
if(a=="lqb"||a=="lbq"||a=="qlb"||a=="qbl"||a=="blq"||a=="bql"){判断是否是他喜欢的字符串
ans++;
i+=2;//把它搞下来
}
}
cout<<ans;
return 0;
}
这道题就是让我们判断一下我们背包里的最大值-最小值是否<k,所以我们可以用前缀和来做,注意用先把他sort从小到大排序再求前缀和,
#include<bits/stdc++.h>
using namespace std;
long long n,a[10005],sum[10005],k,ans;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);//从小到大排序
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+a[i];//求前缀和
}
for(int i=1;i<=n;i++){//最小值
for(int j=i;j<=n;j++){//最大值
if(a[j]-a[i]<=k){
long long s=sum[j]-sum[i-1];//求i到j的和
ans=max(ans,s);//判断最大值
}
}
}
cout<<ans;
return 0;
}