Highest Tower Gym - 101550H(建图,思路)

2024-04-16 00:58

本文主要是介绍Highest Tower Gym - 101550H(建图,思路),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
题意: n个矩形,要求使得上面矩形宽度严格小于下面矩形,问能够得到的最大高度。

思路:
很巧妙的思路。

  1. 首先题目保证一定有解。考虑将每个矩形的边(u,v)设置双向边u->v与v->u,u->v代表选择u为宽,v为高。
  2. 那么可以建出一张图,这个图可以分出很多连通分量,不同连通分量意味着每个边都是不同的,那么可以在两个连通分量内分别堆成最高的矩形,然后将两者合并,结果仍然最优。所以对连通分量可以分别考虑
  3. 假设连通分量内有n个点,m条边,代表可以堆m个矩形,最多有n个宽度可以用。要满足题意,必须使得每个点出度不大于1,则有 m=n 或者 m=n-1。
  4. 这实际意味着这张图是树或者基环树,然后我们要将每个边定向,选择相应的宽高。
  5. 当这张图为基环图时,每个点都要分一个度数作为出度(当做宽),剩下度数作为高,所以每个点的贡献为 ( d e g [ x ] − 1 ) ∗ v a l [ x ] (deg[x]-1)*val[x] (deg[x]1)val[x](度数不作为出度就得作为入度)。
  6. 当这张图为树的时候,此时有一个节点的出度为0,我们将这个出度为0的点连到任意其他点,就可以获得这个点的值(此点值作为高),我们可以贪心的选择最大的值。
  7. m < n − 1 m<n-1 m<n1的时候,图不连通。当 m > n m>n m>n时,要堆 m m m个矩形却只有 n n n种宽,不合理。本题巧就巧在保证 都能用上。记得写过堆积木的题(三维堆箱子求高),那个题范围比较小可以直接DP。本题2e5,同时加上了巧妙的限制,所以可以用这种建图的方法解决。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>using namespace std;
typedef long long ll;
const int maxn = 1e6 + 7;
map<int,int>mp;
int cnt,flag,mx;
int vis[maxn],val[maxn];
int head[maxn],nex[maxn],to[maxn],deg[maxn],tot;
ll ans;void add(int x,int y) {if(!mp[x]) mp[x] = ++cnt;if(!mp[y]) mp[y] = ++cnt;val[mp[x]] = x;val[mp[y]] = y;x = mp[x];y = mp[y];deg[x]++;to[++tot] = y;nex[tot] = head[x];head[x] = tot;
}void dfs(int x) {if(vis[x]) return;vis[x] = 1;mx = max(mx,val[x]);ans += 1ll * (deg[x] - 1) * val[x];flag += (deg[x] - 2);for(int i = head[x];i;i = nex[i]) {dfs(to[i]);}
}int main() {int n;scanf("%d",&n);for(int i = 1;i <= n;i++) {int x,y;scanf("%d%d",&x,&y);add(x,y);add(y,x);}for(int i = 1;i <= cnt;i++) {if(vis[i]) continue;flag = mx = 0;dfs(i);if(flag < 0) ans += mx;}printf("%lld\n",ans);return 0;
}

这篇关于Highest Tower Gym - 101550H(建图,思路)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907397

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

如何打造个性化大学生线上聊天交友系统?Java SpringBoot Vue教程,2025最新设计思路

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录

将添加功能的抽屉剥离,在父组件调用思路

一、新建组件 新建AddRoleEditerDrawer.vue <template><div><el-drawer v-model="dialog" title="添加角色" :before-close="handleClose" direction="rtl" @colse="cancelForm"class="demo-drawer" modal-class="add-drawer">

[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

题目来源 NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem   [SWPUCTF 2021 新生赛]gift_F12 这个题目简单打开后是一个网页  我们一般按F12或者是右键查看源代码。接着我们点击ctrl+f后快速查找,根据题目给的格式我们搜索c

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习