P9384 [THUPC 2023 决赛] 着色

P9384 [THUPC 2023 决赛] 着色

思维题+构造

三元环还可以,五元环有点抽象,考虑将其全归为奇环,那么题目就变成:求一种设边权的方案,使得只用边权 i 无法构成奇环。

那么这个限制等价于只保留边权为 i 的边的图是二分图,那么一条边的两个端点得是不同属性。考虑怎么构造二分图,看到 09 的边权和 n 的范围,考虑将其对应到二进制上每个位。构造方式:两点 ij 之间连边权为 ctz(ij)

证明这样连边的合法性,边权 i 连接的两个端点二进制上第 i 位一定不同,就将点分为了两类(第 i 位为 1 或为 0),此时如果保留边权为 i 的边,一定为二分图。

复杂度 O(n2)

#include <bits/stdc++.h>
#define pii std::pair<int, int>
#define mk std::make_pair
#define fi first
#define se second
#define pb push_back

using i64 = long long;
using ull = unsigned long long;
const i64 iinf = 0x3f3f3f3f, linf = 0x3f3f3f3f3f3f3f3f;

int n;
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
	std::cin >> n;

	for (int i = 1; i < n; i++) {
		for (int j = 1; i + j <= n; j++) {
			std::cout << __builtin_ctz(i ^ (i + j)); 
		}
		std::cout << "\n";
	}	

	return 0;
}
posted @   Fire_Raku  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示