源代码:ACM/OpenjudgeNow/Codeforces at master · abmcar/ACM (github.com)

更好的阅读体验: 折跃坐标

碎碎念:不亏是俄罗斯场+二次元出题人,只能说头像越粉出题越狠

A. Madoka and Math Dad

题目大意:

思路:

我们可以发现对于没有连续的数当中, 21212121 是和最小且最大的数,我们可以把21分为一组,问题转变为剩余部分

  • 对于 n m o d 3 = = 0 n~mod~3 == 0 n mod 3==0 的情况 直接 21212121即可
  • 对于 n m o d 3 = = 1 n~mod~3 == 1 n mod 3==1 的情况 把1放到开头, 121212121
  • 对于 n m o d 3 = = 2 n~mod~3 == 2 n mod 3==2 的情况 把2放到末尾, 212121212

代码:

void solution()
{cin >> n;int tt = n;if (n <= 2){cout << n << endl;return;}int fir;if (n % 3 == 0)fir = 2;if (n % 3 == 1)fir = 1;if (n % 3 == 2)fir = 2;while (n > 0){cout << fir;n = n - fir;if (fir == 1)fir = 2;elsefir = 1;}cout << endl;
}

B. Madoka and the Elegant Gift

题目大意:

思路:

可以发现如果存在相交情况,必定存在在一共2*2的方格内,有3个黑1个白的情况

因为枚举每一个2*2的方格,判断时候存在这种情况

代码:

void solution()
{cin >> n >> m;vector<string> bd(n + 2);vector<int> nums[Maxn];for (int i = 1; i <= n; i++){nums[i].resize(n + 2);cin >> bd[i];bd[i] = '-' + bd[i];}bool ok = true;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (bd[i][j] == '1'){if (i + 1 <= n && j + 1 <= m)if (bd[i][j + 1] == '1' && bd[i + 1][j] == '1' && bd[i + 1][j + 1] == '0')ok = false;if (i + 1 <= n && j + 1 <= m)if (bd[i][j + 1] == '1' && bd[i + 1][j] == '0' && bd[i + 1][j + 1] == '1')ok = false;if (i + 1 <= n && j + 1 <= m)if (bd[i][j + 1] == '0' && bd[i + 1][j] == '1' && bd[i + 1][j + 1] == '1')ok = false;}else{if (i + 1 <= n && j + 1 <= m)if (bd[i][j + 1] == '1' && bd[i + 1][j] == '1' && bd[i + 1][j + 1] == '1')ok = false;}}}if (ok)cout << "YES" << endl;elsecout << "NO" << endl;
}

C. Madoka and Childish Pranks

题目大意:

思路:

发现题目没有要求使用最小次数,且次数小于n*m,因此我们可以对于每一个黑块,选择他和他上边或者左边的方块作为一共操作

只需要保证他上边和左边的方块在他之后被染色即可

因为倒着枚举每一个方块,进行染色, 由于是倒着染色, 黑色方块的左边和上边一定是白色

最后判断一下是否还存在黑色方块即可

代码:

void solution()
{cin >> n >> m;vector<string> bd(n + 1);vector<vector<int>> newBd(n + 1);for (int i = 1; i <= n; i++){cin >> bd[i];newBd[i].resize(m + 1);bd[i] = '-' + bd[i];}vector<pair<int, int>> opt1, opt2;for (int i = n; i >= 1; i--)for (int j = m; j >= 1; j--){if (bd[i][j] == '1'){if (j - 1 >= 1 && newBd[i][j - 1] == 0){opt1.push_back({i, j - 1});opt2.push_back({i, j});newBd[i][j] = 1;bd[i][j] = '0';}else if (i - 1 >= 1 && newBd[i - 1][j] == 0){opt1.push_back({i - 1, j});opt2.push_back({i, j});newBd[i][j] = 1;bd[i][j] = '0';}}}bool ok = true;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)if (bd[i][j] == '1')ok = false;if (!ok){cout << "-1" << endl;return;}cout << opt1.size() << endl;for (int i = 0; i < opt1.size(); i++)cout << opt1[i].first << " " << opt1[i].second << " " << opt2[i].first << " " << opt2[i].second << endl;
}

D. Madoka and the Best School in Russia

题目大意:

思路:

这里采用分类讨论的方法

我们可以知道对于 good 数 g = k 1 ∗ d g = k_1 * d g=k1​∗d

对于beatiful 数 b = k 2 ∗ d 2 且 k 2 m o d d ≠ 0 b = k_2*d^2 且 k_2 ~mod~d \neq 0 b=k2​∗d2且k2​ mod d​=0

对于答案所求的数 x = b 1 ∗ b 2 ∗ b 3 ∗ . . . ∗ b n = k ∗ d p x = b_1*b_2*b_3*...*b_n = k * d^p x=b1​∗b2​∗b3​∗...∗bn​=k∗dp

