小H的小屋
题解 [NOI2004]小H的小屋
前记
又鸽了好久,这回可要努力更新了
2019.6.2,痛下杀心,把电脑上所有的游戏都删掉了,提前160天奋力备考NOIP。目标:A类省队!
题解
这道题唯一的难点就在于贪心
从简单开始,假如一个矩形需要分成两部分,要求面积最小(参照题意)。那么均分肯定时最优解

如图,紫色是大的矩形,橙色是均分的两个小矩形,蓝色是非均分的两个小矩形。显而易见的是,橙色面积要比蓝色小。由于是贪心嘛其实是懒得严格证明,我们发现分成两个的情况下,均分最优
那么把情况扩展以下,由于贪心思想这回是因为我不会严格证明,均分思想可以推广到分成更多的小矩形的情况中
好了有了均分的思想,还有一个问题:假如\(n \mod m \ne 0\) 怎么办?
也好办,尽可能凑成对齐的就好了嘛
| \ | 北墙 | 南墙 |
|---|---|---|
| 一部分 | \(ln = m-n\mod m\) | \(lr = \lfloor \frac{n}{m} \rfloor\) |
| 另一部分 | \(rn = n\mod m\) | \(rs = \lfloor \frac{n}{m} \rfloor + 1\) |
酱紫就可以保证满足均分思想
假设\(area(x,y,k)\)表示在横坐标长度为y的矩形中分x份,斜率为k
double area(int x,int y,double k){ // x kuai in y len
return (double)(x-y%x)*(y/x)*k*(y/x)+(y%x)*(y/x+1)*k*(y/x+1);
}
当\(n\mod m=0\)时
\(ans=area(n,100,k1)+area(m,100,k2)\)
当\(n\mod m\ne 0\)时
\(ans=min_{i=ln\times lr} ^ {100-rn*rs} area(ln,i,k1)+area(ln\times ls,i,k2)+area(rn,100-i,k1)+area(rn\times rs,100-i,k2)\)
然后据说ans关于i是个单峰函数,不过反正i最大不过循环100次,我也不会证明这个函数的单调性,就算了吧。
code:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int m,n,ln,ls,rn,rs;
double k1,k2,ans;
double area(int,int,double);
int main(){
#ifndef ONLINE_JUDGE
freopen("test.in","r",stdin);
#endif
scanf("%lf%lf%d%d",&k1,&k2,&m,&n);
if(n%m==0){
ans+=area(m,100,k1);
ans+=area(n,100,k2);
printf("%.1lf\n",ans);
return 0;
}
ln=m-n%m; ls=n/m;
rn=n%m; rs=(n/m+1);
ans=2147483647.0;
for(int i=ln*ls;i<=100-rn*rs;++i){
double tmp=0.0;
tmp+=area(ln,i,k1);
tmp+=area(ln*ls,i,k2);
tmp+=area(rn,100-i,k1);
tmp+=area(rn*rs,100-i,k2);
ans=min(ans,tmp);
}
printf("%.1lf\n",ans);
return 0;
}
double area(int x,int y,double k){ // x kuai in y len
return (double)(x-y%x)*(y/x)*k*(y/x)+(y%x)*(y/x+1)*k*(y/x+1);
}
后记
距 NOIp2019 还剩 159 天
你已经在洛谷连续打卡了 266 天,奖励积分 4
冲鸭!
小H的小屋的更多相关文章
- BZOJ1505: [NOI2004]小H的小屋
BZOJ1505: [NOI2004]小H的小屋 Description 小H发誓要做21世纪最伟大的数学家.他认为,做数学家与做歌星一样,第一步要作好包装,不然本事再大也推不出去. 为此他决定先在自 ...
- [NOI2004]小H的小屋 贪心
神仙贪心,洛谷没有插图导致我题一开始都没看懂.容易发现,块越多越优秀,然后为了满足题意,所以假如不能整除,就分为两个部分(能整除就直接均分就行了).前一部分是n/m,后一部分是n/m+1.数量也是固定 ...
- P4274 [NOI2004]小H的小屋 dp 贪心
LINK:小H的小屋 尽管有论文 但是 其证明非常的不严谨 结尾甚至还是大胆猜测等字样... 先说贪心:容易发现m|n的时候此时均分两个地方就是最优的. 关于这个证明显然m在均分的时候的分点一定是n的 ...
- NOI2004 小H的小屋
还是纯粹不会啊……到底该怎么办 http://blog.sina.com.cn/s/blog_86942b1401016m3g.html http://www.cnblogs.com/datam-cy ...
- hihocoder 1347 小h的树上的朋友
传送门 时间限制:18000ms单点时限:2000ms内存限制:512MB 描述 小h拥有$n$位朋友.每位朋友拥有一个数值$V_i$代表他与小h的亲密度.亲密度有可能发生变化.岁月流逝,小h的朋友们 ...
- 【渗透笔记】拿下某小H网的全过程
自从班上A片小王子的7个T资源被封了以后,本小白为造福全班同学,尝试拿下个小H网,先用webrobot搜某些只有小H网才会出现的关键词 本以为直接导出放御剑里跑就行了,然并软.于是用awvs扫了一下, ...
- 一个简洁的小H车调运模型
一个简洁的小H车调运模型 不久前, 帝都B城市到处都是小H车, 理想的小H车应该是布朗运动\均匀分布,可是现实上它们就是不均匀.于是有如下问题: 观察帝都 HD区SY村区域,将其划分成10个用车点,用 ...
- 小H和密码
链接:https://www.nowcoder.com/acm/contest/72/B来源:牛客网 题目描述 小H在击败怪兽后,被一个密码锁挡住了去路 密码锁由N个转盘组成,编号为1 ...
- 【Wannafly挑战赛10 - B】小H和密码(DP)
试题链接:https://www.nowcoder.com/acm/contest/72/B 题目描述 小H在击败怪兽后,被一个密码锁挡住了去路 密码锁由N个转盘组成,编号为1~N,每 ...
- hihocoder-1347 小h的树上的朋友(lca+线段树)
题目链接: 小h的树上的朋友 时间限制:18000ms 单点时限:2000ms 内存限制:512MB 描述 小h拥有n位朋友.每位朋友拥有一个数值Vi代表他与小h的亲密度.亲密度有可能发生变化. 岁月 ...
随机推荐
- C语言经典编程100题
程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1 ...
- SpringBoot报错: No identifier specified for entity: XXX.XXX.XXX.XXX
今天练习的时候报错说是 : 没有为实体指定标识符 仔细看了实体类才发现忘记写了一些注解 用JPA写实体类时一些注解是必须的 @entity 标名本类是实体类 @table(name="表名 ...
- 基于.NetCore开发博客项目 StarBlog - (19) Markdown渲染方案探索
前言 笔者认为,一个博客网站,最核心的是阅读体验. 在开发StarBlog的过程中,最耗时的恰恰也是文章的展示部分功能. 最开始还没研究出来如何很好的使用后端渲染,所以只能先用Editor.md组件做 ...
- easyclick 学习
什么是EC EasyClick 写自动化脚本,使用的编辑器 Idea 运行模式有两种:无障碍模式.代理模式 注释 三种类型: 1./** 对程序作介绍,解释说明用 / 2./* 多行注释 第二行 / ...
- 又拍云之 Keepalived 高可用部署
在聊 Keepalived 之前,我们需要先简单了解一下 VRRP.VRRP(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,是专门为了解决静态路由的高可用而 ...
- CSP2022-J/S 游记
Day -2147483648 初赛 J组: 水. 单选没啥好说的,那道联通的傻掉挂了 \(2\). 读程 \(T1\) 手搓,\(T2\) 找规律(判断第一题蒙的,懒得算),\(T3\) 没注意 \ ...
- day17-Servlet06
Servlet06 15.HttpServletResponse 15.1HttpServletResponse介绍 每次HTTP请求,Tomcat都会创建一个HttpServletResponse对 ...
- 20、求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。
/* 求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数. 共五位数,设置一个数组用来保存数字的每一位,数组的有效长度就是该数的位数.最后读取数组的每位数字来判断水 ...
- vue cli2安装
安装nodejs npm install -g npm npm自动更新到最新版本 node -v或者npm -v 查看nodejs是否安装成功 1 2 配置淘宝镜像 npm config set ...
- 漫谈计算机网络: 运输层 ------ 从UDP ->TCP , 从面向通信->面向用户,三次握手/四次挥手?
面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽时间和我一起多学学它 深入浅出,用你的空闲时间来探索计算机网络的硬核知识! 博主的上篇连载文章<初识图像处理技术> 图像 ...