题解:P14584 点击平衡球
题目大意:
给定
解题思路:
考虑到 简单的做法,只要枚举出第一次到第三次分别选择什么样的球的类型,然后进行模拟即可。
屎山代码如下:
#include<bits/stdc++.h>
using namespace std;
struct sbb {
int a,b,c;
int tp;//个人变量名爱好,勿喷
} sb[105];
int n;
int ans=5;
int main() {
cin>>n;
for(int i=1; i<=n; i++)cin>>sb[i].a>>sb[i].b>>sb[i].c;
int nans=1;//模拟即可,对a,b,c全排列
for(int i=1; i<=n; i++)sb[i].tp=0;//清空标记(是否有被选择过)
for(int i=1; i<=n; i++)if(sb[i].a==1)sb[i].tp=1;
int cc=nans;
for(int i=1; i<=n; i++)if(sb[i].b==1&&sb[i].tp==0 )nans++,sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].c==1&&sb[i].tp==0 ) {
nans+=(nans==cc);//只要加第一次,剩下的是打标记
break;
}
ans=min(ans,nans);
nans=1;
for(int i=1; i<=n; i++)sb[i].tp=0;
for(int i=1; i<=n; i++)if(sb[i].a==1)sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].c==1&&sb[i].tp==0 )nans+=(nans==cc),sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].b==1&&sb[i].tp==0 ) {
nans+=(nans==cc);
break;
}
ans=min(ans,nans);
nans=1;
for(int i=1; i<=n; i++)sb[i].tp=0;
for(int i=1; i<=n; i++)if(sb[i].b==1)sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].a==1&&sb[i].tp==0 )nans+=(nans==cc),sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].c==1&&sb[i].tp==0 ) {
nans+=(nans==cc);
break;
}
ans=min(ans,nans);
nans=1;
for(int i=1; i<=n; i++)sb[i].tp=0;
for(int i=1; i<=n; i++)if(sb[i].b==1)sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].c==1&&sb[i].tp==0 )nans+=(nans==cc),sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].a==1&&sb[i].tp==0 ) {
nans+=(nans==cc);
break;
}
ans=min(ans,nans);
nans=1;
for(int i=1; i<=n; i++)sb[i].tp=0;
for(int i=1; i<=n; i++)if(sb[i].c==1)sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].a==1&&sb[i].tp==0 )nans+=(nans==cc),sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].b==1&&sb[i].tp==0 ) {
nans+=(nans==cc);
break;
}
ans=min(ans,nans);
nans=1;
for(int i=1; i<=n; i++)sb[i].tp=0;
for(int i=1; i<=n; i++)if(sb[i].c==1)sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].b==1&&sb[i].tp==0 )nans+=(nans==cc),sb[i].tp=1;
cc=nans;
for(int i=1; i<=n; i++)if(sb[i].a==1&&sb[i].tp==0 ) {
nans+=(nans==cc);
break;
}
ans=min(ans,nans);
cout<<ans;
return 0;
}