当前位置: 首页 > news >正文

Codeforces Round 1047 (Div. 3)

Codeforces Round 1047 (Div. 3)

Dashboard - Codeforces Round 1047 (Div. 3) - Codeforces

怎么 ABCDE 全是数学 / 数字游戏题。

CodeForces-2137A Collatz Conjecture

对一个 \(x\) 进行如下操作 \(k\) 次:

  • 如果 \(x\) 为偶数,则将其变为 \(x/2\)
  • 否则,令 \(x\) 变为 \(3x+1\)

给定最终的结果 \(y\),求初始的 \(x\)。若有多解,输出一种即可。

\(1\le T\le400\)\(1\le k,y\le20\)

直接输出 \(y\cdot2^k\) 即可。

CodeForces-2137B Fun Permutation

给定一个 \(1,2,\cdots,n\) 的排列 \(p\)。构造一个 \(1,2,\cdots,n\) 的排列 \(q\),使得 \(\gcd(p_i+q_i,p_{i+1}+q_{i+1})\ge3\) 对于任意 \(1\le i<n\) 都成立。

\(1\le T\le10^4\)\(2\le n,\sum n\le2\cdot10^5\)

\(n\) 的一个因数为 \(k\)\(k\ge3\)),那么可以将 \(1,2,\cdots,n\) 分成 \(n/k\) 组,每 \(k\) 个数为一组。

\(k\) 取模余数为 \(0\) 的,将其与其本身匹配;余数为 \(m\)\(1\le m<k\))的,将其与余数为 \(k-m\) 的匹配。

这样,每个数都有与其互相匹配的唯一的一个数,且二者的和为 \(k\) 的倍数。

\(q_i\) 赋值为与 \(p_i\) 匹配的数,故 \(p_i+q_i\) 一定为 \(k\) 的倍数。

特别地,如果 \(n=2\),则直接令 \(1\) 匹配 \(2\)\(2\) 匹配 \(1\) 即可。

题解区:构造 \(q_i=n+1-p_i\) 即可。

CodeForces-2137C Maximum Even Sum

给定整数 \(a,b\),进行任意次下面的操作:

  • 选择一个 \(b\) 的因数 \(k\),令 \((a,b)\) 变为 \((ak,b/k)\)

求出 \(a+b\) 的最大偶数值。\(1\le T\le10^4\)\(1\le a,b\le a\cdot b\le 10^{18}\)

奇数 + 奇数 或者 偶数 + 偶数 都可以凑成奇数。显然,\(ab\) 的质因数是守恒的。分类讨论:

  • 如果 \(a\) 为奇数:
    • 如果 \(b\) 为奇数:则二者均不可能变为偶数,故最大的 \(k\) 即为 \(b\),答案为 \(ab+1\)
    • 如果 \(b\) 为偶数:
      • 如果 \(b\)\(4\) 的倍数:则 \(b\) 可以分给 \(a\) 一个 \(2\),这样二者均变为偶数,故最大的 \(k\)\(b/2\),答案为 \(ab/2+2\)
      • 否则:无解,因为 \(a\)\(b\) 总有一个是奇数,另外一个是偶数。
  • 如果 \(a\) 为偶数:
    • \(b\) 一定需要为偶数,因此 \(b\) 为奇数则无解,\(b\) 为偶数则最大的 \(k\)\(b/2\),答案为 \(ab/2+2\)

由于限制了 \(a\cdot b\) 的范围,故不需要开 __int128

CodeForces-2137D Replace with Occurrences

对于一个长度为 \(n\) 的序列 \(a\),令 \(f(x)\) 表示 \(x\)\(a\) 中的出现次数。

给定一个长度为 \(n\) 的序列 \(b\),构造序列 \(a\),使得 \(1\le a_i\le n\)\(f(a_i)=b_i\)\(i=1,2,\cdots,n\)。若无解,输出 \(-1\)