我们分情况讨论:

  • 如果 p < = 1 p <= 1 p<=1 不可能有2种情况 直接排除

  • 如果 k 不是质数, 则有 x = ( a ∗ d ) ∗ ( b ∗ d ) ∗ d p − 2 = k ∗ d p x = (a*d)*(b*d)*d^{p-2} = k*d^p x=(a∗d)∗(b∗d)∗dp−2=k∗dp 由两种情况 满足

  • 如果 k 是质数

    • 如果 d 是质数,则不可再分 不满足
    • 如果 d 不是质数
      • 如果 p = = 2 p == 2 p==2 不可再分
      • 如果 p = = 3 p == 3 p==3
        • 如果 d = a ∗ b 且 ( k ∗ a m o d d ≠ 0 或 k ∗ b m o d d ≠ 0 ) d = a*b 且 (k*a~mod~d\neq0 或 k*b~mod~d\neq0) d=a∗b且(k∗a mod d​=0或k∗b mod d​=0) 则可以额外分为 x = ( a ∗ k ∗ d ) ∗ ( b ∗ d ) x = (a*k*d)*(b*d) x=(a∗k∗d)∗(b∗d)
        • 否则 不可再分
      • 如果 p > = 4 p >=4 p>=4 则可以额外分为 x = ( a ∗ d ) ∗ ( b ∗ d ) ∗ ( k ∗ d ) ∗ d p − 4 x = (a*d)*(b*d)*(k*d)*d^{p-4} x=(a∗d)∗(b∗d)∗(k∗d)∗dp−4

由此,我们进行分情况判断即可

代码:

void solution()
{cin >> n >> d;int cnt = 0;while (n % d == 0){cnt++;n = n / d;}bool ok = false;if (cnt >= 2){if (!isPrime(n))ok = true;else{if (!isPrime(d))if (cnt >= 4)ok = true;if (cnt == 3){for (int i = 2; i * i <= d; i++){if (d % i)continue;int t1 = i;int t2 = d / i;if (n * t1 % d || n * t2 % d)ok = true;}}}}if (ok)cout << "YES" << endl;elsecout << "NO" << endl;
}

Codeforces Round #777 (Div. 2) (A-D题解)相关推荐

  1. 【记录CF】Codeforces Round #777 (Div. 2) A~C 题解

    目录 杂谈 A. Madoka and Math Dad B. Madoka and the Elegant Gift C. Madoka and Childish Pranks 杂谈 又是一场离谱掉 ...

  2. Codeforces Round #777 (Div. 2) 简训

    Codeforces Round #777 (Div. 2) 简训 导语 涉及的知识点 题目 A Madoka and Math Dad B Madoka and the Elegant Gift C ...

  3. Codeforces Round #198 (Div. 2)A,B题解

    Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...

  4. Codeforces Round #774 (Div. 2)E题题解

    Codeforces Round #774 (Div. 2) E. Power Board 题目陈述 有一个n×m(1≤n,m≤106)n\times m(1\le n,m\le10^6)n×m(1≤ ...

  5. Codeforces Round #777 (Div. 2) 题解

    Codeforces #777 题解 这次带上了大佬前来验题xs 公开大佬珍贵的代码资源供参考 TOC A.Madoka and Math Dad B.Madoka and the Elegant G ...

  6. Codeforces Round #777 (Div. 2) ABCD题解

    A-Madoka and Math Dad 题目大意: 一个十进制数字(不含0),各个位上的和为n(n<=1000),且相邻位没有相同的数字,问这个数字最大可以是多少. 思路: 显然要使这个数字 ...

  7. Codeforces Round #640 (Div. 4)(ABCDEG题解)

    文章目录 A. Sum of Round Numbers B - Same Parity Summands C - K-th Not Divisible by n D - Alice, Bob and ...

  8. Codeforces Round #635 (Div. 2)(A~D)题解

    Codeforces #635 A~D A.Ichihime and Triangle B.Kana and Dragon Quest game C.Linova and Kingdom D.Xeni ...

  9. Educational Codeforces Round 110 div.2 A~F题解

    视频讲解:BV1254y137Rn A. Fair Playoff 题目大意 有 444 位选手参加比赛,第 iii 位选手的水平为 si(1≤si≤100)s_i(1 \leq s_i \leq 1 ...

最新文章

  1. 科技/IT:2019 年 Q3 表现最佳和最差的企业
  2. Polycom开启“创新协作+”时代 全新解决方案闪耀京城
  3. Android 读取xml转json,将XML转换为Android中的JSON对象
  4. ROS中catkin_make编译输出的可执行文件在哪?
  5. 闲鱼商品理解和选品,究竟是怎么做的?
  6. hbuilder打包ios_ios开发证书的作用及申请步骤
  7. iphone视图放大_如何将iPhone用作放大镜
  8. Sublime2 配置python 和 c++
  9. matlab netcdf,Matlab读取Netcdf文件
  10. mysql ignore用法_php – 在某些条件下在一列上使用MySQL IGNORE
  11. cocos2d的单例
  12. [Guitar self-practising] 【吉他练习王-节奏练习】曲目1 基本扫弦节奏练习
  13. mac卸载mysql
  14. PHP: ThinkPHP获取客户端IP地址
  15. 手持式频谱分析仪怎么选择
  16. C++实现求解逻辑表达式的真值表、主析取范式、主合取范式
  17. DART语言学习整理
  18. 恒凯USB数据采集卡在国产麒麟操作系统下的应用(一)环境设置、采集卡驱动安装及C语言采集应用
  19. 服务器怎么格式化系统盘,如何格式化服务器
  20. mybatisplus-代码级别的自动生成创建丶更新时间

热门文章

  1. flex builder 4
  2. 计算机侧边栏不显示桌面,侧边栏不见了?Win7小工具桌面随意放
  3. 基于C语言的G代码解释器,G-Code
  4. PHP使用vld扩展查看opcodes
  5. 【计算机组成】计算机组成原理大纲含思维导图
  6. 执行pytest生成测试报告遇到的问题
  7. JS实现身份证的验证
  8. redis分布式事务脏数据问题
  9. 关于AD如何按1:1比例保存成PDF的具体做法
  10. channel 的底层原理