[CEOI 2025] theseus 做题记录

news/2025/9/27 16:29:20/文章来源:https://www.cnblogs.com/Sktn0089/p/19115257

头皮发麻的题目。link

对于一道题目,我们需要观察题目的对象形式有什么特点。对于一道构造题,我们需要思考现在我们想要什么。

对于这题,观察到需要用到一个隐藏条件——点的编号,从编号信息入手。

  • Trial 1:对于一条边 \((u, v)\),根据 \(u,v\) 的大小关系以及边的 label 相当于确定该边的方向。

也就是说,我们给边进行 label 相当于给边进行定向。

注意到 travel 函数是我们自己设计的。为了避免随机化,我们可以固定每个点走的边。

  • Trial 2:为了避免随机游走,travel 的时候可以考虑走出边中编号最小的点。

进一步的,我们确定每个点下一步走到的点后,不难发现这形成了一棵树

这样我们就有了一个思考猜测:通过启发式合并来保证额外走的边数为 \(\mathcal O(\log n)\) 级别的。

先求出每个点的最短路,按照最短路长度分层。

对于某一层的每个点,对于其与上一层的点的连边,显然可以直接定向。

对于同一层内部的点,我们从小到大枚举每个点 \(u\),以及从小到大枚举其连接的点 \(v\),这样枚举的好处是无后效性。

如果 \(u\)\(v\) 已经有父亲了,那么我们可以定向:让有父亲的点连向另一个点。如果都没有父亲,考虑令子树较大的点作为子树较小的点的父亲。

这样就做完了。

点击查看代码
#include <bits/stdc++.h>
#define ll int
#define LL long long
#define uLL unsigned LL
#define fi first
#define se second
#define mkp make_pair
#define pir pair <ll, ll>
#define pb emplace_back
#define i128 __int128
const ll maxn = 10010, mod = 998244353, M = 14348907;
const LL inf = 1e18;
template <class T>
void rd(T &x) {char ch; ll f = 0;while(!isdigit(ch = getchar()))if(ch == '-') f = 1;x = ch - '0';while(isdigit(ch = getchar()))x = (x << 1) + (x << 3) + ch - '0';if(f) x = -x;
}
ll power(ll a, ll b = mod - 2, ll p = mod) {ll s = 1;while(b) {if(b & 1) s = 1ll * s * a % p;a = 1ll * a * a % p, b >>= 1;} return s;
}
template <class T1, class T2>
void add(T1 &x, const T2 y) { x = x + y >= mod? x + y - mod : x + y; }
template <class T1, class T2>
void sub(T1 &x, const T2 y) { x = x < y? x + mod - y : x - y; }
template <class T1, class T2>
ll pls(const T1 x, const T2 y) { return x + y >= mod? x + y - mod : x + y; }
template <class T1, class T2>
ll mus(const T1 x, const T2 y) { return x < y? x + mod - y : x - y; }
template <class T1, class T2>
void chkmax(T1 &x, const T2 y) { x = x < y? y : x; }
template <class T1, class T2>
void chkmin(T1 &x, const T2 y) { x = x < y? x : y; }
using namespace std;ll dis[maxn], q[maxn], l, r, siz[maxn], mn[maxn], d[maxn];
vector <pir> to[maxn]; vector <ll> vec[maxn];vector <ll> label(ll n, vector <pir> edge, ll t) {vector <ll> res(edge.size());for(ll i = 1; i <= n; i++) dis[i] = -1;q[l = r = 1] = t, dis[t] = 0;for(ll i = 0; i < edge.size(); i++) {ll u = edge[i].fi, v = edge[i].se;to[u].pb(mkp(v, i));to[v].pb(mkp(u, i));}while(l <= r) {ll u = q[l++];for(auto [v, id]: to[u])if(dis[v] == -1) {dis[v] = dis[u] + 1;q[++r] = v;}}for(ll u = 1; u <= n; u++) vec[dis[u]].pb(u), mn[u] = n + 1, siz[u] = 1;for(ll i = n; i; i--) {if(vec[i].empty()) continue;for(ll u: vec[i])for(auto [v, id]: to[u])if(dis[v] < dis[u]) res[id] = (u > v), chkmin(mn[u], v);sort(vec[i].begin(), vec[i].end());for(ll u: vec[i]) {sort(to[u].begin(), to[u].end());for(auto [v, id]: to[u])if(dis[v] == dis[u] && u < v) {if(!d[u] && v > mn[u]) siz[d[u] = mn[u]] += siz[u];if(!d[v] && u > mn[v]) siz[d[v] = mn[v]] += siz[v];if(d[u]) res[id] = 0;else if(d[v]) res[id] = 1;else {if(siz[u] <= siz[v]) res[id] = 0, siz[d[u] = v] += siz[u];else res[id] = 1, siz[d[v] = u] += siz[v];}}if(!d[u]) siz[d[u] = mn[u]] += siz[u];}}return res;
}ll travel(ll n, ll u, vector <pir> e) {ll p = n + 1;for(auto [v, w]: e)if((u < v) ^ w) chkmin(p, v);return p;
}

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

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

相关文章

2025 年钣金加工厂家最新推荐排行榜发布:江门,珠三角钣金加工厂选择指南

在智能制造与新基建加速推进的背景下,钣金加工作为装备制造的基础环节,市场需求持续攀升,但行业发展仍面临多重挑战。一方面,精密制造需求与加工精度不匹配的问题突出,如新能源充电桩柜体等产品对 0.1 毫米级平整…

