当前位置: 首页 > news >正文

P6680 [CCO 2019] Marshmallow Molecules

思路

一个简单的观察是以 \(a\) 从小到大的顺序操作能将所有可加的边都加上,因为操作 \(a = i\) 时不会使小于 \(i\) 的点增加新边,进而产生新的 \(a < i\) 操作。则有一个暴力的思路是从 \(1\)\(n\) 枚举 \(a\),将所有 \(a\) 连向大于 \(a\) 的点之间都加上边,复杂度 \(O(n^3)\)

显然两两暴力连接是没前途的。观察操作形式,发现枚举 \(a\) 时只要找到 \(a\) 连向的点中最小的 \(x\),并只添 \(x\) 与其他 \(a\) 连向的点的边,得到的结果与暴力相同,因为除 \(x\) 外的点之间未连接的边会在 \(a = x\) 时进一步连接,直至最终全部被添加。

此时操作相当于将 \(a\)\(x\) 向编号大的点连出的点集合并,并计算 \(x\) 点集中新增的点数。使用启发式合并,可以做到 \(O(M \log M)\)

Code

#include<iostream>
#include<set>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=1e5+5;
int n,m;
long long ans=0;
set<int>G[N];
int main()
{//freopen("verify.in","r",stdin);//freopen("verify.out","w",stdout);IOS;cin>>n>>m;for(int i=1;i<=m;i++){int u,v;cin>>u>>v;G[u].insert(v);}for(int i=1;i<=n;i++){ans+=G[i].size();if(!G[i].empty()){int maxx=*G[i].begin();G[i].erase(maxx);if(G[i].size()>G[maxx].size())swap(G[i],G[maxx]);for(int v:G[i])G[maxx].insert(v);}}cout<<ans<<'\n';return 0;
}

完结撒花~

http://www.rkmt.cn/news/48342.html

相关文章:

  • ANT天线ESD防护
  • 2025短视频拍摄公司排名与推荐:3个核心标准帮你选对团队,避开无效投入
  • 助力企业构建 AI 原生应用,函数计算 FunctionAI 重塑模型服务与 Agent 全栈生态
  • 小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇数据库篇MySQLMSSQLOracle自动化方案
  • vue2 混同,封装公共方法 - 东方不败-
  • source insight4菜单工具按钮变乱恢复
  • 2025年新疆高三复读班权威推荐榜单:高三复读全日制/高三复读班/清北复读班学校精选
  • 深入解析:Linux Cgroup与Device Whitelist详解
  • 合并、拼接一个文件夹及其所有子文件夹中的代码文件(删除空行;软著源代码)
  • 2025年比较好的仪器计量校准最新TOP厂家排名
  • 2025年11月征地律师推荐榜:行政诉讼实战案例排行
  • 2025年11月乳清蛋白粉产品对比榜:吸收率与认证指标排行
  • SpringBoot-入门介绍 - 详解
  • Java算法题常用函数
  • 基于粒子群优化(PSO)算法的图像配准MATLAB实现
  • 2025年11月乳清蛋白粉产品推荐榜:纽特舒玛领衔五强对比排行
  • 2025年口碑好的除四害用户最信赖榜
  • 2025年11月熬夜急救产品推荐评测:五款精华熬夜修护榜
  • 2025年北京医疗事故案件律师权威推荐榜单:医疗侵权案/医疗事故鉴定案/医疗事故赔偿案律师团队精选
  • 领嵌iLeadE-588智能网关设备物联网应用中重要的设备
  • 2025年质量好的专利评估高信赖度企业
  • Python代码规范:如何写出符合PEP8的代码
  • OpenCV Python 绑定:原理与实战 - 教程
  • 【转载】ACM MM 投稿论文模板修改成投稿模式
  • 禅道本地环境搭建
  • Python 列表List 简介
  • 智能制造与AI人工智能落地
  • 2025年专业的营销短信平台实力供应商推荐榜
  • 2025年专业的注册公司高评价服务榜
  • 关于AT32部分芯片带有SPIM,如何开启外部flash和SPIM驱动的代码分享