zoukankan      html  css  js  c++  java
  • 【习题 8-20 UVA-1620】Lazy Susan

    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    会发现,如果把连续4个数字进行一次翻转的话。 假设这连续的4个数字的逆序数为x; 那么翻转过后,逆序数就会变成6-x; (最多6个逆序数,现在翻转了

    那么这4个逆序数的变化为6-2x
    显然变化值为一个偶数。

    而1..l-1和r+1..n这一部分它们的逆序数不受l..r这段翻转的影响。

    因此我们进行一次翻转操作。
    不会让序列的奇偶性发生变化。

    因此如果
    a[1]..a[n]
    a[2]..a[n]a[1]
    a[3]...a[n]a[1]a[2]
    (因为是个圆 所以有多个序列
    这些序列里面只要有一个它的逆序数个数为偶数那么就可以.否则不行

    找一下规律会发现,n如果为偶数的话,总是存在这么一个逆序数为偶数的序列的。
    n如果为奇数的话,只要其中有一个序列逆序数为奇数,那么其他的n-1个序列的逆序数必然也都是 奇数

    因此只要判断一下输入的那一个序列的逆序数是否为偶数就好

    如果为这个逆序数为偶数,或者n为偶数。那么肯定有解,否则一定无解。
    (可以省去枚举序列的起点那一层循环了

    【代码】

    #include <bits/stdc++.h>
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define all(x) x.begin(),x.end()
    #define pb push_back
    #define ls l,mid,rt<<1
    #define rs mid+1,r,rt<<1
    using namespace std;
    
    const double pi = acos(-1);
    const int dx[4] = {0,0,1,-1};
    const int dy[4] = {1,-1,0,0};
    const int N = 500;
    
    int n,a[N+10],cnt;
    
    void solve(){
        cin >> n;
        for (int i = 1;i <= n;i++) cin >> a[i];
        cnt = 0;
        for (int i = 1;i <= n;i++){
            for (int j = 1;j < i;j++)
                if (a[j]>a[i]){
                    cnt++;
                }
        }
        if (cnt%2==0 || (n%2==0)){
            cout<<"possible"<<endl;
        }else{
            cout<<"impossible"<<endl;
        }
    }
    
    int main(){
    	#ifdef LOCAL_DEFINE
    	    freopen("rush_in.txt", "r", stdin);
    	#endif
    	ios::sync_with_stdio(0),cin.tie(0);
        int T;
        cin >> T;
        while(T--){
            solve();
        }
    	return 0;
    }
    
    
  • 相关阅读:
    flask 使用 SQLAlchemy 的两种方式
    python package 的两种组织方式
    sqlalchemy 的 raw sql 方式使用示例
    Git高速入门——Git安装、创建版本号库以及经常使用命令
    mariadb 10.1.10安装
    Android studio中导入第三方类库
    怎样获取oracle dbid
    宇宙中为何存在“黑洞”?
    CSDN日报20170401 ——《假设你还是“程序猿”,我劝你别创业!》
    clang-format中文出错
  • 原文地址:https://www.cnblogs.com/AWCXV/p/8465993.html
Copyright © 2011-2022 走看看