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

[CTS2024] 众生之门

跟众生之门一样难欸

首先这题要求的东西很鬼,距离异或和,看起来毫无性质。

不过毫无性质也是有好处的,你发现你一共有 \((n-2)!\) 种排列方式,值却只在 \([0,n-1]\),也就是说取到一个值的概率会非常大!这种难以刻画的东西,显然是很难卡的,也就是说满足随机性。考虑到小数据随机方差可能会比较大,且 \(n\) 很小时会使得测试组数变大,我们对于 \(n\le 10\) 的情况跑暴力,否则我们跑 \(20n\) 次随机排列,我们并不需要对整个排列随机,直接随机交换两项即可。使用 \(\mathcal{O}(1)\) 求祖先的 trick 可以轻松通过。

对于输出答案我们可以记录每一时刻交换了哪些位置,然后记录在哪一时刻取到最小值就行了。

代码:

#include <bits/stdc++.h>
#define rep(i, l, r) for (int i (l); i <= (r); ++ i)
#define rrp(i, l, r) for (int i (r); i >= (l); -- i)
#define eb emplace_back
using namespace std;
#define pii pair <int, int>
#define inf 1000000001
#define ls (p << 1)
#define rs (ls | 1)
#define fi first
#define se second
constexpr int N = 5e4 + 5, M = 2e5 + 5;
typedef long long ll;
typedef unsigned long long ull;
inline ll rd () {ll x = 0, f = 1;char ch = getchar ();while (! isdigit (ch)) {if (ch == '-') f = -1;ch = getchar ();}while (isdigit (ch)) {x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar ();}return x * f;
}
int qpow (int x, int y, int p) {int ret (1);for (; y; y >>= 1, x = x * x % p) if (y & 1) ret = ret * x % p;return ret;
}
int n, s, t;
int p[N];
int x[N * 20], y[N * 20];
vector <int> e[N];
int f[N][16], dep[N], dfn[N], dfu[N], tot;
mt19937 rnd (114514);
void dfs (int u, int fa) {dfn[u] = ++ tot;dep[u] = dep[fa] + 1;for (auto v : e[u]) {if (v == fa) continue;dfs (v, u);}dfu[u] = tot;
}
int get (int x, int y) {return dep[x] < dep[y] ? x : y;
}
int LCA_dep (int x, int y) {if (dfn[x] >= dfn[y]) swap (x, y);if (dfu[x] >= dfn[y]) return dep[x];int k (__lg (dfn[y] - dfn[x] + 1));return dep[get (f[dfn[x]][k], f[dfn[y] - (1 << k) + 1][k])] - 1;
}
int dist (int x, int y) {if (! x || ! y) return 0;return dep[x] + dep[y] - 2 * LCA_dep (x, y);
}
int q[N];
int calc (int x) {return dist (p[x - 1], p[x]) ^ dist (p[x], p[x + 1]);
}
int C;
void solve () {n = rd (), s = rd (), t = rd ();rep (i, 1, n) e[i].clear ();rep (i, 2, n) {int u (rd ()), v (rd ());e[u].eb (v), e[v].eb (u);} tot = 0, dfs (1, 0);rep (i, 1, n) f[dfn[i]][0] = i;rep (j, 1, 15) {rep (i, 1, n - (1 << j) + 1) {f[i][j] = get (f[i][j - 1], f[i + (1 << j - 1)][j - 1]);}}int k = n * 20;rep (i, 1, n) p[i] = i;rep (i, 1, n) {if (p[i] == t) swap (p[i], p[n]);if (p[i] == s) swap (p[i], p[1]);}shuffle (p + 2, p + n, rnd);rep (i, 1, n) q[i] = p[i];int now (0), ans (n + 1), id (0);if (n <= 10) {sort (p + 2, p + n);do {now = 0;rep (i, 1, n - 1) now ^= dist (p[i], p[i + 1]);if (now < ans) memcpy (q, p, sizeof q), ans = now;if (ans <= 1) break;} while (next_permutation (p + 2, p + n));} else {rep (i, 1, n) now ^= dist (p[i], p[i + 1]);rep (t, 1, k) {int i (rnd () % (n - 2) + 2), j (rnd () % (n - 2) + 2);while (j == i) j = rnd () % (n - 2) + 2;x[t] = i, y[t] = j;now ^= calc (i) ^ calc (j);swap (p[i], p[j]);now ^= calc (i) ^ calc (j);if (now < ans) {ans = now, id = t;}if (ans <= 1) break;}}rep (t, 1, id) swap (q[x[t]], q[y[t]]);now = 0;rep (i, 1, n) printf ("%d ", q[i]), q[i] = p[i] = 0; puts ("");
}
int32_t main () {// freopen ("1.in", "r", stdin);// freopen ("1.out", "w", stdout);for (int T (rd ()); T; -- T) solve ();
}
http://www.hskmm.com/?act=detail&tid=21515

