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 查询死锁
1 -- 查询死锁 2 --第一种 3 sp_lock 4 5 --第二种 6 select object_name(resource_associated_entity_id) as tableNa ...
- CSS – Box Shadow & Text Shadow
前言 之前在 CSS – W3Schools 学习笔记 (3) 介绍过这个功能, 但一直不熟练. 每次用都卡卡的, 估计是没有写一篇独立的笔记的缘故. 特此写一篇. Text Shadow 下面这个是 ...
- Blazor静态服务端呈现(静态SSR)身份认证
本文介绍 Blazor 静态服务端呈现(静态 SSR)模式下,用户登录身份认证是如何实现的. 1. SSR 简介 SSR 是服务器侧呈现,HTML 是由服务器上的 ASP.NET Core 运行时生成 ...
- 七、Scrapy框架-案例1
1. 豆瓣民谣Top排名爬取 1.1 构建scrapy项目 安装Scrapy库 pip install scrapy 创建Scrapy项目 通过cmd进入命令窗口,执行命令scrapy startpr ...
- [TK] 三色二叉树 hzoi-tg#282 存图方法
可以发现,假如在序列中遇到一个数为 \(2\) ,也就是有两个子节点,那么接下来的全部数字都是描述左树的,一直到左树被遍历完成. 这让你想到了什么? 当然是DFS啦. 根据DFS我们有下面这样的存图思 ...
- AD域下,没有登录服务器处理登录请求
原因: IP地址配置有问题 或者 DNS : 解决办法: 重新设置 IP地址 和 DNS : 此案例中, 切换到 test 账户(域管理员)后发现 , 未配置 IP地址 和 DNS :
- 【赵渝强老师】使用MongoDB的命令行工具:mongoshell
一.启动mongo shell 安装好MongoDB后,直接在命令行终端执行下面的命令: mongo 如下图所示: 可选参数如下: 也可以简写为: 在mongo shell中使用外部编辑器,如:vi, ...
- 使用 Debugger 断点 如果打开了断点调试 就会跳转空白页面
<!DOCTYPE html> <html> <header> <title>test</title> </header> &l ...
- 数组对象删除不满足某些条件的对象 js
recursiveFunction(items, childrenNodeName, ids) { console.log('items', ids); // 获取数组长度 if (items) it ...
- MySQL下载安装教程
下载 https://www.mysql.com/downloads/