AGC052 VP 记录

news/2025/11/9 19:13:28/文章来源:https://www.cnblogs.com/Ydoc770/p/19187500

场切 \(0\) 道题,被猜性质猜结论题气笑了.

A

后来回想起来,这个题好像确实在北京集训讲过.

\(4\) 种合法的构造:\(0\overbrace{1\cdots1}^{n个} \overbrace{0\cdots0}^{n个}\)\(1\overbrace{0\cdots0}^{n个} \overbrace{1\cdots1}^{n个}\)\(\overbrace{1\cdots1}^{n个} \overbrace{0\cdots0}^{n个}1\)\(\overbrace{0\cdots0}^{n个} \overbrace{1\cdots1}^{n个}0\).

证明方法是类似的,以第一种构造为例:设第 \(i\)\(0\) 的位置为 \(p_i\),贪心的让子序列中第一个 \(0\) 为原序列的第一个 \(0\),子序列中的后 \(n\)\(0\) 为原序列的后 \(n\)\(0\),现在要在 \(p_1\sim p_{n+1}\) 之间找 \(n\)\(1\). 注意到 \(p_{n+1}=2n+p_1\),这其中至多有 \(n-1\)\(0\),所以必然可以找到 \(n\)\(1\),得证.

B

非常巧妙的 ad-hoc,欣赏.

边权的神秘操作难以处理,考虑转化. 观察到一次操作异或上的边权值相同,那么做一个根链的异或前缀和,下方的前缀和因为异或上两个相同的数是完全不发生改变的. 把这个异或前缀的权值挂到对应点上,进一步的,我们会发现一次操作只交换了操作边两端的点权. 这个东西看上去友好多了.

做异或前缀和需要钦定一个根,一个严重的问题是根的点权应该恒为 \(0\),但是实际操作却可能使其发生改变. 我们考虑从根连出去一条边权为 \(x\) 的虚边,用来调整根的点权,所有点的实际点权为 \(a_{u}\oplus x\).

现在我们需要求出 \(x\). 充分发掘题目性质,由于操作相当于交换两点权,我们发现可行的一个必要条件是:

\[\bigoplus\limits_{i=1}^n(a_{u}\oplus x)=\bigoplus\limits_{i=1}^nb_{u} \]

由于保证 \(n\) 为奇数,所以左边只留下了一个 \(x\). 据此我们可以反解出一个 \(x=\bigoplus_{i=1}^na_u\oplus b_u\),并验证是否满足上述的条件. 我们拿必要条件解出的 \(x\) 带回去求是否有操作前后的两树点权异或上 \(x\) 后相等,就可以验证是否存在合法的操作,因为点权集合与边权集合构成双射.

点击查看代码
#include<bits/stdc++.h>
using namespace std;const int maxn = 1e5 + 10;
int n;
int dis1[maxn], dis2[maxn];map<int, int> mp;
vector<array<int, 3> > e[maxn];
void dfs(int u, int f) {for(auto [v, w1, w2] : e[u]) {if(v == f) continue;dis1[v] = dis1[u] ^ w1, dis2[v] = dis2[u] ^ w2;dfs(v, u);}
}int main() {ios :: sync_with_stdio(false); cin.tie(0); cout.tie(0);cin >> n;for(int i = 1, u, v, w1, w2; i < n; i++) {cin >> u >> v >> w1 >> w2;e[u].push_back({v, w1, w2}), e[v].push_back({u, w1, w2});} dfs(1, 0);int v = 0;for(int i = 1; i <= n; i++) mp[dis1[i]]++, v ^= dis1[i] ^ dis2[i];for(int i = 1; i <= n; i++) {if(!mp[dis2[i] ^ v]) cout << "NO", exit(0);else mp[dis2[i] ^ v]--;} cout << "YES";return 0;
}

D

E

参考一个广为人知题:[AGC059E] Grid 3-coloring 的 trick.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结合400行mini-react代码,图文解说React原理

引言: 在我学习React原理的时候,一上来看的非常全而细节的书/博客(头大),或者是看的教你实现一个简单mini-react(还是一知半解),最终学的痛苦又效果不好。所以,写了这篇博客,希望能帮助您入门React原理。此外…

UE:告别加载卡顿!一键合并StaticMeshActor方案

© mengzhishanghun 原创文章 首发于 博客园 禁止未经授权转载前言 大型UE场景打包后首次加载时,经常遇到长时间卡顿甚至假死现象。究其原因,成百上千个独立的StaticMeshActor在序列化、实例化时产生了巨大开销…

