小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的亲密度.亲密度有可能发生变化. 岁月 ...
随机推荐
- 【JavaWeb】学习笔记——Tomcat集成
简介 Tomcat是基于Java的一个开放源代码.运行servlet和JSP Web应用的Web应用软件容器,又称servlet容器 安装 官方网站:https://tomcat.apache.org ...
- CF39H
前言 谁来给我讲讲九九乘法表啊. 以上菲克向. \(\sf{Solution}\) 看题上来就是数据范围 \(2\leq k\leq 10\) ,显然打表可以轻松水过,数据这么小,手算是没问题的啦. ...
- Agda学习笔记1
目录 Agda学习笔记1 快捷键 refl Natural Number 自然数集合 operations rewrite cong 加法结合律 加法交换律 乘法分配律 比较大小 衍生的一些证明 be ...
- Sql Server性能排查和优化懒人攻略
转载自作者zhang502219048的微信公众号[SQL数据库编程]:Sql Server性能排查和优化懒人攻略 很多年前,笔者那时刚从广东技术师范学院(现为广东技术师范大学,以前为广东民族学院)的 ...
- CSP-J/S 2021 游记
\(\large\texttt{Day -1}\) 晚上好累啊,去集训了,回来之后发现十一点了还码了一会儿,只能祈求上帝明天不会打瞌睡. \(\large\texttt{Day 0}\) 意料中的事情 ...
- kafka-consumer-groups 命令行工具使用手册
kafka-consumer-groups 命令行工具使用手册 该手册原文出自 $KAFKA_HOME\bin\windows\kafka-consumer-groups.bat --help 命令的 ...
- 如何在 .NET MAUI 中加载 json 文件?
引言: 按core传统方式添加 AddJsonFile("appsettings.json") 在windows平台和ssr工作正常,但是在 ios 和 android 无法用这种 ...
- C#多线程之高级篇(上)
前言 抛开死锁不谈,只聊性能问题,尽管锁总能粗暴的满足同步需求,但一旦存在竞争关系,意味着一定会有线程被阻塞,竞争越激烈,被阻塞的线程越多,上下文切换次数越多,调度成本越大,显然在高并发的场景下会损害 ...
- Guess Next Session
打开又是一个输入框的界面,点一下下面的看源码 很简短的一个源码 大概意思是如果password等于session[password]就输出flag 直接搜了下session函数的漏洞,发现sessio ...
- 如何使用虚拟机下载和安装Centos
首先先下载虚拟机进行安装我这里使用的是 VMware Workstation Player 当前版本为16.这个是免费使用的可以不需要许可证就能长期使用了 官网VMware Workstation P ...