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 的时候就要退出。。

    我自倾杯,君且随意
  • 相关阅读:
    CentOS7 PXE安装批量安装操作系统
    004_MySQL 主从配置
    CentOS 桥接网卡配置
    玩转 Jupyter Notebook (CentOS)
    搭建专属于自己的Leanote云笔记本
    wetty 安装(web+tty)
    wget命令详解
    linux 下find---xargs以及find--- -exec结合使用
    Linux 交换分区swap
    Linux 时区的修改
  • 原文地址:https://www.cnblogs.com/nicetomeetu/p/7262608.html
Copyright © 2011-2022 走看看