NOIP 备赛:CF 2E 板刷
从 \(2024.11.05\) 之前的比赛排着刷。
CF2028 E
这道题主要考察的是手玩能力和转移技巧。
给定一棵树,根为 \(1\)。爱丽丝的起点位于某个顶点 \(v\) 。她想走出洞口,但不幸的是,红心皇后已经下令处死她。
每分钟都会掷一枚公平的硬币。如果硬币是正面,爱丽丝就可以移动到她当前位置的相邻顶点,反之,红心皇后就可以把爱丽丝拉到皇后选择的相邻顶点。如果爱丽丝最终出现在树的非根叶子上,那么爱丽丝就输了。
假设两人都以最佳方式移动,计算爱丽丝成功逃离每个起始顶点 \(1\le v\le n\) 的概率。对 \(998\,244\,353\) 取模的值。\(n \le 10 ^ 5\)。
首先需要一个 key observation,就是 Alice 的最优策略一定是向父亲走,红心皇后的最优策略一定是向深度最小的叶子走。设每个点深度最小的儿子是 \(s_u\),Alice 从这个点出发逃离概率是 \(f_u\)。那么有转移:
\]
其中 \(f(1) = 1, f(u \mid u \in \text{leaf}) = 0\)。
这个转移方式有点技巧。假设有链 \(1 \rightarrow 2 \rightarrow 3 \rightarrow 4 \cdots\)。那么 \(f(2) = \dfrac{1}{2} f(1) + \dfrac{1}{2} f(3)\)。
接下来有 \(f(3) = \dfrac{1}{2} f(2) + \dfrac{1}{2} f(4) = \dfrac{1}{4} f(1) + \dfrac{1}{4} f(3) + \dfrac{1}{2} f(4)\)。移项整理得到 \(f(3) = \dfrac{1}{3} f(1) +\dfrac{2}{3} f(4)\)。
同样操作可以发现规律 \(f(i) = \dfrac{i}{1} f(1) + \dfrac{i - 1}{i} f(i + 1)\)。
首先将树按照浅儿子剖成若干链,对链单独转移,然后再对链顶单独转移即可。预处理逆元可以做到线性。
int f[N], n, m, fa[N], dep[N], s[N];
vector<int> E[N];
void dfs(int u, int F) {
fa[u] = F; for (auto v : E[u]) if (v ^ F) {
dfs(v, u); if (!dep[u]) dep[u] = dep[v] + 1, s[u] = v;
else if (dep[v] + 1 < dep[u]) s[u] = v, dep[u] = dep[v] + 1;
}
}
void dp(int u, int t, int d) {
if (!s[u]) return; dp(s[u], t, d + 1);
f[u] = (d * qpow(d + 1) % mod * f[s[u]] % mod + qpow(d + 1) * t % mod) % mod;
for (auto v : E[u]) if ((v ^ fa[u]) and (v ^ s[u])) dp(v, f[u] % mod, 1);
}
void sub() {
read(n);
rep(i, 1, n) E[i].clear(), dep[i] = 0, s[i] = 0, f[i] = 0;
rop(i, 1, n) {
int a, b; read(a, b);
E[a].push_back(b);
E[b].push_back(a);
} dfs(1, 0); f[1] = 1; dp(1, 1, 0);
rep(i, 1, n) printf("%lld ", f[i]);
return;
}
CF2032 E
这道题考察的主要是观察力和构造水平。
给你一个数组 \(a\),可以进行若干次操作,可以进行任意次操作。
每次操作选择一个位置 \(i(1 \le i \le n)\),并且使 \(a_i \leftarrow a_i + 2\),\(a_{i - 1} \leftarrow a_{i - 1} + 1\),\(a_{i + 1} \leftarrow a_{i + 1} + 1\)。特别地,\(1\) 的上一个位置是 \(n\),\(n\) 的下一个位置是 \(1\),也就是说,这是一个循环数组。你需要构造一组方案。
首先我们发现这个答案有一定的单调性。即如果能使他们都变成 \(x\),那么也可以通过把他们全操作一遍使他们变成 \(x + 4\)。因此先设他们能变成一个大数 \(I\),将问题转化为判定性问题。
不妨设 \(b_i = I - a_i\),则条件充要转化为:\(\forall i \le n\),\(p_{i - 1} + 2 p_i + p_{i + 1} = b_i\)。
发现将每个位置作为开头,剩下的往后顺延,将奇数位置的 \(b\) 的和,减去偶数位置的 \(b\) 的和,得到的就是 \((p_i + p_{i - 1}) \times 2\)。有了这个之后,剩下的就好求了。复杂度是线性的。
void sub() {
read(n);
rep(i, 1, n) read(a[i]);
auto solve = [&](int q) -> bool {
rep(i, 1, n) b[i] = q - a[i];
s[1] = b[1], s[2] = b[2];
rep(i, 3, n) s[i] = s[i - 2] + b[i];
rep(i, 1, n) {
t[i] = s[(i & 1) ? n : n - 1] - s[max(i - 2, 0)];
t[i] += s[i - 1];
t[i] -= s[(i & 1) ? n - 1 : n] - s[max(i - 1, 0)];
t[i] -= s[max(i - 2, 0)];
}
rep(i, 1, n) if (t[i] & 1) return 0; rep(i, 1, n) t[i] >>= 1;
int o = 0; rep(i, 2, n) o += ((i & 1) ? -1 : 1) * t[i]; // p[1] - p[n]
if ((o + t[1]) & 1) return 0;
p[1] = (o + t[1]) >> 1;
rep(i, 2, n) p[i] = t[i] - p[i - 1];
rep(i, 1, n) if (p[i] < 0) return 0;
rep(i, 1, n) printf("%lld ", p[i]); puts("");
return 1;
};
if (solve(I)) return;
if (solve(I + 1)) return;
if (solve(I + 2)) return;
if (solve(I + 3)) return;
}
NOIP 备赛:CF 2E 板刷的更多相关文章
- 【Diary】CSP-S2 2021 游记 & NOIP 备赛发疯日记
Day 0 两个极端的回跳. .....不行啊. 我快输不起了........... ------------------------------- 早上被生物钟强行唤醒,逼自己懒床到6:40. 弹琴 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- sql 分组查询并新增序号
在SQL中,你可以使用ROW_NUMBER()函数来为结果集中的每一行新增一个序号.这个序号是基于某个排序条件的分区排序结果. 以下是一个简单的例子,假设我们有一个名为students的表,它有两列: ...
- UC_Center整合单点登录后远程注册不激活问题的解决办法
修改:bbs目录\uc_server\model\user.php 下方法add_user 如下: function add_user($username, $password, $email, $u ...
- PYRAFORMER: 用于长时间序列建模和预测的低复杂度金字塔注意力《PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTENTION FOR LONG-RANGE TIME SERIES MODELING AND FORECASTING》(金字塔注意力模块机制、PAM、CSCM、多尺度)
今天是2022年10月1日,今天重读一遍这篇论文. 10月1日16:48,上次读是4月20日,时间过得好快. 论文:PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTEN ...
- ARM汇编: B、BL 与R14(LR)、R15(PC)
1. b与bl指令的作用是什么? b与bl指令的作用:实现程序跳转,也就是调用子程序. 2. b与bl指令的区别是什么? b与bl指令的区别: b指令:简单的程序跳转,跳转到到目标标号处执行. bl指 ...
- /proc/pids/limits
cat /proc/39977/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Ma ...
- markdown的html优雅使用语法(2024/10/10guixiang原创)
一:图片部分 第一范式 图 2 全字段排序 <center> <img style="border-radius: 0.3125em; box-shadow: 0 2px ...
- Android复习(五)设备兼容—>多apk支持
1. 对于不同的屏幕发布单独的apk https://developer.android.google.cn/training/multiple-apks/screensize 2.多窗口模式 在An ...
- 一文详述:AI 网关与 API 网关到底有什么区别?
近年来AI 发展火热,大模型已经成为推动各行各业业务创新和增长的关键力量.随之而来问题是"企业该如何安全管理和部署AI应用的挑战?"AI基础架构的设计不仅要支持现有的业务需求,还要 ...
- DataDream:调一调更好,基于LoRA微调SD的训练集合成新方案 | ECCV'24
尽管文本到图像的扩散模型已被证明在图像合成方面达到了最先进的结果,但它们尚未证明在下游应用中的有效性.先前的研究提出了在有限的真实数据访问下为图像分类器训练生成数据的方法.然而,这些方法在生成内部分布 ...
- 自建家庭 KTV,在家想嗨就嗨
现在用户最多.曲库最多的 K 歌软件是全民K歌,基本上想唱的歌都有,而且基本上每首歌都有 MV 或视频,使用体验也还不错,但是收费太贵了,对于一个月唱不了几次的打工人来说,唱一首歌就是"天价 ...