Solution -「CF 1586F」Defender of Childhood Dreams
\(\mathcal{Description}\)
Link.
定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarrow u<v\)。求一个对 \(E\) 的染色 \(f\),使得 \(\not\exist \lang v_1,v_2,\cdots,v_{k+1} \rang, |\{f(v_i,v_{i+1})\mid i\in[1,k]\}|=1\),同时最小化 \(f\) 的值域大小。
\(2\le k<n\le10^3\)。
\(\mathcal{Solution}\)
设 \(f\) 的值域大小为 \(c\),断言:\(c\ge\lceil\log_k n\rceil\)。
证明 该结论的等价表述是,若 \(f\) 值域大小为 \(c\),则 \(n\le k^c\)。当 \(c=0\) 时显然成立。接下来对 \(c\) 进行归纳:
任取一个 \(f\) 值域大小为 \(c\) 的,被合法染色的图 \(G\),并任取某种颜色 \(x\),据此将点集 \(V\) 划分为 \(V_1,V_2,\cdots,V_t\),使得 \(V_i\) 的导出子图中不存在颜色为 \(x\) 的边。这些点集之间的连边颜色全部为 \(x\),所以 \(t\le k\)。而仅考虑某个 \(V_i\) 的导出子图,它至多用 \(c-1\) 中颜色染色,由归纳假设,\(|V_i|\le k^{c-1}\),继而 \(|V|=\sum |V_i|\le k\cdot k^{c-1}=k^c\)。 \(\square\)
模仿归纳方法得到构造方法:划分点集,将点集之间的边染色,而后递归处理。复杂度上限为 \(\mathcal O(n^2)\)。
\(\mathcal{Code}\)
/*+Rainybunny+*/
#include <bits/stdc++.h>
#define rep( i, l, r ) for ( int i = l, rep##i = r; i <= rep##i; ++i )
#define per( i, r, l ) for ( int i = r, per##i = l; i >= per##i; --i )
const int MAXN = 1e3;
int n, k, mxc, ans[MAXN + 5][MAXN + 5];
inline void solve( const int l, const int r, const int clr ) {
if ( l == r ) return ;
if ( clr > mxc ) mxc = clr;
int s = ( r - l + k ) / k;
for ( int i = l; i <= r; i += s ) {
solve( i, std::min( i + s - 1, r ), clr + 1 );
rep ( u, l, i - 1 ) rep ( v, i, std::min( i + s - 1, r ) ) {
ans[u][v] = clr;
}
}
}
int main() {
scanf( "%d %d", &n, &k );
solve( 1, n, 1 );
printf( "%d\n", mxc );
rep ( i, 1, n ) rep ( j, i + 1, n ) printf( "%d ", ans[i][j] );
putchar( '\n' );
return 0;
}
Solution -「CF 1586F」Defender of Childhood Dreams的更多相关文章
- Solution -「CF 1342E」Placing Rooks
\(\mathcal{Description}\) Link. 在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...
- Solution -「CF 1622F」Quadratic Set
\(\mathscr{Description}\) Link. 求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...
- Solution -「CF 923F」Public Service
\(\mathscr{Description}\) Link. 给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...
- Solution -「CF 923E」Perpetual Subtraction
\(\mathcal{Description}\) Link. 有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机 ...
- Solution -「CF 1237E」Balanced Binary Search Trees
\(\mathcal{Description}\) Link. 定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: ...
- Solution -「CF 623E」Transforming Sequence
题目 题意简述 link. 有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9 ...
- Solution -「CF 1023F」Mobile Phone Network
\(\mathcal{Description}\) Link. 有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...
- Solution -「CF 599E」Sandy and Nuts
\(\mathcal{Description}\) Link. 指定一棵大小为 \(n\),以 \(1\) 为根的有根树的 \(m\) 对邻接关系与 \(q\) 组 \(\text{LCA}\ ...
- Solution -「CF 487E」Tourists
\(\mathcal{Description}\) Link. 维护一个 \(n\) 个点 \(m\) 条边的简单无向连通图,点有点权.\(q\) 次操作: 修改单点点权. 询问两点所有可能路 ...
随机推荐
- spring boot pom.xml 提示 ignored 具体解决
1.出现这个情况 2. 进入设置,找到 去掉勾选即可
- Go语言系列之标准库fmt
fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数会将内容 ...
- node之module与fs文件系统
命令行窗口(小黑屏).cmd窗口.终端.shell 开始菜单 --> 运行 --> CMD --> 回车 常用的指令: dir 列出当前目录下的所有文件 cd 目录名 进入到指定的目 ...
- Antd使用timePicker封装时间范围选择器(React hook版)
antd中提供了是日期范围选择器及datepaicker封装日期范围选择器的示例,但是没有时间选择范围的组件,这里使用两个timePicker组合一个事件范围选择器,通过disabled属性限定时间可 ...
- No shutdown animation in the electricity display only 1%
低电量自动关机时无关机动画 低电量自动关机时无关机动画1. 问题描述2. 分析3. solution4. 总结 1. 问题描述 DEFECT DESCRIPTION: No shutdown anim ...
- vs python2.7 bug
微软vs里面小细节的bug真他妈的多
- MyCms 开源自媒体系统后台 角色管理&管理员管理操作说明
角色管理 功能说明 一.添加角色基本信息 填写角色名称.简要描述(一般以角色功能.职位等信息来命名) 二.角色授权 点击右侧的"授权"按钮,进行对角色授权,选择需要授权的功能模块后 ...
- golang中循环或递归求阶乘
package main import "fmt" func factorialFor(num int) (ret int) { // 循环求阶乘 ret = 1 for i := ...
- Mac系统U盘制作教程
您可以将外置驱动器或备用宗卷用作安装 Mac 操作系统的启动磁盘. 以下高级步骤主要适用于系统管理员以及熟悉命令行的其他人员.升级 macOS 或重新安装 macOS 不需要可引导安装器,但如果您要在 ...
- zabbix-server3.4安装
1.安装yum源 rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rp ...