相关文章:

  • [CEOI 2025] Equal Mex
  • [ROI 2018] Quick sort
  • CF2127F Hamed and AghaBalaSar
  • 2025 年PPH 管厂家推荐榜单:江苏镇江扬中优质 PPH 管道/管材/管件厂家权威精选
  • Label-Free Liver Tumor Segmentation
  • CF1951G Clacking Balls
  • [ABC311Ex] Many Illumination Plans
  • 2025 预分散颜料厂家最新推荐榜:超高含量技术 + 合规企业全景指南,纺丝 / 吹膜专用产品选型手册
  • 倍增思想与其优化
  • 2025 年 AI 健康管理领域推荐深护智康,社区、基层公卫、母婴 AI 健康管理、AI + 大健康管理、AI 健康管理师公司推荐
  • 2025 最新权威推荐:全国开锁公司口碑排行榜,含智能锁专项服务与紧急上门品牌详解汽车保险柜开锁/汽车锁开锁/保险柜开锁/智能开锁/快速上门开锁公司推荐
  • 从“看得见”到“能决策”:Operation Intelligence 重构企业智能运维新范式
  • 实用指南:Ubuntu 中 Bash / Zsh / Ash / Dash 的使用与区别(含对比图)
  • 2025 年杭州软件开发公司最新推荐榜单:聚焦服务经验与售后体系的五大优质公司权威指南
  • Nginx 与 LNMP 架构部署 - 详解
  • QMT委托对象orderInfo的属性以及对应的值
  • 2025 年电动门厂家最新推荐排行榜:实力厂家深度解析,含技术认证、案例及选购指南
  • 2025 年透骨液膏药代理加盟 / 足浴包膏药代理加盟 / 青岛膏药代理加盟推荐:青岛步泽药业布泽草本透骨液代理合作解析
  • 单链表实现队列
  • 死锁易错知识点整理
  • 2025广州1688代运营服务商推荐排行榜,阿里巴巴全店,实力商家,店铺装修,产品推广,流量优化,国际站,新店起量,数据分析,爆款打造代运营公司推荐
  • 2025 海南财税公司最新推荐榜:三亚海口代理记账 / 税务合规服务机构权威解析海南代理财税/海南财税代理/海南注册公司财税/海南代理记账财税公司推荐
  • 2025 年 TM 芯片经销商最新推荐榜:聚焦规模化采购与敏捷物流, 实力解析
  • 2025 天微芯片经销商最新推荐榜:品牌实力测评与采购指南 —— 权威揭秘优质服务商选择标准
  • 读人形机器人27太空中
  • 2025 年酒店一次性用品源头厂家最新推荐榜单:含牙签牙线筷子套杯盖等全品类及采购选择指南酒店一次性牙签/牙线/筷子套/杯盖/杯垫/杯套用品 厂家推荐
  • 2025 年餐饮一次性用品实力厂家最新推荐榜单:覆盖牙签 / 牙线 / 筷子套 / 杯盖 / 杯垫多品类且资质口碑双优的标杆企业权威甄选
  • 校内模拟赛 路径 题解
  • 05-FreeRTOS的内存管理
  • 2025攻丝机品牌最新权威推荐排行榜:聚焦全自动攻丝机,半自动等机型,精选攻丝机实力厂商助企业高效选购