AGC203F 题解

news/2025/9/24 23:41:52/文章来源:https://www.cnblogs.com/Antares-qwq/p/19110323

Description

给定一棵 \(n\) 个点的外向树,每个节点上有一个 \(0/1\) 的权值,求一个节点拓扑序使得节点权值的逆序对个数最小,输出最小值。 \(n \le 2 \times 10^5\)

Solution

首先,对于一个 \(0\) 的节点,可以把其和父亲绑在一起,选了其父亲后立即就选它。

这样可以把整棵树分成若干连通块,每个连通块仅有深度最小的节点为 \(1\) 其余全 \(0\),然后对这些连通块进行拓扑排序。为了使逆序对数最小,显然应该优先让 \(sz\) 大的在序列中排在前面。

然后假了。

因为可能有一个小连通块,后面跟着一个大连通块,但是整个一坨东西选的比较晚导致答案不优。

我们发现拓扑排序本质就是把连通块按照一定次序往根节点上合并。发现连通块可以不和根节点合并,只和父亲所在的连通块合并,这样会先把大连通块与小连通块合并成更优的连通块,使其选的早一些,保证了决策正确性。

现在只需给出大连通块的定义(即排在前面的连通块具有的特征)。将连通块中 \(0\) 的个数记为 \(cnt_0\)\(1\) 的个数记为 \(cnt_1\),那么当前连通块更优当且仅当 \(cnt_1 \times cnt_0'<cnt_0 \times cnt_1'\)。也就是邻项交换的思想。

可以把散点当作连通块进行合并。

使用并查集维护 \(cnt_0\)\(cnt_1\),用优先队列维护连通块即可。复杂度 \(O(n \log n)\)

Code

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,p[N],ans;
int cnt0[N],cnt1[N];
int fa[N];
bool vis[N];
int find(int x){return (fa[x]==x)?x:fa[x]=find(fa[x]);}
void merge(int x,int y)
{x=find(x),y=find(y);if(x==y)return ;fa[y]=x;ans+=cnt1[x]*cnt0[y];cnt0[x]+=cnt0[y];cnt1[x]+=cnt1[y];cnt0[y]=cnt1[y]=0;
}
struct node
{int num,x,y;bool operator <(const node &t)const{return x*t.y<y*t.x;}
};
priority_queue<node>q;
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cin>>n;for(int i=2;i<=n;i++)cin>>p[i];for(int i=1;i<=n;i++){int x;cin>>x;fa[i]=i;if(x==0)cnt0[i]=1;else cnt1[i]=1;q.push({i,cnt0[i],cnt1[i]});}while(!q.empty()){auto [x,tmp1,tmp2]=q.top();q.pop();if(vis[x])continue;vis[x]=1;if(p[x]==0)continue;int nxt=find(p[x]);merge(nxt,x);q.push({nxt,cnt0[nxt],cnt1[nxt]});}cout<<ans<<"\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有自己的网站做淘宝联盟号做吗网页设计与制作教程psd格式

前言 中断服务程序往往都是在CPU关中断的条件下执行的&#xff0c;以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长&#xff0c;否则容易丢失中断信号。为此&#xff0c;Linux将中断服务程序一分为二&#xff0c;各称作“Top Half”和“Bottom Half”。前者通常对…

网页制作网站花店wordpress响应式主题在哪

问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象&#xff0c;那么对下面的错误一定不陌生。 接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。 这还可能是由于服务器中止了 HTTP …

临沂市住房和城乡建设厅网站html网站开发流程

Linux下一般用date 记录当前时间&#xff0c;尤其是我们需要保存测试log的时候&#xff0c;或者设计一个跑多长时间的脚本都需要时间戳。下面看一下平时最常用的几种写法 1 date “%Y-%m-%d %H:%M” 显示具体时间 2 修改时间 date -s 3 date %s :当前时间的时间戳 显示具体时…

某旅行社网站建设论文网络设计费收费标准

亲爱的爬虫探险家&#xff01;在网络爬虫的世界里&#xff0c;自动设置代理服务器是一个非常有用的技巧。今天&#xff0c;作为一家代理服务器供应商&#xff0c;我将为你呈上一份轻松实用的教程&#xff0c;帮助你轻松搞定爬虫自动设置代理服务器。 一、为什么需要自动设置代…

AtCoder Beginner Contest 423 DEF题解

D - Long Waiting 题意: 餐厅最多同时容纳K人 单队列管理,先进先出 N组顾客按顺序到达,每组有:到达时间Aᵢ、人数Cᵢ、用餐时间Bᵢ 进入条件: 在队首位置 餐厅现有人数 + 该组人数 ≤ K 需要计算每组实际进入餐厅…

