1 题目大意

1.1 题目翻译:

给定一个值域为 \([1,n]\) 的函数 \(f(x)\),让你求出最小的 \(k\),其中 \(k\) 满足 \(f^{(2k)}(x) = f^{(k)}(x)\)。

其实我觉得这题你谷翻译十分到位,建议没读懂题的还是去看你谷翻译罢。

1.2 数据范围:

对于 \(100\%\) 的数据:

  • \(1 \leq n \leq 200\)

1.3 *关于数据范围

这个 \(n\) 其实可以开到 \(2 \times 10^5\) 的,但前提是你得加一个高精度。出题人好仁慈,拜谢出题人。

2 解法分析

发现出现了 \(f^{k}(x)\) 这种东西,不难想到建图。

我们可以把 \(x\) 向 \(a_x\) 连一条有向边。不难发现,整个图被分成了多个连通块,每一个连通块都形似基环树。我们可以把每一个环的大小和一个点到环的最短距离算出来。

现在,我们分两种情况讨论。设答案为 \(k\):

  • 如果结点 \(u\) 在环中,设这个环大小为 \(s\),那么这个结点必须绕至少 \(s\) 次才能出现相等。所以,\(s \ | \ k\)。

  • 如果结点 \(u\) 不在环上,设这个结点到环的最短距离为 \(d\),那么这个结点只有走至少 \(d\) 次才能到环。所以,\(k \geq d\)。

于是,答案就简单了。我们把所有环的大小取最小公倍数 \(\operatorname{lcm}\),然后算出第二种结点 \(d\) 的最大值 \(p\)。如果 \(p \leq \operatorname{lcm}\),那么就成立;否则,还要用带余除法计算出最小的 \(w\),满足 \(w \cdot \operatorname{lcm} >= p\)。此时,\(w \cdot \operatorname{lcm}\) 即为答案。

3 AC Code

代码丑的要死,将就着看吧。

int dfs(int x) {
if (vis[x])
return dis[x];
vis[x] = 1;
dfn[x] = ++ timetmp;
int num = dfs(a[x]);
if (vis[a[x]] == 1)
p = a[x], num = dfn[x] - dfn[p] + 1;
else if (cycle[a[x]] == 1) dis[x] = 1;
else dis[x] = num + 1;
if (p > 0 && vis[p] == 1)
cycle[x] = 1, dis[x] = num;
vis[x] = 2;
return dis[x];
} void solve() {
cin >> n;
f (i, 1, n)
scanf("%lld", &a[i]);
int k = 1;
f (i, 1, n)
if (!vis[i]) {
p = -1;
dfs(i);
}
f (i, 1, n)
if (cycle[i])
k = k * dis[i] / __gcd(k, dis[i]);
int x = 0;
f (i, 1, n)
if (!cycle[i])
x = max(x, dis[i]);
if (x > k)
k = ((x - 1) / k + 1) * k;
printf("%lld\n", k);
}

