赛时代码:
#include
using namespace std;
#define int long long
const int maxn=1e5+5;
int b[maxn],n,cnt1,cnt2;
bool qwq[maxn];
//b数组无序
signed main()
{
int t;cin>>t;
while(t--)
{
cin>>n;
memset(b,0,sizeof(b));cnt1=0;cnt2=0;
for(int i=1;i<=n;i++)
{
cin>>b[i];
if(b[i]>0) cnt1++;
else cnt2++;
}
int tmp=cnt1;
for(int i=1;i<=n;i++)
{
if(i<=cnt1) cout<<i<<' ';
else tmp--,cout<<tmp<<' ';
}
cout<<endl;
// int tmp=abs(cnt1-cnt2);
for(int i=1;i<=n;i++)
{
if(i%2==1&&i<min(cnt1,cnt2)*2) cout<<1<<' ';
else if(i%2==0&&i<=min(cnt1,cnt2)*2) cout<<0<<' ';
else cout<<i-min(cnt1,cnt2)*2<<' ';
}
cout<<endl;
}
return 0;
}
设已知 x x x 只豚鼠的性别,未知 y y y 只豚鼠的性别。
#include
using namespace std;
const int maxn=1e5+5;
int b[maxn];
void solve()
{
int n;cin>>n;
for(int i=1;i<=n;i++) cin>>b[i];
int x=0,y=0,ans=0;
for(int i=1;i<=n;i++)
{
if(b[i]==1) y++;
else x+=y,y=0;
if(!x) ans=max(ans,y+x);
else ans=max(ans,y+x/2+1);
}
cout<<ans<<endl;
}
int main()
{
int t;cin>>t;
while(t--) solve();
return 0;
}