题解:AT_arc211_a [ARC211A] Banned X 2
蒟蒻的第一篇 ARC T1 题解!
其实很简单,情况也比较少。
注意到如果只有一对相加等于
例如:
0 1 0 0 0 0 0 3 0这组数据符合条件,因为2 和8 相加等于10 。(即使数量不相等也算一对)0 1 0 0 2 0 0 3 0这组数据不符合条件,因为出现了5 。
为什么这种情况答案是
再注意到
注意小细节即可。
ARC 此题数据太水了,放过了一些错解,所以 ARC 数据过了不一定能代表你的代码是对的。我的错解就被放过了。
Code
#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
#define pb push_back
#define eb emplace_back
#define mkp(x,y) make_pair((x),(y))
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define fir first
#define sec second
#define il inline
#define re register
#define rep(x,st,en) for(int x=st;x<=en;++x)
#define down(x,st,en) for(int x=st;x>=en;--x)
//#define mp(x,y) make_pair((x),(y))
//#define int long long
using namespace std;
int T;
int a[10];
signed main(){
scanf("%d",&T);
while(T--){
ll sum=0;
rep(i,1,9){
scanf("%d",a+i);
if(i!=5)sum+=a[i];//题解里设的n
}
int cnt=0;
rep(i,1,4){
if(a[i]&&a[10-i])++cnt;
else if(a[i]||a[10-i])cnt=114514;//有其他数字,不满足条件
}
if(a[5])cnt=114514;//上面只循环到4,判断一下5
ll ans=0;
if(cnt==1)++ans,++sum;//似乎++sum没什么用?
if(a[5]>sum+1)ans+=a[5]-sum-1;//5的个数过多
printf("%lld\n",ans);//输出
}
return 0;//结束
}
/*
由于ARC数据太水了,给几组曾经让我的代码出错的hack
Hacks:
#1
1
0 1 0 0 0 0 1 3 0
0
#2
1
0 0 0 1 1 1 0 0 0
0
*/
AC Submission
感谢 @clo201111 hack 了我曾经的错解。