CF542C 解题分析的更多相关文章

  1. [rctf](web)rcdn 解题分析,知识点总结

    比赛平台关闭了,没有截图,见谅.   解题思路流程: 分析网站结构,看源码,元素审计.发现以下信息. 要得到flag要获得一个pro cdn pro 子域名长度为3到6个字符 存在一个提交ticke页 ...

  2. codeforces 723E (欧拉回路)

    Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...

  3. codeforces716E (点分治)

    Problem Digit Tree 题目大意 给一棵树,有边权1~9. 询问有多少个点对(i,j),将i--j路径上的数字依次连接后所形成新数字可以被k整除.gcd(K,10)=1 解题分析 点分治 ...

  4. poj1741 (点分治)

    Problem Tree 题目大意 给一棵树,有边权.求树上距离小于等于K的点对有多少. 解题分析 点分治.对每一棵子树进行dfs,求出每棵子树的重心,继而转化为子问题. 对于经过根的路径i--j,令 ...

  5. HDU 5884 (贪心)

    problem sort 题目大意 有n个数组,每个数组有a[i]个元素,每次可以将至多k个数组合并为一个数组,所花费代价为这些数组的元素和.给定代价上限,求将所有数组合并为1个数组的最小k. 解题分 ...

  6. codeforces 341d (树状数组)

    problem Iahub and Xors 题目大意 一个n*n的矩阵,要求支持两种操作. 操作1:将一个子矩阵的所有值异或某个数. 操作2:询问某个子矩阵的所以值的异或和. 解题分析 由于异或的特 ...

  7. HDU 5869 (离线+树状数组)

    Problem Different GCD Subarray Query 题目大意 给定n个数的序列,有q个询问,每次询问一个区间中所有子区间所形成不同的gcd的数量. 解题分析 由于固定一个数为右端 ...

  8. HDU5840 (分块+树链剖分)

    Problem This world need more Zhu 题目大意 给一颗n个点的有点权的树,有m个询问,对于每个询问u,v,k,首先将点u到点v的最短路径上的所有点按顺序编号,u的编号为1, ...

  9. HDU 5398 (动态树)

    Problem GCD Tree 题目大意 n个点的无向完全图,标号1~n,每条边u-->v 的权值为gcd(u,v),求其最大生成树,输出最大边权和. n<=10^5,有多个询问. 解题 ...

  10. BZOJ3669 (动态树)

    Problem 魔法森林 (NOI2014) 题目大意 给n个点,m条边的无向图,每条边有两个权值a,b. 求一条从1-->n的路径,使得这条路径上max(a)+max(b)最小.输出最小值即可 ...

随机推荐

  1. Number of Islands——LeetCode进阶路

    原题链接https://leetcode.com/problems/number-of-islands/ 题目描述 Given a 2d grid map of '1's (land) and '0' ...

  2. python3里面比较两个字符串的不同【difflib】

    一.difflib库的用法 a = '/Users/melon/Desktop/odoo14/myaddons/watermark_design/fonts/SimSun.ttf' b = '/Use ...

  3. Java子类上加lombock注解@Data或者@ToString,日志中不包括父类的属性

    问题描述:Java子类上加lombock注解@Data或者@ToString,在翻阅日志的时候,发现不打印父类的属性. 问题分析:@Data在编译时会自动为实体类添加setter.getter和toS ...

  4. 20244104陈思淼 《Python程序设计》实验三报告

    课程:<Python程序设计> 班级:2441 姓名:陈思淼 学号:20244104 实验教师:王志强 实验日期:20254月20日 必修/选修: 公选课 1.实验内容 创建服务端和客户端 ...

  5. CSP-S 2020模拟训练题1-信友队T2 挑战NPC

    题意简述 有一个\(k\)维空间,每维的跨度为\(L\),即每一维的坐标只能是\(0,1, \cdots ,L-1\).每一步你可以移动到任意一个曼哈顿距离到自己小于等于\(d\)的任意一个合法坐标. ...

  6. 全国省市json文件

    [ { "label": "北京市", "value": "北京市", "children": [ ...

  7. PS简单图片拼接

    1.打开图片 首先打开需要拼接的图片两张 以这两张图片为例子 首先我们先看看这两张图片的宽高分别为多少 打开图像---->画布大小 好记录下来小姐姐宽大概17cm,高大概20cm. 再来看看提莫 ...

  8. ESP32-Arduino物联网工控(一)串口转TCP转发机项目简介

    Arduino 在物联网上配合ESP32简直就是神器! 然后现在大老板说新设备用ESP32来帮助原本没有联网功能的STM32单片机来进行调试...... 实现需求: 1.指定命令拍照,协议HTTP,并 ...

  9. windows10搭建gitlab服务器

    gitlab服务器没有win运行环境,所以需要先搭建个虚拟机:windows10+VMware(Centos7) +gitlab+局域网其他电脑访问 一:VMware 安装,网上找找有安装教程 二:虚 ...

  10. 【闲话 No.3】 并查集相关

    命に嫌われている. 小唐话 感觉有的时候已经无法与人正常交流,净做唐事.说些唐话了.或许是我无法准确猜到别人喜欢什么吧. 不过还是自己心底一点 joker 之心/私心作祟吧. 感觉我有时做的唐事真的挺 ...