首页 > 其他分享 >『做题记录』[AGC028C] Min Cost Cycle

『做题记录』[AGC028C] Min Cost Cycle

时间:2024-05-30 22:14:45浏览次数:14  
标签:AGC028C val Min ++ cntn Cost ans BLCK typ

[AGC028C] Min Cost Cycle

Description

  给定一个 \(n\) 条边的有向完全图,每个点有两个点权 \(a,b\) 一条边 \((u,v)\) 的权值为 \(\min(a_u,b_v)\) 。
  求边权和最小的哈密顿回路的边权和。
   \(2\leq n\leq 10^5, 1\leq a,b\leq 10^9\) 。

Solution

Phase 1

  首先既然是哈密顿路,那么一定会经过所有的 \(a_i, b_i\) 各一次。那么通过这一点,我们可以把题目的重心从图的结构中移开,去更多地关注点的性质。先不考虑合法性,令对最终答案有贡献的数的集合为 \(T\) ,那么点的结构无非 \(4\) 种:

  • ① \(a_i\in T 且 b_i\in T\)

  • ② \(a_i\not\in T 且 b_i\in T\)

  • ③ \(a_i\in T 且 b_i\not\in T\)

  • ④ \(a_i\not\in T 且 b_i\not\in T\)

(图中的箭头表示有向边,而包含有向边的点表明该有向边的 \(\min(a,b)\) 在该点上)

  接下来就是考虑如何把所有点拼成一个环。
  首先发现②可以全部首尾相接等价地缩成一个②,③也同理。一个很显然的拼法是在全部点都是②或③的情况下,首尾相接拼成一个环,如果既有②也有③且无①、④,那么是无法拼成一个点的。考虑有①、④的情况,由于 \(|T| = n\) ,所以①④的数量一定是相等的那么可以通过在一个④左边拼上③(如果有③的话),右边拼上②(如果有②的话),然后在③②间交替插入①④,像这样:

即是一种拼法。

Phase 2

  我们考虑一个贪心的构造,钦定将 \(a,b\) 放在一起排序完后最小的 \(n\) 个值为答案,并检测其正确性。
  稍微总结一下 Phase 1 便不难得到,有且仅有一种情况是无法拼成环的,那就是每个点有各有一个 \(a/b\) 且不全为 \(a\) 或 \(b\) 。
  在这之后我们继续贪心地考虑,即在答案中删掉第 \(n\) 小的值然后加上第 \(n+1\) 小的值。这次仅有一种极端的情况不合法,即第 \(n,n+1\) 为同一个点的 \(a,b\) 且仍没有形成全为 \(a\) 或 \(b\) 的情形,并没有改变前一种情形我们所提到的不合法性质。剩下的两种贪心变换方式一定是合法的,取答案取最小即可。

Code

点击查看代码
int tax[N], typ[2];
struct BLCK{LL val, id, c;}a[N];

int main() {
	int n = read(), cntn = 0, flag = 0;
	LL ans = 0;
	rep (i, 1, n)	a[++cntn] = (BLCK){read(), i, 0}, a[++cntn] = (BLCK){read(), i, 1};
	sort(a+1, a+1+cntn, [&](BLCK x, BLCK y){return x.val < y.val;});
	rep (i, 1, n) flag |= (++tax[a[i].id] > 1), ans += a[i].val, ++typ[a[i].c];
	if (flag || max(typ[0], typ[1]) == n) return printf("%lld\n", ans), 0;
	ans += a[n+1].val-a[n].val, --typ[a[n].c], ++typ[a[n+1].c];
	if (a[n].id != a[n+1].id || max(typ[0], typ[1]) == n) return printf("%lld\n", ans), 0;
	printf("%lld\n", min(ans-a[n+1].val+a[n+2].val, ans-a[n-1].val+a[n].val));
	return 0;
}

Summary

  分析问题时,可以考虑从图的性质入手,将问题的本质提炼出来,转化问题为更易求解的形式。