全文 -- Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics Research - 指南

全文 -- Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics Research - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

做网站广告语适合女孩做的网站

vscode-drawio简介网络之大&#xff0c;人才百出&#xff0c;在开源背景下&#xff0c;一些功能只有你想不到&#xff0c;没有做不到。这不&#xff0c;对于写代码的程序员来说&#xff0c;竟然也可以在VSCode IDE里边写代码&#xff0c;边画逻辑流程图了。最近&#xff0c;在g…

湖南省房屋和城乡建设部网站有了网站怎么做app吗

文章目录 0. 引言1. 目标&#xff1a;ZeroMQ与Fast-DDS性能对比2. ZeroMQ vs Fast-DDS - 延迟基准测试2.1 一对一发布-订阅延迟2.2 一对多发布-订阅延迟 3. ZeroMQ vs Fast-DDS - 吞吐量基准测试4. 方法论5. 结论6. 参考 0. 引言 高要求的分布式系统催生了对轻量级且高性能中间…

通过AWS SSO设备代码认证进行AWS凭证钓鱼攻击(2024年更新)

本文详细分析了AWS SSO设备代码认证机制存在的钓鱼攻击风险,通过具体代码演示攻击流程,并提供了CloudTrail日志检测方案。文章指出这种设计缺陷会绕过MFA等安全机制,同时给出了具体的防御建议和凭证撤销方法。通过A…

wireshark 过滤

wireshark 过滤 IP地址过滤 ip.addr == 192.168.1.202ip目的地地址过滤 ip.dst==192.168.1.202端口过滤udp.port==8080udp.srcport==8080udp.dstport==8080 搜索栏输入“not gvsp and not icmp” ,把 ARP、UDP 协议过…

解码数据结构栈

栈的概念与特性 栈是线性结构的特殊形式,其设计初衷是解决 “数据需按特定顺序存取” 的场景(如函数调用、括号匹配),核心遵循 “后进先出”(LIFO,Last In First Out)原则,是计算机领域中最基础的数据结构之一…

vs 2008 建立网站汕头有几个区几个县

七燕论文是一个非常好用的论文写作工具&#xff0c;它不仅可以帮助学生提高写作效率&#xff0c;还能帮助他们避免抄袭和提高论文质量。七燕论文的查重降重功能非常靠谱&#xff0c;能够帮助用户检测论文中的重复内容&#xff0c;并提供相应的修改建议&#xff0c;确保论文的原…

第七章 手写数字识别V4

# 优化: # 增加父类Module,输出每层信息 # 增加ReLU类,Tanh类 # 增加Dropout类,随机失活,防止过拟合,提高泛化能力 # 增加Parameter类,保存权重和梯度# 导入必要的库 import numpy as np import os import stru…

什么?你的蓝牙用不了了?

什么?你的蓝牙用不了了?如果你的电脑蓝牙出现一下问题:蓝牙图标不见? 搜索不到任何设备? 只能搜到手机不能搜到耳机? 看看本篇文章给你的解决办法把!蓝牙图标不见 暂未解决。 搜索不到任何设备 首先,同时按下 …

个人可以做电影网站吗信用徐州网站建设情况

黑马程序员上海中心学姐微信&#xff1a;CZBKSH关注咳咳&#xff0c;今天学姐就来和你们说说Spring对于Java程序员的重要性。首先&#xff0c;Spring 官网首页是这么介绍自己的——“Spring: the source for modern Java”&#xff0c;这也意味着 Spring 与 Java 有着密切的关系…

做韦恩图的在线网站wordpress下载视频

简单选择排序的介绍&#xff1a;从给定的序列中&#xff0c;按照指定的规则选出某一个元素&#xff0c;再根据规定交换位置后达到有序的目的。简单选择排序的基本思想&#xff1a;假定我们的数组为int [] arr new int[n]&#xff0c;第一次我们从arr[0]~arr[n-1]中选择出最小的…

2025/9/27

2025/9/271.完成课后任务:验证码任务 2.完成课后任务:生成三十道四则运算题

30.Linux DHCP 服务器 - 详解

30.Linux DHCP 服务器 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

C# Smart3D Plate Part零件形状提取

public class ExportPartShape : BaseModalCommand{public override void OnStart(int instanceId, object argument){base.OnStart(instanceId, argument);var symFile = @"C:\Program Files (x86)\Smart3D\Comm…

威海建设局网站首页图片编辑在线

在FTP协议中&#xff0c;可以通过配置服务器端的空闲连接超时时间来设置连接的过期时间。具体步骤如下&#xff1a; 登录FTP服务器&#xff0c;进入服务器的配置文件目录。通常配置文件位于/etc或/etc/vsftpd目录下。打开FTP服务器的配置文件&#xff0c;例如vsftpd.conf。在配…

网站使用微软雅黑小程序模板免费下载

C语言实验lab10C程序设计实验报告学院&#xff1a;国际商学院班级&#xff1a;14电商专业&#xff1a;电子商务姓名&#xff1a;熊靓男日期&#xff1a;15.5.25学号&#xff1a;1420070049实验目的复习一维数组掌握二维数组参数的传递掌握排序算法实验内容消灭怪物在阳光明媚月…

化妆品网站系统规划网站制作排名

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param s string字符串 * param n int整型 * return string字符串*/public String trans (String s, int n) {// write co…