題意
https://vjudge.net/problem/CodeForces-1251B
n個01串,可以任意交換任意兩個字串的字符任意次,問最多能有多少個回文串,
思路
分類討論可以發現規律:
當串長度l為奇數,插入任意<=l個1都可以;
當串長度l為偶數,插入偶數個1才行,
所以對于每個串,都可以插入偶數個1,當1的個數為奇數時,說明必須有一個奇數串,如果沒有那么肯定有一個串不回文(1的個數為奇數的偶數長度的串),
代碼
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int N=200005;
const int mod=1e9+7;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
int main()
{
std::ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int sum=0,cnt=0;
for(int i=0;i<n;i++)
{
string s;
cin>>s;
int l=s.length();
for(int i=0;i<l;i++)
{
if(s[i]=='1')
sum++;
}
if(l&1)
cnt++;
}
if(sum%2==0||(sum%2==1&&cnt>0))
cout<<n<<endl;
else
cout<<n-1<<endl;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/127182.html
標籤:其他
