https://vjudge.net/problem/CodeForces-1251Bios
n個01串,能夠任意交換任意兩個字符串的字符任意次,問最多能有多少個迴文串。c++
分類討論能夠發現規律:spa
當串長度l爲奇數,插入任意<=l個1均可以;.net
當串長度l爲偶數,插入偶數個1才行。blog
因此對於每一個串,均可以插入偶數個1,當1的個數爲奇數時,說明必須有一個奇數串,若是沒有那麼確定有一個串不迴文(1的個數爲奇數的偶數長度的串)。ci
#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; }