高级的 SQL 查询技巧

1.常见表表达式(CTEs) with toronto_ppl as ( SELECT DISTINCT name FROM population WHERE country = "Canada" AND city = "Toronto") , avg_female_salary as ( SEL…

网站pc开发上海商旅平台app

婚恋相亲红娘牵线系统是一个综合性的婚恋交友平台&#xff0c;它集成了多种功能以帮助用户找到心仪的伴侣。以下是其主要功能的详细介绍&#xff1a; 用户信息深度分析和匹配&#xff1a;该系统利用大数据和人工智能技术&#xff0c;对用户的基本信息&#xff08;如年龄、身高…

在台风天找回了生活的本貌

早上7点30分,风拍打窗户的声音很大,加上我的生物钟也在7点30分,我醒了。我望向窗外,天地灰蒙,树木狂舞,这才想起今天广东刮台风,各地都停工停课了。我看到家人和对面的邻居都安静地待在家中,平日里匆忙的脚步被…

网站建设事宜wordpress可以企业网站

随着市场竞争的日益激烈&#xff0c;企业对产品开发的要求也越来越高。如何在快速变化的市场环境中&#xff0c;既保证产品的批量生产效率&#xff0c;又满足客户的个性化需求&#xff0c;成为了企业面临的重要挑战。IPD&#xff08;集成产品开发&#xff09;模式&#xff0c;作…

政务网站信息化建设情况网站的建设ppt

然后再来看列表操作 首先添加append方法 然后插入,坐标是要插入的下标,右边是插入的内容 看结果 1,2,3,4,5,6 然后这个extend,是逐个插入,放到后边 然后是修改,直接对下标赋值 看结果</

礼泉做网站表格我做视频网站

本章我们将编写坚持一百秒游戏&#xff0c;玩家通过鼠标控制火箭躲避一架UFO和越来越多的反弹子弹&#xff0c;效果如图所示。首先学习图片的导入和显示&#xff0c;并利用结构体实现一颗反弹的子弹&#xff1b;然后学习面向对象编程的知识&#xff0c;利用类和对象实现新版本的…

成都j网站制作如何做企业网络营销推广

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

经典战役回顾 现在离比赛结束还有 \(45\) 分钟。这个时候你列表中只有你没过 C,你没有任何思路,你发现 E1 是个题面不长看起来很小清新的交互构造题,你选择冲击。 在还有 \(20\) 分钟的时候你把握住了整体思路,准备…

湘潭市高新建设局施工报建网站农畜产品销售平台的网站建设

instanceof检查子父类&#xff08;或者是否能被强转&#xff09; 作用1&#xff1a;检查某对象是否是某类的子类 如&#xff1a;儿子类继承了父亲类。 检查儿子类对象是否属于父亲类 作用2&#xff1a;检查两个对象是否可以强转 语法&#xff1a; 子类对象 instanceof 父…

外国高端网站怎样登录建设互联网站

Axios 和 Ajax 都是用于发起 HTTP 请求的工具&#xff0c;但它们之间有一些重要的区别&#xff1a; Ajax&#xff1a; Ajax 是一种使用 JavaScript 发起异步 HTTP 请求的技术&#xff0c;通常通过 XMLHttpRequest 对象来实现。在使用 Ajax 时&#xff0c;需要手动处理请求和响应…

Error response from daemon: could not select device driver nvidia with capabilities: [[gpu]]

环境:WSL2下的Ubuntu24.04系统 场景:拉取ragflow的gpu版本镜像docker compose -f docker-compose-gpu.yml up -d时发生 其它信息:能在WSL2中使用nvidia-smi显示驱动版本信息 确认问题所在:执行dpkg -l | grep nvid…

中国建设工程造价管理协会登录网站壹壹推广联盟

前提是安装好redux相关关于在ts中使用最新版redux的方法记录_奋斗在前端的实习小白的博客-CSDN博客 1.下载 npm install redux-persist git地址&#xff1a;GitHub - rt2zz/redux-persist: persist and rehydrate a redux store 在项目根目录中配置好PersistGate标签 //re…

全内存12306抢票系统设计:基于位运算的高效席位状态管理

在高并发的列车售票场景中,传统基于数据库的方案往往面临性能瓶颈。每到春运、国庆等出行高峰,数万用户同时抢票,数据库查询和更新操作导致系统响应变慢甚至崩溃。本文将介绍一种创新的全内存售票系统设计方案,通过…

第三天

今天学习了离散数学的集合,受益匪浅。马克思主义原理更是让我流连忘返。