「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 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
随机推荐
- GNUPlot绘制曲线
发现gnuplot在mac上编译安装相当方便,在线下为了測试java老堆和lucene索引大小,须要绘制两条线,可是直接点连的线很难看,所以后面使用贝塞尔曲线. 脚本例如以下: #! /usr/loc ...
- _DataStructure_C_Impl:基数排序
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #de ...
- java生成一张图片
public class CreateImage { public static void main(String[] args) throws Exception{ int width = 100; ...
- HDOJ 题目3308 LCIS(线段树,区间查询,区间合并)
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 解题报告 之 HDU5303 Delicious Apples
解题报告 之 HDU5303 Delicious Apples Description There are n apple trees planted along a cyclic road, whi ...
- C语言 - .c和.h文件的困惑
本质上没有任何区别. 只不过一般:.h文件是头文件,内含函数声明.宏定义.结构体定义等内容. .c文件是程序文件,内含函数实现,变量定义等内容.而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的 ...
- python时间戳
time.strftime("%Y-%m-%dT%H:%M:%S.000", time.localtime())
- Spring进行表单验证
转自:https://www.tianmaying.com/tutorial/spring-form-validation 开发环境 IDE+Java环境(JDK 1.7或以上版本) Maven 3. ...
- linux IPtable防火墙 禁止和开放端口(转)
linux IPtable防火墙 禁止和开放端口源:http://hi.baidu.com/zplllm/item/f910cb26b621db57c38d5983评: 1.关闭所有的 INPUT F ...
- [JavaEE] Spring事务配置的五种方式
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...