A题很水,只要四个边满足四边形的条件即可,即三个较短边的长度小于第四条边,我们只要把题目所给三边相加再减去1即可。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
int t;
scanf("%d",&t);
while(t--){
ll a[3],sum=0;
for(int i=0;i<3;i++){
scanf("%lld",&a[i]);
sum+=a[i];
}
printf("%lld\n",sum-1);
}
}
B题稍微有点难度,我最开始没认真看题想的太简单了,以为只要每个数都等于平均值就行,后来Test 2就WA了。
最后认真看了一下题:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[100][100];
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,m;
scanf("%d %d",&n,&m);
ll sum=0,ave,cnt=0;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%lld",&a[i][j]);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
ll s[3];
s[0]=a[i][j],s[1]=a[i][m-j+1],s[2]=a[n-i+1][j];
sort(s,s+3);
a[i][j]=a[i][m-j+1]=a[n-i+1][j]=s[1];
cnt+=s[2]-s[0];//正确的写法
//cnt+=abs(s[0]-s[1])+abs(s[1]-s[2]);
// 第一次偷懒没有化简试子导致超时
//害得我改了好几次,最后才改到这
}
}
printf("%lld\n",cnt);
}
}