\(1\le T\le10^4\)\(1\le n,\sum n\le2\cdot10^5\)\(1\le b_i\le n\)

贪心地进行构造。显然用来填充序列 \(a\) 的数字具体是什么值并不重要,重要的是 \(a_i\) 的出现次数一定等于 \(b_i\)

比如:

  • \(3\) 个数的 \(b_i\)\(3\),那么在对应的 \(a_i\) 填入相同的 \(3\) 个数;
  • \(4\) 个数的 \(b_i\)\(2\),那么在对应的 \(a_i\) 填入 \(2\) 组数,每组包含 \(2\) 个相同的数,且各组之间不能重复。
    可以发现,\(b_i\) 的出现次数一定为 \(b_i\) 的倍数。

\(tot\) 表示当前用来填数的最大数是多少,\(num(c)\) 表示出现次数为 \(c\) 的数用什么填充,\(rem(c)\) 表示 \(num(c)\) 还剩多少个位置没填。

直接扫一遍 \(b\) 序列,填数过程如下:

  • 如果当前 \(rem(b_i)=0\),则用一个新的数来填:\(tot\) 加一,更新 \(num(b_i)\)\(tot\),并重置 \(rem(b_i)=b_i-1\)
  • 否则,填入 \(num(b_i)\),同时 \(rem(b_i)\) 减一。

最后验证合法性:如果存在 \(rem\) 不等于 \(0\),则说明有数没恰好填完,故不合法。每次至多 \(tot\) 加一,故使用的数不可能超过 \(n\)

Submission #337917883 - Codeforces

CodeForces-2137E Mexification

给定一个长度为 \(n\) 的序列 \(a\),和一个整数 \(k\)。进行 \(k\) 次下列操作:

  • 对所有下标 \(i\),在同一时刻令 \(a_i\) 变为 \(\operatorname{mex}\{a_1,a_2,\cdots,a_{i-1},a_{i+1},\cdots,a_n\}\)

\(k\) 次操作后 \(a\) 中元素的和。\(1\le T\le10^4\)\(2\le n,\sum n\le2\cdot10^5\)\(1\le k\le10^9\)\(0\le a_i\le n\)

模拟发现,经过 3 次以上操作,\(a\) 的值就会变成周期为 \(2\) 的循环。

证明:设排序后的序列 \(a\) 形如 \((0\times c_0,1\times c_1,\cdots)\),其中 \(x\times c_x\) 表示 \(x\) 重复 \(c_x\) 次。设 \(p\) 表示第一个 \(c_x=0\) 的数字 \(x\)

那么:

  • 对于小于 \(p\) 的所有 \(x\)
    • 如果 \(c_x=1\),那么把 \(x\) 去掉后的 mex 就是 \(x\)
    • 如果 \(c_x>1\),那么把一个 \(x\) 去掉后的 mex 就是 \(p\)
  • 对于大于 \(p\) 的所有 \(x\),把一个 \(x\) 去掉后的 mex 就是 \(p\)

因此第一次操作后的 \(a\) 变为 \(a_1=(\cdots,p\times c)\),其中 \(0,1,\cdots,p-1\) 中每个数出现 \(0\)\(1\) 次。