在Visual Studio使用Qt的插件机制进行开发 - 指南

在Visual Studio使用Qt的插件机制进行开发 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

摸鱼笔记[2]-提取windows已安装的驱动

使用`DriverStoreExplorer`提取windows已安装的海康相机.inf驱动文件.摘要 使用DriverStoreExplorer提取windows已安装的海康相机.inf驱动文件. 实现 [https://github.com/lostindark/DriverStoreExplorer] Driver Sto…

CF2013D 题解

提供一个二分做法。 因为当 \(a_i > a_{i + 1}\) 是做操作是不劣的,所以最终 \(a\) 一定单调不降。那么我们二分一个最小的 \(\max(a_i)\) 和最大的 \(\min(a_i)\),答案就是 \(\max(a_i) - \min(a_i)\)。 下面说一…

题解:AT_agc068_a [AGC068A] Circular Distance

牛牛题,看了很多次才看懂 题意:给出 \(L,n\),问在一个 \(L\) 长的环上,放置 \(n\) 个点,定义两点距离为两种路径中长度较短的长度,问所有放置方式的点的距离最大值之和。 做法: 首先先强制选定 \(0\) 号点,最后…

P14461 题解

消一消元: \[\begin{aligned}F_i&= G_{i - 1} + G_{i - 1} \\&= F_{i - 2} - F_{i - 2} + F_{i - 2} - F_{i - 2} \\&= F_{i - 2} - F_{i - 2} \end{aligned} \]类似的: \[G_i = G_{i - 2} - G_{i - 2} …

Nim 游戏与 SG 函数

已完成今日《Nim 游戏与 SG 函数》大学习。 本文比较基础,并未涉及到各种各样的 Nim 游戏,因为笔者比较菜。 1. 公平组合游戏 定义一个游戏为公平组合游戏,当且仅当:双方都知道当前局面的所有信息。 每一步的操作与…

题解:Luogu P11114 [ROI 2024] 小推车 (Day 1)

题意 有一排编号为 \(1\sim n\) 的座位。有 \(k\) 种饮料,第 \(i\) 名乘客想要喝第 \(a_i\) 种饮料。小推车需要从 \(0\) 位置出发,最终走到 \(n+1\) 位置,按顺序给每名乘客分饮料。推车上有 \(m\) 个瓶子,每个瓶子…

摸鱼笔记[1]-windows设置双网卡优先级(跃点数)

windows系统通过设置跃点数以设置双网卡优先级, 实现工控局域网网卡和互联网网卡各司其职, 电脑同时访问局域网和互联网.摘要 windows系统通过设置跃点数以设置双网卡优先级, 实现工控局域网网卡和互联网网卡各司其职,…

NXP - 用MDK建立基于arm-none-eabi软件链的工程框架

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

用 OKHttp 和 Retrofit 打造稳如磐石的网络请求:连接池与重试机制的实战指南 - 教程

用 OKHttp 和 Retrofit 打造稳如磐石的网络请求:连接池与重试机制的实战指南 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

数字孪生重构智慧园区:众趣科技何以成为 VR 园区领域标杆 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

电脑监控软件,后台监控,千里眼监控

电脑监控软件,后台监控,适合家庭电脑、员工电脑监控 支持异地远程访问,终身授权最低100R,可月付年付 不限设备数量,支持win7、10、11 1、电脑位置显示 2、桌面远程观看 3、桌面文件下载 4、完整记录按键输入 5、智…

【URP】Unity[后处理]运动模糊MotionBlur

Motion Blur 概念与作用 Motion Blur(运动模糊)是一种模拟真实相机在拍摄快速移动物体或自身移动时产生的模糊效果的后处理技术。它通过模糊图像中运动物体的轨迹,增强动态场景的真实感和【从UnityURP开始探索游戏渲…

go sync.pool 学习笔记

概述 sync.pool 对象池可以用来复用临时对象,减少内存压力,降低 GC 压力。 示例 基本用法 type Worker struct{} func (w *Worker) Name() string { return "worker" } func main() { workerPool :…

初识分布式训练

假设有N块GPU,模型有ψ个参数。 前提知识:每个参数对应一个梯度值,且SGD每个参数对应一个一阶动量,Adam每个参数对应一个一阶、一个二阶动量DP(data parallel) ​ 数据并行(单进程,多线程,只用一个cpu核),每…