zoukankan      html  css  js  c++  java
  • HDU 6048

    /*
    HDU 6048 - Puzzle [ 思维,结论 ]  |  2017 Multi-University Training Contest 2
    题意:
    	类似华容道的问题, N*M 的矩阵中N*M-1个元素按一定要求打乱,每次可以把一个和空格有公共边的块和空格交换
    	问能否还原局面:从上到下从左到右,依次填 1,2,3,… 右下角为空。
    分析:
    	结论1:将原矩阵看作从左到右从上到下的数列,任意操作不改变 逆序对数量的奇偶性
    	结论2:任意局面一定能还原到 除了最右下角2*2方格中的3个数字,剩下的数字全都移到要求位置
    	结论3:最右下角2*2方格的局面中只有序对数量的奇偶性相同的可互达
    	最终结论:数列逆序对为偶数则YES,反之为NO
    
    	由于每次隔P个拿,故当某轮桌上只有num个数字时,第x+1次取第 xp+1 个,它前面有xp个数字,被拿掉了x个
    	故对于这一轮的第x+1个数字对逆序对的贡献为 x*(p-1),可以看出是等差数列
    */
    #include <bits/stdc++.h>
    using namespace std;
    int t, n, m, p;
    int main()
    {
        scanf("%d", &t);
        while (t--)
        {
            scanf("%d%d%d", &n, &m, &p);
            int ans = 0, num = n*m-1;
            while (num > p)
            {
                int x = (num-1)/p;
                ans += x*(p-1) * (x+1) / 2;
                num -= x+1;
            }
            if (ans&1) puts("NO");
            else puts("YES");
        }
    }
    

      

    题解证明很详细

    *更新了代码,原代码TLE- -,num <= p 的时候就要退出。。

    我自倾杯,君且随意
  • 相关阅读:
    [HDU3247]Resource Archiver
    [POJ2243]考研路茫茫——单词情结
    [POJ2778]DNA Sequence
    [bzoj3670] [Noi2014]动物园
    [bzoj3786] 星系探索
    [bzoj1493] [NOI2007]项链工厂
    postgreSQL的设置自增主键初始值
    postgreSQL绝对值
    GitHub上新建或删除仓库Repository
    Intellij Idea上传本地项目到Git
  • 原文地址:https://www.cnblogs.com/nicetomeetu/p/7262608.html
Copyright © 2011-2022 走看看