【问题描述】
假设这是一个二次元。
LYK召集了n个小伙伴一起来拍照。他们分别有自己的身高Hi和宽度Wi。
为了放下这个照片并且每个小伙伴都完整的露出来,必须需要一个宽度为ΣWi,长度为max{Hi}的相框。(因为不能叠罗汉)。
LYK为了节省相框的空间,它有了绝妙的idea,让部分人躺着!一个人躺着相当于是身高变成了Wi,宽度变成了Hi。但是很多人躺着不好看,于是LYK规定最多只有n/2个人躺着。(也就是说当n=3时最多只有1个人躺着,当n=4时最多只有2个人躺着)
LYK现在想问你,当其中部分人躺着后,相框的面积最少是多少。
【输入格式】
第一行一个数n。
接下来n行,每行两个数分别是Wi,Hi。
【输出格式】
你需要输出这个相框的面积最少是多少。
【样例输入】
3
3 1
2 2
4 3
【样例输出】
27
【样例解释】
如果没人躺过来,需要27的面积。
我们只要让第1个人躺过来,就只需要21的面积!
【数据规模与约定】
对于30%的数据n<=10。
对于60%的数据n<=1000,Wi,Hi<=10。
对于100%的数据1<=n,Wi,Hi<=1000。

题解:
     ①先去掉一个限制,方法是枚举最大高度H,贪心分类讨论:

          ·贪心策略:在高度不超过限制的情况下,使宽度增加尽可能少。

          设h,w分别为当前人的高和宽,那么:

          (1)h>H:

                w>H:躺着还是会超出高度,不合法直接跳出。
                w<=H:躺着

          (2)h<=H:

                 h>=w:站着(这样宽度增加得少)

                h<w:躺着,但是由于躺的人数有限制,所以有一部分还是要站着。

               因此特殊处理这种需要决策的情况(在h<=H&&h<w的这种情况下):

                    问题:这些人站着躺着的高度都不会超出H,因此考虑怎样选择使得总宽度最少。

                    解决方案:先让每个人都站着,此时总宽度设为W,然后再让n/2个人躺下:

                         每个人躺下,那么这个人对W将加上值(h-w) (意思是将宽换成高的长),

                         那么我们希望(h-w)尽量小,因此从小到大排序然后取前n/2个躺着就可以了。

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <set>
#include <map>
using namespace std;
set<int> ::iterator sit;
int ans,sum,p[1005],i,a[1005],b[1005],cnt,CNT,j,ANS,n;
int cmp(int i,int j) {return i>j;}
bool FLAG;
int main()
{ANS=1000000000;scanf("%d",&n);for (i=1; i<=n; i++)scanf("%d%d",&a[i],&b[i]);for (i=1; i<=1000; i++){sum=0; FLAG=true; cnt=0; CNT=0;for (j=1; j<=n; j++)if (b[j]<=i && (a[j]<=b[j] || a[j]>i)) sum+=a[j]; elseif (a[j]>i && b[j]>i) {FLAG=false; break;} elseif (b[j]>i) {cnt++; sum+=b[j];} else{p[++CNT]=a[j]-b[j];sum+=a[j];}if (!FLAG) continue;if (cnt>n/2) continue;sort(p+1,p+CNT+1,cmp);for (j=1; j<=min(n/2-cnt,CNT); j++) sum-=p[j];ANS=min(ANS,sum*i);}cout<<ANS;return 0;
}//Ztraveler

每当我在路上停下脚步,望着天空我都会看到你。

每当我从荒芜的梦中惊醒,留着眼泪我都能感觉到你。————汪峰《母亲》

转载于:https://www.cnblogs.com/Damitu/p/7661295.html

