题目

题意

给定n个长方形,要将这n个长方形相连起来。要求

  • 长方形直接不能相互重叠,但边可以相邻。
  • 每个长方形,至少有一条边连接x轴。
  • 可以选择长方形,但要保证长方形的每条边,要么与x轴平行,要么与y轴平行

求将这n个长方形相连,需要的最小外围。

思路

外围,即组成的大长方形的周长。
大长方形的周长,长为所有长方形的最大长;宽为所有长方形的宽的总和。

贪心,短的边与x轴平行,长的边与y轴平行。
证明:

  • 对于长边y ==max(y)的长方形。它对整体的周长贡献是2x+2y。如果将它旋转90度,那么它的宽贡献增加2*(y-x),长的贡献最多减少2*(y-x)。这么一折腾,我们发现它其实不能减少总贡献。
  • 对于长边y < max(y),最优策略显然是让短的边做为宽,与x轴相连。

代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pcc pair<char, char>
#define pii pair<int, int>
#define inf 0x3f3f3f3f
#define se second
#define fi first
const int maxn = 200010;
const int mod = 998244353; int n;
int a, b;
void solve() {scanf("%d", &n);ll res = 0;int mx = 0;for (int i = 0; i < n; ++i) {scanf("%d%d", &a, &b);if (a > b) {swap(a, b);}res += a;mx = max(mx, b);}printf("%lld\n", (res + mx) * 2);}
int main() {int t = 1;scanf("%d", &t);int cas = 1;while (t--) {//      printf("cas %d:\n", cas++);solve(); }}

B. Jumbo Extra Cheese 2(贪心)相关推荐

  1. 《Python基础知识全家桶》

    目录 1.实现一行输入多个数字,用空格隔开 2.实现一行输入多个单词,用","隔开 3.列表 4.for循环 5.切片 6.二维列表 7.元组 8.字典 set容器 9.嵌套 字典 ...

  2. Python学习之路7-函数

    <Python编程:从入门到实践>笔记. 本章主要介绍Python中函数的操作,包括函数的概念,定义,如何传参等,最后还有小部分模块的概念. 1. 定义函数 1.1 一般函数 函数是带名字 ...

  3. python从入门到实践回顾——字典

    字典 alien_0 = {'color': 'green', 'points': 5} alien_0['color'] 'green' alien_0['points'] 5 alien_1 = ...

  4. Python学习之字典

    #字典 ''' 语法: 字典名 = {'键':'值','键':'值',....} 例如:test = {'color':'pink','points':7} print(test['color']) ...

  5. python编程 入门到实践-Python编程入门到实践(二)

    1.用户输入和while循环 python2.7使用raw_input()来提示用户输入与python3中的input()一样,也将解读为字符串. name=input("please en ...

  6. class-5 If语句

    在python中,if语句让你能够检查程序的当前状态,并据此采取相应的措施. 5.1 示例 假设你有一个汽车列表,并想将其中每辆汽车的名称输出.对于大多数汽车,都应以首字母大写的方式输出其名称,但对于 ...

  7. 我の第一篇万字博文 | 带大家开开心心地进入Python世界

    文章目录 前言 配置环境 创建 Python 文件 Hello world 伴我们一生的变量 变量到底是什么 变量的名字有讲究 敲一敲 简单数据类型 字符串 字符串的方法 字符串的拼接 关于空白 敲一 ...

  8. python基础学习[python编程从入门到实践读书笔记(连载一)]

    写在前面:本文来自笔者关于<python编程从入门到实践>的读书笔记与动手实践记录. 程序员之禅 文章目录 02变量和简单数据类型 03 列表简介 04 操作列表 05 if语句 06 字 ...

  9. python如何去掉方括号_python从入门到实战外星人入侵

    ## 第一章 软件安装与简单操作 ## 第二章 字符串操作总结 - 方法 方法是Python可对数据执行的操作.每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成,这种信息是在括号内提供 ...

最新文章

  1. java内存问题排查及分析
  2. MVC 之HTML辅助方法
  3. uvalive4838(凸包+重心)
  4. 新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(ScriptManager、ScriptManagerProxy
  5. 把实体 转为json 数据格式---jackson 的详细用法.
  6. POJ 1177 Picture
  7. python简易学生信息管理系统
  8. lda新闻主题提取_LDA主题模型 | 原理详解与代码实战
  9. Unity射线检测实例
  10. Facebook自动化测试札记
  11. 移动应用数据统计平台(之一)
  12. unity 自动寻路NavMesh
  13. Maven常用插件介绍及如何打一个瘦jar包
  14. linux系统wav驱动下载,linux下alsa架构音频驱动播放wav格式文件
  15. 从TOP25榜单,看半导体之变
  16. 6位密码锁安全性级别分析探讨
  17. 使用anaconda创建一个虚拟环境
  18. 不背锅运维:K8S之污点、污点容忍
  19. 官方微博运营之道的一点总结
  20. flex 联机游戏开发 - 四国军棋游戏:(三) 核心类

热门文章

  1. 面向对象设计原则——优先使用对象组合,而不是继承(组合以及与继承的区别)
  2. 如何确定latex可以调用的字体名称
  3. Binder 学习笔记
  4. 分光测色仪测量物体哪些值?测量数据怎么看?
  5. consider的用法
  6. 使用SDWebImage清除图片缓存
  7. linux mkdir 创建文件夹/目录
  8. 使用fs.mkdir来创建文件夹
  9. Linux系统安装jdk教程(超级详细)
  10. 使用text-shadow属性编写凹凸字体