[USACO2022OPENS] Visits
题目描述
Bessie 的 \(N\)(\(2\le N\le 10^5\))个奶牛伙伴(编号为 \(1\cdots N\))每一个都拥有自己的农场。对于每个 \(1\le i\le N\),伙伴 i 想要访问伙伴 \(a_i\)(\(a_i\neq i\))。
给定 \(1\ldots N\) 的一个排列 \((p_1,p_2,\ldots, p_N)\),访问按以下方式发生。
对于 \(1\) 到 \(N\) 的每一个 \(i\):
- 如果伙伴 \(a_{p_i}\) 已经离开了她的农场,则伙伴 \(p_i\) 仍然留在她的农场。
- 否则,伙伴 \(p_i\) 离开她的农场去访问伙伴 \(a_{p_i}\) 的农场。这次访问会产生快乐的哞叫 \(v_{p_i}\) 次(\(0\le v_{p_i}\le 10^9\))。
对于所有可能的排列 \(p\),计算所有访问结束后可能得到的最大哞叫次数。
输入格式
输入的第一行包含 \(N\)。
对于每一个 \(1\le i\le N\),第 \(i+1\) 行包含两个空格分隔的整数 \(a_i\) 和 \(v_i\)。
输出格式
输出一个整数,为所求的答案。
注意这个问题涉及到的整数可能需要使用 64 位整数型(例如,C/C++ 中的 "long long")。
样例 #1
样例输入 #1
4
2 10
3 20
4 30
1 40
样例输出 #1
90
提示
【样例解释】
如果 \(p=(1,4,3,2)\),则
- 伙伴 \(1\) 访问伙伴 \(2\) 的农场,产生 \(10\) 次哞叫。
- 伙伴 \(4\) 看到伙伴 \(1\) 已经离开了农场,所以无事发生。
- 伙伴 \(3\) 访问伙伴 \(4\) 的农场,又产生 \(30\) 次哞叫。
- 伙伴 \(2\) 看到伙伴 \(3\) 已经离开了农场,所以无事发生。
这样总计得到了 \(10+30=40\) 次哞叫。
另一方面,如果 \(p=(2,3,4,1)\),则
- 伙伴 \(2\) 访问伙伴 \(3\) 的农场,产生 \(20\) 次哞叫。
- 伙伴 \(3\) 访问伙伴 \(4\) 的农场,产生 \(30\) 次哞叫。
- 伙伴 \(4\) 访问伙伴 \(1\) 的农场,产生 \(40\) 次哞叫。
- 伙伴 \(1\) 看到伙伴 \(2\) 已经离开了农场,所以无事发生。
这样总计得到了 \(20+30+40=90\) 次哞叫。可以证明这是所有可能的排列 \(p\) 中访问结束后得到的最大可能的哞叫次数。
首先很明显这是一颗基环树。
对于每个非环上的点,那头牛都可以先让子树访问完他他在去访问别人。而环上会刚好有一头牛访问不到。
现用拓扑去环,然后对于每个环,选出眸叫次数最少的那头牛,让他不能访问别人即可。
#include<cstdio>
#include<iostream>
const int N=1e5+5;
int a[N],v[N],n,in[N],l=1,r,q[N],ret=1e9;
long long ans,x;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",a+i,v+i),in[a[i]]++,ans+=v[i];
for(int i=1;i<=n;i++)
if(!in[i])
q[++r]=i;
while(l<=r)
{
in[a[q[l]]]--;
if(!in[a[q[l]]])
q[++r]=a[q[l]];
++l;
}
for(int i=1;i<=n;i++)
{
if(in[i])
{
ret=1e9,x=i;
while(in[x])
{
in[x]=0;
ret=std::min(ret,v[x]);
x=a[x];
}
ans-=ret;
}
}
printf("%lld",ans);
return 0;
}
[USACO2022OPENS] Visits的更多相关文章
- PV(Pageviews)、访问(Visits)和访问者(Visitors)的区别
1. 在GA上,每个页面每次加载将被记为一次PV.举例来说,一次用户访问页面顺序为:页面A->页面B->页面A,然后离开了你的站点,那这次用户访问(Visits)的PV总计为3次. 2 ...
- P5836 [USACO19DEC]Milk Visits S 从并查集到LCA(最近公共祖先) Tarjan算法 (初级)
为什么以它为例,因为这个最水,LCA唯一黄题. 首先做两道并查集的练习(估计已经忘光了).简单来说并查集就是认爸爸找爸爸的算法.先根据线索理认爸爸,然后查询阶段如果发现他们的爸爸相同,那就是联通一家的 ...
- 【题解】[USACO19DEC]Milk Visits G
题目戳我 \(\text{Solution:}\) 这题不要把思想局限到线段树上--这题大意就是求路径经过的值中\(x\)的出现性问题. 最开始的想法是值域线段树--看了题解发现直接\(vector\ ...
- P5838 [USACO19DEC]Milk Visits G
发现是一道比较裸的树上莫队,于是就开始刚,然后发现好像是最难的一道题--(本题解用于作者加深算法理解,也欢迎各位的阅读) 题意 给你一棵树,树有点权,询问一条路径上是否有点权为 \(c\) 的点. 题 ...
- Entity Framework 6 Recipes 2nd Edition(11-6)译 -> 从一个”模型定义”函数里返回一个复杂类型
11-6.从一个”模型定义”函数里返回一个复杂类型 问题 想要从一个”模型定义”函数返回一个复杂类型 解决方案 假设我们有一个病人(patient)和他们访客(visit)的模型,如 Figure 1 ...
- How do servlets work-Instantiation, sessions, shared variables and multithreading[reproduced]
When the servletcontainer (like Apache Tomcat) starts up, it will deploy and load all webapplication ...
- SparkStreaming实现Exactly-Once语义
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 译自:http://blog.cloudera.com/blog/2015/03/exactly ...
- Federated Identity Pattern 联合身份模式
Delegate authentication to an external identity provider. This pattern can simplify development, min ...
- Javascript本地存储小结
前言 总括:详细讲述Cookie,LocalStorge,SesstionStorge的区别和用法. 人生如画,岁月如歌. 原文博客地址:Javascript本地存储小结 知乎专栏&& ...
- AAU
AAU (Active Antenna Unit) In the MBB (Mobile Broadband) era, the astonishing growth in data traffic ...
随机推荐
- 《Python魔法大冒险》007 被困的精灵:数据类型的解救
小鱼和魔法师深入魔法森林,树木之间流淌着神秘的光芒,每一片叶子都似乎在低语着古老的咒语.不久,他们来到了一个小湖旁,湖中央有一个小岛,岛上困着一个透明的泡泡,里面有一个悲伤的精灵. 小鱼看着那个精灵, ...
- HTML网页/KRPano项目一键打包EXE工具(HTML网页打包成单个windows可执行文件exe)
HTML一键打包EXE工具使用说明 工具简介 HTML一键打包EXE工具(HTML封装EXE,桌件)能把任意HTML项目(网址)一键打包为单个EXE文件,可以脱离浏览器和服务器,直接双击即可运行.支持 ...
- IP协议的发展历程
1. IP协议 1.1为什么需要IP协议 好像ip地址就像每个人的家门号一样家喻户晓,被大家默认用来作为寻址的门牌号,起初,设计IP地址也是为了寻找某台主机,但是作为世界上家喻户晓的IPv4,大家不应 ...
- Java 21新特性:Sequenced Collections(有序集合)
在JDK 21中,Sequenced Collections的引入带来了新的接口和方法来简化集合处理.此增强功能旨在解决访问Java中各种集合类型的第一个和最后一个元素需要非统一且麻烦处理场景. 下面 ...
- 《HelloGitHub》第 90 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- Fisher线性判别分析(二分类)
LDA(Linear Discriminant Analysis)是一种经典的线性判别方法,又称Fisher判别 分析.该方法思想比较简单:给定训练集样例,设法将样例投影到一维的直线 上,使得同类样例 ...
- 2020/4/26 2-sat 学习笔记
2-sat 吧.... 其实我jio得它一点都不难 嗯 2-sat是个啥东西呢?其实就是有很多人,他们每个人有两个要求,一个要求可以说是要求一个数为0或1而对于第i个数,我们可以选择为0或为1最终询问 ...
- umich cv-4-1 卷积网络基本组成部分介绍
这节课中介绍了卷积网络的基本组成部分(全连接层,激活函数,卷积层,池化层,标准化等),下节课讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的 卷积网络组成部分 前言 卷积层 池化层 norma ...
- Golang后端大厂面经!
大家好,我是阳哥.专注Go语言的学习经验分享和就业辅导. 之前分享了很多 Golang 后端的大厂面经,不少同学在催更新,这篇给大家继续安排. 本文来自一位同学的投稿,面试深X服的面经汇总,前半部分主 ...
- 2023 SHCTF-校外赛道 WEB WP
WEEK1 babyRCE <?php $rce = $_GET['rce']; if (isset($rce)) { if (!preg_match("/cat|more|less| ...