1028 Flip and Shift (思維題)
阿新 • • 發佈:2018-12-22
思路:當球球總數是奇數的時候,某個球是可以通過有限次轉換到任何地方的,也就是說無論如何都可以擺成想要的樣子。
當球球總數是偶數的時候,由於是和+2位置的球球交換,所以會一半的位置是到不了的,所以會出現不行的情況。那麼這種情況怎麼求呢?看奇數位置和偶數位置上黑球個數。如果二者之差的絕對值<=1,那麼肯定是可以擺成的,不然就不行啦。
程式碼:
#include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<string> #include<iostream> #include<map> #include<vector> #include<set> #include<queue> using namespace std; int n; int a[33]; int main() { scanf("%d",&n); while(n--) { int x; scanf("%d",&x); int a=0,b=0; for(int i=1;i<=x;i++) { int tmp; scanf("%d",&tmp); if(tmp==1) { if(i%2) { a++; } else { b++; } } } if(abs(a-b)<=1||x%2) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } } return 0; }