「Poetize4」创世纪
在tyvj上怀疑爆栈了.....或许一定是我写挂了。以后调吧。。。
UPD:bzoj上过了。。。
题解:https://blog.csdn.net/popoqqq/article/details/39965603
po姐太神了!
#include <cstdio>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1001001,inf=0x3f3f3f3f;
int n;
int head[N],ans,cnt,a[N],p,tp,f[N],g[N],fa[N];
bool vis[N];
struct Edge {
int to,nxt;
bool cir;
} e[N];
void add(int bg,int ed) {
e[++cnt].to=ed;
e[cnt].nxt=head[bg];
head[bg]=cnt;
}
void dfs(int x) {
vis[x]=1;
if(vis[a[x]]) p=x;
else dfs(a[x]);
}
void Treedp(int x) {
f[x]=1;
g[x]=inf;
vis[x]=1;
if(x==tp) g[x]=0;
for(int i=head[x]; i; i=e[i].nxt) {
if(!e[i].cir&&e[i].to!=fa[x]) {
fa[e[i].to]=x;
Treedp(e[i].to);
g[x]+=min(g[e[i].to],f[e[i].to]);
g[x]=min(g[x],f[x]+f[e[i].to]-1);
f[x]+=min(g[e[i].to],f[e[i].to]);
}
}
}
int main() {
freopen("input.txt","r",stdin);
scanf("%d",&n);
printf("%d",n);
for(int i=1,x; i<=n; i++) {
scanf("%d",&a[i]);
add(a[i],i);
}
for(int i=1; i<=n; i++) {
if(!vis[i]) {
dfs(i);
e[p].cir=1;
tp=a[p];
Treedp(p);
int tmp=f[p];
tp=0;
Treedp(p);
ans+=min(tmp,g[p]);
}
}
printf("%d",n-ans);
}
Please contact lydsy2012@163.com!
「Poetize4」创世纪的更多相关文章
- 「Poetize4」上帝造题的七分钟2
描述 Description "第一分钟,X说,要有数列,于是便给定了一个正整数数列.第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作.第三分钟,k说,要能查询, ...
- 「Poetize4」玉蟾宫
描述 Description 这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda.现在freda要在这里卖萌...它要找 ...
- Poetize4 创世纪
3037: 创世纪 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 123 Solved: 66[Submit][Status] Description ...
- CH6401 创世纪
6401 创世纪 0x60「图论」例题 描述 上帝手中有 N(N≤10^6) 种世界元素,每种元素可以限制另外1种元素,把第 i 种世界元素能够限制的那种世界元素记为 A[i].现在,上帝要把它们中的 ...
- 「Python」socket指南
开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...
- 「MoreThanJava」计算机发展史—从织布机到IBM
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「MoreThanJava」一文了解二进制和CPU工作原理
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「MoreThanJava」机器指令到汇编再到高级编程语言
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「MoreThanJava」Java发展史及起航新世界
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
随机推荐
- Sigma Function 数学 因子求和
Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma ...
- UVA - 348Optimal Array Multiplication Sequence(递推)
id=19208">题目:Optimal Array Multiplication Sequence 题目大意:给出N个矩阵相乘.求这些矩阵相乘乘法次数最少的顺序. 解题思路:矩阵相乘 ...
- HDU 2830 Matrix Swapping II (预处理的线性dp)
Matrix Swapping II Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- ZOJ2724_Windows Message Queue(STL/优先队列)
解题报告 题意: 看输入输出就非常明确. 思路: 优先队列. #include <algorithm> #include <iostream> #include <cst ...
- 零基础学python-2.24 一些经常使用函数
今天我举一些经常使用的函数,让大家了解一下: 函数 作用 dir([obj]) 浏览对象的属性 help([obj]) 显示对象的文档字符串 ini([obj]) 将对象转为整形 len([obj]) ...
- luogu1445 [violet]樱花 阶乘分解
题目大意 求方程$$\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$$的正整数解的组数. 思路 咱们把式子整理得$$xy-(x+y)N!=0$$.$xy$和$x+y$?貌似可 ...
- 【概率证明】—— sum and product rules of probability
1. sum and product rules of probability ⎧⎩⎨p(x)=∫p(x,y)dyp(x,y)=p(x|y)p(y) sum rule of probability 的 ...
- php递归取目录下的所有文件(原创)
function get_dir_all_files($path) { $result=array(); $temp=array(); if(filetype($path)=='dir') { $di ...
- SilverLight Q&A
1.在学校prism,Unity框架的时候,遇到的问题“The IModuleCatalog is required and cannot be null in order to initialize ...
- Pinpoint 监控
####Hbase数据################ 参考: 然而没有卵用: https://blog.csdn.net/iamlihongwei/article/details/52882749? ...