标签:AGC028C,val,Min,++,cntn,Cost,ans,BLCK,typ
From: https://www.cnblogs.com/BlackCrow/p/18223317

相关文章

  • 如何初始化 FIrebase 云函数,以便使用凭据和 JSON 验证 Firebase Admin SDK 服务账户?
    我觉得我已经阅读了所有可用的资料,但我仍然无法理解这一点。我非常喜欢Google的产品,但有时其文档的简洁性令人头疼。我阅读了这个令人难以置信的雄辩答案,这个答案的作者和我一样毫无头绪,但他觉得有必要写一本循序渐进的儿童指南。不幸的是,他的回答过于针对他的项目,而不是我的项......
  • python之生成xmind
    今天为啥要说这个呢,因为前几天做接口测试,还要写测试用例,我觉得麻烦,所以我就用了python里面xmind的插件。自动生成了测试用例,数据来源是json。......
  • 通过admin监视任务
    通过admin监视任务在控制台监控任务执行情况,还不是很方便,最好是能够通过web界面看到任务的执行情况,如有多少任务在执行,有多少任务执行失败了等这个Celery也是可以做到了,就是将任务执行结果写到数据库中,通过web界面显示出来。安装插件pipinstalldjango-celery-results注册......
  • 通过admin配置定时任务
    通过admin配置定时任务安装包pipinstalldjango-celery-beat#使用这个的前提是你已经安装了其他包了pipinstallDjangopipinstallcelerypipinstallredispipinstalleventlet去app中注册INSTALLED_APPS=[ #其他包"django_celery_beat",]屏蔽掉原来......
  • esp32-s3-mini-1 otg board, uvc调试记录
    网上购买了一块ESP32-S3-USB-OTG开发板(非乐鑫官方开发板)。准备实现usbuvccamera+lcd显示。使用esp-idf/example/usb/host/uvc进行测试,修改了引脚,对USB供电和数据切换的引脚重新校正,出现报错:0x40056fc9:memcpyinROM0x4200b219:_uvc_process_payloadatC:/Users/yinsu......
  • P9327 [CCC 2023 S4] Minimum Cost Roads
    原题链接题解贪心,我管这种叫做策略贪心,即按照某种顺序或者角度去贪心可以得到最优解既然题目要求任意两点间最短路最小的同时,价格也最小,那么我们就按长度为第一关键字,花费为第二关键字排序。然后遍历所有边看看这条边能否使用遍历过程的策略:如果这条边加入后,这条边两端的节点......
  • Rhodamine B PEG Rhodamine B,罗丹明聚乙二醇罗丹明,分子量:1k,2k,3.4k,5k
    西安凯新生物作为高分子PEG供应商WMJ为大家介绍(RhodamineBPEGRhodamineB),试剂仅用于科学研究,不可用于人类,非药用,非食用。分子量:1k,2k,3.4k,5k,10k,20k(可按需定制)中文名称:罗丹明聚乙二醇罗丹明英文名称:RhodamineBPEGRhodamineB结构式:物理性质:外观特点:固体、粉末端......
  • WPF Image ZoomIn ZoomOut pan
    <Windowx:Class="WpfApp120.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • Java程序员修炼之道 (图灵程序设计丛书 79) ([英]Benjamin J. Evans [荷兰]Martijn Ve
    我的阅读笔记:主要内容:Java基础强化:回顾并巩固Java的核心概念,如JVM、JDK、数据类型、集合、异常处理等。性能调优:探讨Java应用的性能瓶颈及优化策略,包括JVM调优、内存管理、并发编程等。设计模式与最佳实践:介绍常见的设计模式及其在Java中的应用,同时分享一些开发过程中的最佳......
  • 根据若依系统+minio实现批量下载附件并自动压缩成zip
    效果实现:  分割!!!!以下代码参考于http://t.csdn.cn/4dUmDwg话不多说直接从后端开始0.首先是pom依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.7</version></dependency>1.后端Contr......