2022杭电多校八 1011-Stormwind(贪心)
题目链接:杭电多校8 - Virtual Judge
题意:一个n*m的长方形,可以沿水平或竖直方向画若干条线,每条线的两端点都在长方形边界上,且线要与长方形的某一边平行且端点位于格点上。要求这些线划分出的每个小长方形面积都大于等于k,求最多可以画几条线。
分析:先来看这么一个问题:一根长为n的绳子,我们要用剪刀将其剪断,要保证每段长度不能小于m,求最多能剪几次?
答案是n/m-1,而不是n/m的下取整,因为我们要保证每一段长度都不能小于m,所以如果剪完最后一次后会使得最后剩余一段长度小于m的绳子,那么这一次我们是不能剪的,所以就需要减1,知道了这个我们再来分析一下这个问题:
我们可以来O(min(k,n))枚举矩形的高h,那么对于每次的高h,为了使得矩形的面积不小于k,那么至少需要的宽度就是w=(k-1)/h+1,那么为了使得切的次数是最大的,那么我们显然宽度越小越好,因为我们切的次数是m/w-1,这显然是一个单调函数,随着w的增大而减小,所以对于每个高已经固定的情况,我们都能O(1)确定切的次数,所以总的复杂度就是O(min(k,n)),对于高为h,宽为b的情况,我们切的次数最多是(n/h+m/b-2),需要注意的是我们的h是小于n的,这个我们可以在for循环的时候就直接设定边界,而b是小于m的,这个需要我们特判一下,细节见代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
long long n,m,k;
long long cal(long long h)
{long long ans=n/h-1; long long b=(k-1)/h+1;//求解最小的b满足h*b>=k if(b>m) return 0;return (ans+(m/b-1));
}
int main()
{int T;cin>>T;while(T--){scanf("%lld%lld%lld",&n,&m,&k);long long ans=0;for(int i=1;i<=min(k,n);i++)ans=max(ans,cal(i));cout<<ans<<endl;}return 0;
}
2022杭电多校八 1011-Stormwind(贪心)相关推荐
- 2022杭电多校赛第八场
2022杭电多校赛第八场 文章目录 2022杭电多校赛第八场 1004.Quel'Thalas 1001.Theramore 1011.Stormwind 1008.Orgrimmar 1005.Ir ...
- 2022杭电多校第八场题解
2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...
- 2022杭电多校(二)
2022杭电多校(二) 文章目录 2022杭电多校(二) 一.比赛小结 二.题目分析及解法(基础题) 1001.Static Query on Tree 1002.C++ to Python 1003 ...
- 2022杭电多校(四)
2022杭电多校(四) 文章目录 2022杭电多校(四) 一.比赛小结 二.题目分析及解法(基础题) 1001.Link with Bracket Sequence II 1002.Link with ...
- 2022杭电多校(一)
2022杭电多校(一) 文章目录 2022杭电多校(一) 一.比赛小结 二.题目分析及解法(基础题) 1001.String 1002.Dragon slayer 1003.BackPack 1004 ...
- 2022杭电多校(五)
2022杭电多校(五) 文章目录 2022杭电多校(五) 一.比赛小结 二.题目分析及解法(基础题) 1003.Slipper 1006.BBQ 1007.Count Set 1010.Braggin ...
- 2022杭电多校(三)
2022杭电多校(三) 文章目录 2022杭电多校(三) 一.比赛小结 二.题目分析及解法(基础题) 1001.Equipment Upgrade 1002.Boss Rush 1003.Cyber ...
- 2022杭电多校(十)
2022杭电多校(十) 文章目录 2022杭电多校(十) 一.比赛小结 二.题目分析及解法(基础题) 1001.Winner Prediction 1003.Wavy Tree 1004.Averag ...
- 2022杭电多校(九)
2022杭电多校(九) 文章目录 2022杭电多校(九) 一.比赛小结 二.题目分析及解法(基础题) 1001.Arithmetic Subsequence 1003.Fast Bubble Sort ...
最新文章
- Ubuntu下用matplotlib作图时显示中文
- mysql 数据表创建字段类型_MySQL 数据类型简介 创建数据表及其字段约束
- python中的self描述符__set__和__get__简单总结
- 关于优酷开发SDK之setOnSeekCompleteListener
- 你对博客中提到的评分规则有何意见和建议?
- 论文学习21-Globally Normalized Transition-Based Neural Networks(2016,标签偏差问题
- 传统form表单提交方式的文件上传与文件存储
- [资料整理]记一下英特尔atom处理器
- C语言常用8种排序方法耗时测试
- java 怎么启动线程_线程如何正确的启动
- ubuntu 環境下 bochs 的安裝
- 计算机监控系统sacad,一套幼儿园智能化弱电CAD设计图,可以作为投标技术文件模板...
- 代码实现 outerHTML
- 怎么把java程序打包?java源代码打包方法
- 普通有刷直流电机 H桥驱动
- Win10微信打不开小程序,其他程序出现找不到HID.DLL的解决办法
- c语言编程多项式,多项式c语言编程.docx
- 怎样写好Git的commit信息
- ipad显示已停用,连接itunes
- win10新建菜单只有文件夹怎么办?