湘潭夏令营

news/2024/9/25 11:09:08

GYM 105322 A

题目描述

\(N\) 个人(\(N\) 为偶数),每次将随机分成 \(\frac{N}{2}\)\(2\) 人组。组内两个人将进行比赛,每个人都有 \(\frac{1}{2}\) 的概率赢。赢得人排在前面。求一开始在排名 \(x\),进行 \(k\) 轮比赛后的期望位置。

思路

很容易想到到达除了 \(x\) 以外的排名的概率都是一样的,所以我们定义 \(dp_{i,1/0}\) 表示进行 \(i\) 轮比赛,是/否在位置 \(x\) 的概率。

这两个状态都能互相转移,转移如下:

\[\begin{array}{l} dp_{i,0}=dp_{i-1,0} \cdot (\frac{1}{2} + \frac{n - 2}{2(n - 1)}) + dp_{i-1,1}\cdot\frac{1}{2(n - 1)}\\ dp_{i,1} = dp_{i,0} \cdot \frac{1}{2} + dp_{i,1} \cdot \frac{1}{2} \end{array} \]

可以优化成矩阵形式:

\[\begin{bmatrix}dp_{i,0}\\dp_{i,1}\end{bmatrix}=\begin{bmatrix}dp_{i-1,0}\\dp_{i-1,1}\end{bmatrix}\begin{bmatrix}\frac{1}{2} + \frac{n - 2}{2(n - 1)} & \frac{1}{2(n - 1)}\\\frac{1}{2}&\frac{1}{2}\end{bmatrix} \]

空间复杂度 \(O(1)\),时间复杂度 \(O(\log k)\)

代码

#include<bits/stdc++.h>
using namespace std;
using ll = long long;const int MOD = 998244353, inv2 = 499122177;struct Matrix {int n, m, mat[3][3];void Clear(int a, int b) {n = a, m = b;for(int i = 1; i <= n; ++i) {for(int j = 1; j <= m; ++j) {mat[i][j] = 0;}}}Matrix operator*(const Matrix &x) {Matrix ret;ret.Clear(x.n, m);for(int i = 1; i <= x.n; ++i) {for(int j = 1; j <= m; ++j) {for(int k = 1; k <= n; ++k) {ret.mat[i][j] = (ret.mat[i][j] + 1ll * mat[k][j] * x.mat[i][k] % MOD) % MOD;}}}return ret;}Matrix operator*=(const Matrix &x) {return *this = *this * x;}
}mat, x;ll n, k, X;int Pow(int a, ll b) {int ret = 1;for(; b; a = 1ll * a * a % MOD, b >>= 1) {if(b & 1) {ret = 1ll * ret * a % MOD;}}return ret;
}Matrix Pow(Matrix ret, Matrix a, ll b) {for(; b; a *= a, b >>= 1) {if(b & 1) {ret *= a;}}return ret;
}int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >> X >> k;mat.Clear(2, 2);mat.mat[1][1] = (inv2 + 1ll * (n - 2) % MOD * Pow(2ll * ((n - 1) % MOD) % MOD, MOD - 2) % MOD) % MOD;mat.mat[1][2] = 1ll * inv2 * Pow((n - 1) % MOD, MOD - 2) % MOD;mat.mat[2][1] = mat.mat[2][2] = inv2;x.Clear(2, 1);x.mat[2][1] = 1;Matrix ans = Pow(x, mat, k);cout << (1ll * (1ll * (1 + n % MOD) % MOD * (n % MOD) % MOD * inv2 % MOD - (X % MOD) + MOD) % MOD * ans.mat[1][1] % MOD + 1ll * X % MOD * ans.mat[2][1] % MOD) % MOD;return 0;
}

GYM 105322 B

题目描述

有一个 \(N\) 个数的序列 \(A\),两个人将轮流进行以下操作之一:

  • 删除序列中其中一个最小值。
  • 在所有数 \(>0\) 的情况下,你可以令所有元素减一。

求最终哪一方会赢。

思路

假设现在只有两个数,那么只要有一方删掉了较小值,那么另一方就赢了,所以两方一定会不断减一知道实在不能减为止。

现在我们将 \(A\) 排序。

在到达只有两个数的局面之前,一定会先删掉 \(N-2\) 个元素,而这里减法是将整个数组减一,所以我们不关心其顺序,总共会减 \(A_{N-1}\) 次。

只需判断次数的奇偶性即可。

空间复杂度 \(O(N)\),时间复杂度 \(O(N\log N)\)

代码

#include<bits/stdc++.h>
using namespace std;
using ll = long long;const int MAXN = 1000001;int n;
ll a[MAXN];int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n;for(int i = 1; i <= n; ++i) {cin >> a[i];}sort(a + 1, a + n + 1);if((a[n - 1] + n - 1) % 2 == 0) {cout << "Eric";}else {cout << "Cire";}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/64518.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

CH585烧录

目前最新版本ISP工具还未更新至官网,旧版ISP工具还不包含CH585烧录选项。 可通过最新版本Mounriver Studio导出ISP工具, 除此之外,还需要更换下配置文件,右键Mounriver Studio打开文件所在位置,将名称为WCH55xISPDLL.dll的配置文件替换到该路径下:D:\MounRiver\MounRiver…

寄存器传值——函数剖析

寄存器传值导致的未定义行为寄存器传值——函数剖析 现象 实验环境:Ubuntu20,x86-64指令集 #include <stdio.h>int sum(int a, int b){return a+b; }int main() {int aa = sum(5,3);printf("%d, %d\n", 9);return 0; }编译器提示我们 printf()函数少一个参数…

查看exe启动命令和参数

wmic process where caption="qq.exe" get caption,commandline /value #qq.exe可以更换为任何正在运行的进程

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024) Windows 11, version 23H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版…

【YashanDB知识库】YAS-04110 invalid variant name

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369202.html?templateId=1718516 【标题】错误码处理 【问题分类】查询语句报错 【关键字】YAS-04110 【问题描述】执行特定sql时,遇到相应报错 【问题原因分析】字段中含有保留字,应使用双引号包裹字…

章14——Hashtable

键和值为NULL时会抛出空指针异常。KEY重复且无NULL时同样会替换,和HashMap是一样的。按照2倍+1的规律去扩容与HASHMAP对比PROPERTIES,也是MAP接口的实现类,是Hashtable的子类 .properties 文件通常是用于数据库的配置文件,储存数据库的用户名密码等东西 详细可见博客园博客…

mac安装allure成功后pycharm虚拟环境allure不可用

mac安装allure成功pycharm虚拟环境cmd提示zsh: command not found: allure mac查看安装成功在虚拟环境查看失败确认虚拟环境变量 如果 Allure 仍然不可用,检查虚拟环境中的 PATH 环境变量是否包含了 Allure CLI 的路径。在虚拟环境中,你可以运行以下命令来查看 PATH: echo $…

如何删除 WPS 在图片文件属性中添加的“属性修改”选项卡

近期发现 WPS 2023 这一个非常恼人的特性,在图片文件的属性窗口里面乱加第三方选项卡。同事的电脑安装了这个版本,就让同事从注册表试了一下。还好金山他们藏的不是很深,借助 GPT 很快也就找到了。这里再用鄙人自己的虚拟机演示一遍。HKEY_CLASSES_ROOT\*\shellex\PropertyS…