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

AGC052 VP 记录

场切 \(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.jsqmd.com/news/35908/

相关文章:

  • 结合400行mini-react代码,图文解说React原理
  • UE:告别加载卡顿!一键合并StaticMeshActor方案
  • 在Visual Studio使用Qt的插件机制进行开发 - 指南
  • 第五次
  • 第四次
  • 第三次
  • 摸鱼笔记[2]-提取windows已安装的驱动
  • 摸鱼笔记[1]-windows设置双网卡优先级(跃点数)
  • NXP - 用MDK建立基于arm-none-eabi软件链的工程框架
  • 用 OKHttp 和 Retrofit 打造稳如磐石的网络请求:连接池与重试机制的实战指南 - 教程
  • 数字孪生重构智慧园区:众趣科技何以成为 VR 园区领域标杆 - 实践
  • 电脑监控软件,后台监控,千里眼监控
  • 【URP】Unity[后处理]运动模糊MotionBlur
  • go sync.pool 学习笔记
  • 电脑监控软件,后台监控,适合家庭电脑、员工电脑监控
  • 题解:P10856 【MX-X2-T5】「Cfz Round 4」Xor-Forces
  • python: Virtualenv的安装与应用
  • 题解:AT_abc147_f [ABC147F] Sum Difference
  • 20231326《密码系统设计》第八周预习报告
  • PERL Docker 容器化部署指南
  • 解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单
  • pandoc用法
  • JMeter:性能测试利器全解析 - 实践
  • 251109
  • electron-vite为linux打包成功,但是安装后运行无反应
  • 20231427田泽航第八周预习报告
  • 吐血推荐!6款超好用的AI论文写作工具
  • 完整教程:金蝶云星瀚 | 生产制造成本核算终极实操手册(从0到1,含两套完整案例)
  • 实用指南:TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 自动微分和梯度
  • 浏览器Blockstack.org全名字段输入限制缺失漏洞分析