当时我想的是两个结构体,都排序,然后记录下标哪个被用过,写着写着觉得太麻烦去看题解,还是大佬的代码简洁,multiset很方便

差距还体现在解决问题的方法上

对大佬代码作简单的注释

#include<iostream>
#include<set>
#define int long longusing namespace std;const int N = 2e5 + 100;
typedef pair<int,int> pii;int a[N], b[N], n;
//假设当前为横切,那么把宽度为最大的都找到之后,一定是竖切了,那这个矩形的高一定是当前最高的,再找所有高为
//最高的矩形,他们的宽度占用要减去,找完所有这样的竖切矩形,一定是再找横切…… 不过先谁都一样
bool check(int x,int y) //高和宽
{multiset<pii> st1,st2;//一个把高从大到小排序,一个把宽从大到小排序//横切先取宽大的,竖切先取高大的 for(int i = 1; i <= n; i ++) {st1.insert({a[i], b[i]});st2.insert({b[i], a[i]});}for(int i = 1; i <= n; i ++) {//找竖切 int tx = st1.rbegin()->first;//当前高 int ty = st1.rbegin()->second;//当前宽 if(tx == x) {y -= ty;//把占用的都删掉 st1.erase(st1.find({tx,ty}));st2.erase(st2.find({ty,tx}));continue;}//找横切tx = st2.rbegin()->second;ty = st2.rbegin()->first;if(ty == y) {x -= tx;st1.erase(st1.find({tx,ty}));st2.erase(st2.find({ty,tx}));continue;}return false;}return true;
}
void solve()
{cin >> n;int s = 0;int mx = 0,my = 0;for(int i = 1; i <= n; i ++) {cin >> a[i] >> b[i];s += a[i] * b[i];//总面积 mx = max(mx, a[i]);//初始最高 my = max(my, b[i]);//初始最宽 }set<pii> ans;if(s % mx == 0 && check(mx, s / mx)) ans.insert({mx, s/mx});if(s % my == 0 && check(s / my, my)) ans.insert({s/my, my});cout << ans.size() << endl;for(auto it:ans) cout << it.first << " " << it.second << endl;
}
signed main()
{int t = 1;cin >> t;while(t --)solve();
}

The Butcher相关推荐

  1. Lesson 49 At the butcher's

    英音版录音 下载地址http://bbs.enfamily.cn/upfile/nce/book1/NCE1049.mp3 美音版录音 下载地址 http://bbs.enfamily.cn/upfi ...

  2. 新概念英语(1-49)At the butcher's

    新概念英语(1-49)At the butcher's What does Mr. Bird like? A:Do you want any meat today, Mrs. Bird? B:Yes, ...

  3. Lesson 49 At the butcher's 在肉店

    Listen to the tape then answer this question. What does Mr. Bird like? 听录音,然后回答问题.伯德先生喜欢什么? BUTCHER: ...

  4. Lesson Forty-Nine At the butcher's. 在肉店.

    Do you want any meat today,Mrs. Bird? 你今天想要卖点肉吗,Mrs. Bird? Yes,please. 是的,我卖点. Do you want beef or l ...

  5. 一本读懂BERT(实践篇)重点

    目录 一.什么是BERT? 二.BERT安装 三.预训练模型 四.运行Fine-Tuning 五.数据读取源码阅读 (一) DataProcessor (二) MrpcProcessor 六.分词源码 ...

  6. iOS 高可控性日历基础组件 - SKCalendarView 的使用和实现思路的分享

    阅读 61 收藏 5 2017-04-02 原文链接:http://www.jianshu.com/p/ce4c64a4d437 SKCalendarView 是一个高可控性的日历基础组件,为了提高应 ...

  7. AE 动画直接变原生代码:Airbnb 发布开源动画库 Lottie

    原文 Airbnb 发布的 Lottie 是一个面向 iOS.Android 和 React Native 的开源动画库. 简单来说,就是可以直接利用 AE 导出的 JSON 动画文件,将其解析为原生 ...

  8. Android 开发者必知的开发资源

    英文原文:Bongzimo  翻译: ImportNew-黄小非 译文链接:http://www.importnew.com/3988.html Android 开发者必知的开发资源 随着Androi ...

  9. javascript_治愈JavaScript疲劳的研究计划

    javascript by Sacha Greif 由Sacha Greif 治愈JavaScript疲劳的研究计划 (A Study Plan To Cure JavaScript Fatigue) ...

最新文章

  1. 2017上半年软考 第七章 重要知识点
  2. ASP.NET 动态输出Javascript 文本格式换行问题 [ASP.NET | C# | Response]
  3. Java基础(三十五)Math、Random类和数字格式化(String.format方法)
  4. 《JavaScript高级程序设计》笔记:JavaScript简介(一)
  5. 使用handler倒计时
  6. Java8 时区DateTime API
  7. Vertx JDBC 批处理
  8. 8年web前端开发老程序员告诉你如何零基础学习web前端
  9. mysql主从同步问题_mysql主从同步问题整理
  10. error: expected expression before ‘struct
  11. idea debug端口被占用
  12. N个球放M个盒子问题
  13. python从入门到入魔(肝3天总结的3万字经验)
  14. python爬虫实训总结报告_python爬虫简单总结(一)
  15. Unity3D在C盘的缓存文件
  16. java全角数字_Java全角、半角字符的关系以及转换
  17. PEP8 -- Python代码样式指南(中文版)
  18. wszystkie hoopery Buty Adidas Crazy BYW sklep
  19. android平台下基于ANativeWindow实现渲染bitmap图像
  20. 麦克风阵列声源定位效果测试

热门文章

  1. unsigned char型整数
  2. 某学生的记录由学号、5门课程成绩和平均分组成,学号和5门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分,并放在记录的ave成员中。
  3. 银川二中2021高考模拟考试成绩查询,银川市第二中学2020—2021年第一学期高一月考成绩分享会...
  4. 秒杀系统----热点/秒杀商品如何处理?
  5. 微信打开页面,提示到浏览器上打开
  6. linux usb 网络摄像头,树莓派|Linux有问必答:如何在树莓派上安装USB网络摄像头...
  7. 2014暑假集训总结
  8. python爬虫技术如何挣钱?教你爬虫月入三万
  9. 【python的擅长领域】
  10. Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本