【ZBH选讲·拍照】相关推荐

  1. 【ZBH选讲·树变环】

    [问题描述] 你是能看到第三题的friends呢. --aoao 树是个好东西,删掉树一条边要1的代价,随便再加一条边有1的代价,求最小的代价把树变成环. [输入格式] 第一行一个整数,代表树的点数. ...

  2. 【ZBH选讲·模数和】

    [问题描述] 你是能看到第二题的friends呢. --laekov Hja和Yjq在玩游戏,这个游戏中Hja给了Yjq两个数,希望Yjq找到一些非负整数使得这些数的和等于n,并且所有数模maaaaa ...

  3. UA CSC696H 强化学习理论选讲1 强化学习概览

    UA CSC696H 强化学习理论选讲1 强化学习概览 强化学习相关概念 Markov Decision Processes(MDP)简介 Policy Evaluation 强化学习(reinfor ...

  4. 练习图200例图纸讲解_【宅家数学课23】经典微课6:苏教版六年级下册比例尺典型例题选讲及练习(含答案)...

    (截止日期:3月31日) 学习过程 1.点击观看经典微课: 微课视频 <比例尺> 2.认真学习典型例题,完成下方练习题 3.查看答案,在家长指导下批改,订正错误. 苏教版小学数学六年级下册 ...

  5. C++11新特性选讲 语言部分 侯捷

    C++11新特性选讲 语言部分 侯捷 本课程分为两个部分:语言的部分和标准库的部分.只谈新特性,并且是选讲. 本文为语言部分笔记. 语言 Variadic Templates move semanti ...

  6. 20190509杂题选讲

    这次杂题选讲好多思维题神仙题啊= =顺便学了波线段树上二分= = Normal 题目大意戳这 CF1083C CDW讲的神仙题*1 题解戳这 AGC002E 我讲的题,是个人写的程序都比我写的程序跑得 ...

  7. PJ可能会用到的动态规划选讲-学习笔记

    PJ可能会用到的动态规划选讲-学习笔记 by Pleiades_Antares 难度和速度全部都是按照普及组来定的咯 数位状压啥就先不讲了 这里主要提到的都是比较简单的DP 一道思维数学巧题(补昨天) ...

  8. [统计学笔记] 统计学计算题选讲(精华)

    统计学计算题选讲 第 1 题 某班级学生物理课程考试成绩分别为:              68  89  88  84  86  87  75  73  72  68              75 ...

  9. 4.4 竞赛题目选讲

    竞赛题目选讲 这里的题目可能和大家在做的实验项目有些不太一样,希望大家根据自己的需要阅读本章节. 4-2 刽子手游戏 (UVA 489) 书上的题面少了一些很重要的东西,真正的题面请点开这里 分析:根 ...

最新文章

  1. 解决MVC返回Json中日期格式问题
  2. 如何用纯 CSS 创作一个方块旋转动画
  3. 如何判断对象是不是出轨了?
  4. RUNOOB python练习题4
  5. PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)
  6. matlab可达矩阵 结果,matlab求可达矩阵
  7. java 发送邮件_SpringBoot 2.1.5发送验证码邮件
  8. golang(7 方法重写)
  9. JavaSE——Java8之四大函数式接口
  10. 端口扫描工具是什么?端口扫描工具有什么用
  11. 计算机系统关机后自动重启,小白教你电脑关机后自动重启是什么原因
  12. Linux Capability探索实验
  13. 论文摘要怎么写——分享5个较好的摘要
  14. 大数据主要学些什么?(大数据学习路线图)
  15. SpringBoot:概述,注解,搭建,部署
  16. TIA portal西门子博途安装时一直提示重启怎么办?
  17. Android 如何优雅的集成FaceBook
  18. python竞赛试题及答案_python练习题答案
  19. 【华为机试真题 Python实现 】高矮个子排队
  20. java 同学录校友录代码_基于jsp的校友录同学录-JavaEE实现校友录同学录 - java项目源码...

热门文章

  1. 发音程序c语言,用C语言发声
  2. wxWidgets GUI 编程介绍
  3. 苹果免密支付怎么关闭_有人苹果手机被盗刷了!那是设置有问题...
  4. Switch模拟器调研
  5. 计算机为啥系统保护设置不了,我的电脑为什么设置了屏幕保护程序而不起作用 – 手机爱问...
  6. 浪潮发布PS Cloud 开源+云ERP会给中小企业带来哪些红利?
  7. vmware扩展磁盘分区
  8. 路由器芯片和服务器,软路由就是软路由,还是回归它本该有的身份吧。一个越折腾越迷茫者的经历...
  9. 当前 IT 行业,软件开发应该掌握的几种编程语言,你学会了几种?
  10. 微信二维码使用及配置