重复上述操作,第二次操作后变为 \(a_2=(0,1,\cdots,p'-1,p'\times c')\),其中 \(p'\)\(a_1\)\(0,1,\cdots,p-1,p+1\) 中第一个出现 \(0\) 次的,而 \(0,1,\cdots,p'-1\) 每个数恰好出现 \(1\) 次。

再重复上述操作,第三次操作后变为 \(a_3=(0,1,\cdots,p'-1,(p'+1)\times c')\),其中 \(0,1,\cdots,p'-1\) 每个数恰好出现 \(1\) 次。

再继续操作,不难发现 \(a_{2k}=a_2,a_{2k+1}=a_3\)\(k=2,3,\cdots\)

因此暴力模拟 \(k=1,2,3\) 的情况,然后 \(k\) 为偶数则等价于 \(k=2\),奇数则等价于 \(k=3\)

mex 序列的处理,可以根据上述证明中的做法直接 \(O(n)\) 求出。Submission #337641758 - Codeforces

CodeForces-2137F Prefix Maximum Invariance

定义:对于长度为 \(m\) 的两个序列 \(x,y\),设长度为 \(m\) 的序列 \(z\) 满足 \(\max\{x_1,\cdots,x_i\}=\max\{z_1,\cdots,z_i\}\)\(i=1,\cdots,m\),设 \(f(x,y)\) 表示 \(y\) 与任何 \(z\) 重合的位置数的最大值,即 \(f(x,y)=\max_z\{\sum_{i=1}^m[y_i=z_i]\}\)

给定两个长度为 \(n\) 的序列 \(a,b\),求 \(\sum_{l=1}^n\sum_{r=l}^nf(a[l..r],b[l..r])\)

\(1\le T\le10^4\)\(1\le n,\sum n\le2\cdot10^5\)\(1\le a_i,b_i\le2n\)

CodeForces-2137G Cry Me a River

A 和 B 在玩一个游戏,游戏在一个有向无环图上进行,其中节点为蓝色或红色。规则如下:

  • 指定一个起点 \(u\),A 和 B 轮流沿图中的有向边行动。
  • 如果到达了无出边的节点,则 A 胜利。
  • 如果到达了红色的节点,则 B 胜利。
  • 如果到达的节点既是红色的,又没有出边,则 B 胜利。

给定一个 \(n\) 节点 \(m\) 条边的有向无环图,初始所有节点为蓝色。进行 \(q\) 次操作,操作分为两种:

  1. 1 u:将节点 \(u\) 变成红色,保证在操作之前节点 \(u\) 为蓝色。
  2. 2 u:A 和 B 从起点 \(u\) 开始玩游戏,假设两人都以最优的方式行动,输出 A 是否能获得胜利。

\(1\le T\le10^4\)\(2\le n,\sum n,m,\sum m,q,\sum q\le2\cdot10^5\)

http://www.wxhsa.cn/company.asp?id=363

相关文章:

  • sentinel-1.8.0 安装
  • 数据结构与算法-27.树-并查集
  • wpf XAML设计器在加载用户控件的时候,提示null引用等直接执行了用户控件里构造函数代码的问题
  • 设计模式-策略
  • Linux中怎么调整系统inode数量?
  • DARPA AI网络挑战赛技术框架全解析:自动化漏洞挖掘与修复系统构建
  • 数据库基本查询语句
  • 【项目实战】基于WS63的鸿蒙星闪红外遥控车(循迹、超声波避障、远程控制、星闪/红外遥控)有教程代码
  • macbook pro怎么安装windows系统
  • XSS与CSRF的联系与区别
  • 异或
  • apche 2.4 开启mod_cache_disk和mod_deflate后,磁盘上缓存的是压缩后的文件
  • 复现tensor2tensor代码时遇到的问题和相关链接
  • macbook pro如何安装windows系统
  • 【ACM出版】第四届公共管理、数字经济与互联网技术国际学术会议(ICPDI 2025)
  • 如何在 Linux 中关闭 Swap(虚拟内存)
  • 再见 Cursor,Qoder 真香!这波要改写 AI 编程格局
  • 三.ubuntu22.04 使用C++部署PyTorch模型
  • alertmanager配置集群模式
  • 《Python数据结构与算法分析》代码
  • AI 是否绑架了云原生创新?
  • Windows 7 局域网打印机共享设置
  • SPFA求负环
  • 磁盘存储器
  • 多变量的递归2-组合总和问题(每个数字可以使用多次)
  • 戴尔Precision 7865 塔式工作站|安装rocky liunx 8.10
  • 基于STM32F411的AM2320温湿度采集程序
  • jmeter测试mysql
  • 博弈论杂谈
  • 基于MATLAB的图像配准与拼接实现