ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF1719B Mathematical Circus

2022-08-27 11:05:04  阅读:159  来源: 互联网

标签:Mathematical right Circus mid times 偶数 pmod4 CF1719B left


题链:cf luogu

分类讨论思想。

Description

把 \(1\) 到 \(n\) 共 \(n\) 个整数分成 \(\frac{n}{2}\) 对有序数对 \(\left(a_i, b_i\right)\),则对于 \(\forall \left(a_i, b_i\right), 4\mid(a_i+k)\times b_i\)。问合法方案是否存在,若存在给出一组合法方案。

Analysis

既然是与被 \(4\) 整除有关,那么我们可以对 \(4\) 这个数进行分析。

\[4=4\times 1=1\times 4=2\times 2 \]

即三种情况,简记为:\(p\times 4q\),\(4p\times q\),\(2p\times 2q\)。

显然可以使所有 \(x\left(4\mid x,x\in \left[1,n\right],x\in\mathbb{Z}\right)\) 尽量放在 \(b\) 的位置,\(a\) 选择奇数,此时方案一定最优,共能匹配 \(\frac{n}{2}\) 个数字。也就是说还剩 \(\frac{n}{2}\) 没有完成匹配,其中有一半奇数,一半偶数(\(4x+2\) 型)。

对于剩余的 \(\frac{n}{2}\) 个数,我们考虑通过 \(a+k\) 或 \(b\) 与 \(a+k\) 配合使被 \(4\) 整除,此时我们需要对 \(k\) 的性质进行讨论。

  1. \(4\mid k\),加 \(k\) 之后对 \(\left(a+k\right)\times b\pmod4\) 无任何影响,即一定无法匹配;
  2. \(k\equiv2\pmod4\):使 \(b\) 为偶数即 \(a\equiv2\pmod4\),此时 \(4\mid \left(a+k\right)\);
  3. \(k\equiv1\pmod4\) 或 \(k\equiv3\pmod4\),使 \(a\) 为奇数,\(b\) 为偶数,一定可以配成偶数 \(\times\) 偶数 的形式,此时可被 \(4\) 整除。

Code

代码细节较多。具体解释见注释。

#include <stdio.h>
int n, k;
int main(void) {
    int t; for (scanf("%d", &t); t--; ) {
        scanf("%d %d", &n, &k); //读入
        if (k % 4 == 0) puts("NO"); //NO 情况特判
        else {
            puts("YES");
            if (k & 1) { //k%4==2,使a%4==2
                for (int i = 1; i <= n; i += 2)
                    printf("%d %d\n", i, i + 1);
            }   
            else { //k 为奇数,使 a 为奇,b 为偶
                for (int i = 3; i <= n; i += 4)
                    printf("%d %d\n", i, i + 1);
                for (int i = 2; i <= n; i += 4)
                    printf("%d %d\n", i, i - 1);
                putchar('\n');
            }
        }
    }
    return 0;
}

The end. Thanks.

(一键三连

标签:Mathematical,right,Circus,mid,times,偶数,pmod4,CF1719B,left
来源: https://www.cnblogs.com/dry-ice/p/cf1719b.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有