搜索 由浅入深 之一 水题

搜索很重要,是很难学的算法,能看懂很简单,但是要想真正做出题来就比较困难了,那么,我们现在就水题开始研究搜索。

水题之:

1024: [SCOI2009]生日快乐

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 830  Solved: 572
[Submit][Status][Discuss]

Description

windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。 现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。 windy主刀,每一切只能平行于一块蛋糕的一边(任意一边),并且必须把这块蛋糕切成两块。 这样,要切成 N 块蛋糕,windy必须切 N-1 次。 为了使得每块蛋糕看起来漂亮,我们要求 N 块蛋糕的长边与短边的比值的最大值最小。 你能帮助windy求出这个比值么?

Input

包含三个整数,X Y N。

Output

包含一个浮点数,保留6位小数。

Sample Input

5 5 5

Sample Output

1.800000

HINT

【数据规模和约定】
100%的数据,满足 1 <= X,Y <= 10000 ; 1 <= N <= 10

 

B站上不去的看这里~~~~TYVJ题目连接:http://www.tyvj.cn/Problem_Show.aspx?id=1771

 

没错这个真的是BZOJ的题,而且,不难做

我们乍一看好像没有什么思路,而实际上我们要求每一部分的面积相等就是要求:每次分割后得到的两个蛋糕的面积与分割后蛋糕应该再分的块数成正比。

好吧,好乱啊。实际上就是说:如果现在我们的这一块蛋糕分成面积比为2:3的两部分,那么我们下一步再分割蛋糕的时候两块蛋糕应该分割成的块数之比也应为2:3.

好了,这样我们就可以将某一状态确定下来了。

确定一个状态的因素:当前蛋糕的长x,蛋糕的宽y,这块蛋糕应该被分成的部分数k(正像某大神跟我说的:搜索的状态,题目给你什么你就往里面塞什么)

状态确定后,下一个问题就是如何实现状态的转移了。

不难发现,状态转移的过程就是切,分割当前的蛋糕。

然后我们仅需要枚举分割点就好了,这里比较难理解,结合代码说一下:

1     for(int i=1;i<k;i++)
2     {
3         ans=min(ans,max(dfs(x/k*i,y,i),dfs(x/k*(k-i),y,k-i)));
4         ans=min(ans,max(dfs(x,y/k*i,i),dfs(x,y/k*(k-i),k-i)));
5     }

就是这样了?没错,真的只有这么短。

好了,我们来看一下,我们可以理解为把我们的x*y的蛋糕分成单位为1*1的小块,然后枚举一下横着切分成i*y和(x-i)*y的两部分,然后递归求解这两块蛋糕的最优答案。对于y也是这样

边界:当只需要将当前的蛋糕分成1块的时候,返回长宽比就行了。

比较水,暴搜就能过

AC代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int num;
 5 double n,m;
 6 double dfs(double x,double y,int k)
 7 {
 8     double ans=1e9;
 9     if(x<y)swap(x,y);
10     if(k==1)return x/y;
11     else for(int i=1;i<k;i++)
12     {
13         ans=min(ans,max(dfs(x/k*i,y,i),dfs(x/k*(k-i),y,k-i)));
14         ans=min(ans,max(dfs(x,y/k*i,i),dfs(x,y/k*(k-i),k-i)));
15     }
16     return ans;
17 }
18 int main()
19 {
20     cin>>n>>m>>num;
21     double ans=dfs(n,m,num);
22     printf("%.6lf",ans);
23     return 0;
24 }
cake

 

转载于:https://www.cnblogs.com/Skyvot/p/4040396.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio创建文件,如何在Android Studio中创建File Templates

标签&#xff1a; File Template Android Studio我发现一个可以让写程序变得简单的方法&#xff0c;那就是自定义文件模板(Custom File Templates).那么什么是File Templates呢&#xff1f;说白了&#xff0c;就是一个已经包含一部分代码的源文件如何创建File Templates首先&am…

odoo 中多币种处理(外币处理)

2019独角兽企业重金招聘Python工程师标准>>> 1. odoo多币种处理 http://www.cnblogs.com/godzone/archive/2012/11/05/2754436.html 2. OpenERP的价格表&#xff08;Pricelist&#xff09;机制: http://www.chinamaker.net/html/2011/study_1123/78.html 3. odoo …

h5 android数字键盘,【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)...

在Vue中的项目&#xff0c;基于VUX-UI开发&#xff0c;一个常见的需求&#xff1a;1、金额输入框2、弹出数字键盘3、仅支持输入两位小数&#xff0c;限制最大11位数&#xff0c;不允许0开头第一&#xff0c;首先想到额就是在VUX-UI中制定typenumber。--不可行VUX中的文档和代码…

Sybase数据库应用系统调优的五大领域

Sybase数据库应用系统调优的五大领域 2011/3/14/13:49来源&#xff1a;慧聪it网本 文以“某大型商业银行的网上银行系统”这一很具有典型意义的企业级大型Sybase数据库应用系统为例&#xff0c;涉及了数据库应用系统调优的五大领域&#xff1a;压力测试、 应用端调优、服务器端…

android 6.0 ios9谁快,没安卓6.0流畅?iOS 9突飞猛进终于不卡

今天早些时候&#xff0c;iOS 9.1正式发布&#xff0c;改进系统Bug&#xff0c;添加新功能等&#xff0c;但还有不少反应系统流畅了。不知道是否是心里作用的关系&#xff0c;之前不少果粉吐槽iOS 9过于卡顿&#xff0c;苹果也是在一个版本一个版本的改进&#xff0c;这次的iOS…

(UML两个汇总)九种图。

最后总结UML关系&#xff0c;有明确的关系&#xff0c;现在让我们总结一下UML九图。。图往往比文字要直观&#xff0c;因此&#xff0c;当我们开发软件。文件必须是不可或缺的人物&#xff0c;。以下我将这九种图分了一下&#xff1a; 我们还能够将这九种图分为静态图和动态图&…

SqlBulkCopy 批量复制数据到数据表

使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是&#xff0c;数据源不限于 SQL Server&#xff1b;可以使用任何数据源&#xff0c;只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据 使用Datatable作为数据源的方式&#xff1a;下面的代码使用到了Co…

Android Ac 控件,Android控件--MultiAutoCompleteTextView

1.功能可支持选择多个值(在多次输入的情况下)&#xff0c;分别用分隔符分开&#xff0c;并且在每个选中的时候再次输入值时会自动匹配&#xff0c;可用在发短信、发邮件时选择联系人这种类型当中。2.独特属性android:completionThreshold"3" ----设置输入多少字符时自…

BZOJ1299 [LLH邀请赛]巧克力棒

怎么又是博弈论。。。我去 Orz hzwer&#xff0c;这道题其实是可以转化成Nim游戏的&#xff01; "第一步&#xff1a; 先从n根巧克力棒中取出m(m>0)根&#xff0c;使得这m根巧克力棒的xor和为0&#xff0c;同时使得剩下的n-m根巧克力棒无论怎么取&#xff0c;xor和都不…

Fragment的保存

2019独角兽企业重金招聘Python工程师标准>>> 一、场景 在一个fragment播放语音文件&#xff0c;一旦设备发生旋转&#xff0c;播放将暂停。因为fragment将重新生成。具体的流程步骤如下&#xff1a; 二、解决的方式 在Fragment的onCreate方法中&#xff0c;设置s…

SQL Server 存储引擎-剖析Forwarded Records

我们都知道数据在存储引擎中是以页的形式组织的,但数据页在不同的组织形式中其中对应的数据行存储是不尽相同的,这里通过实例为大家介绍下堆表的中特有的一种情形Forwared Records及处理方式. 概念 堆表中,当对其中的记录进行更新时,如果当前数据页无法满足更新行的容量,此时这…

u3d游戏开发视频潭州_游戏美术行业的发展与应用人工智能学院专业介绍及未来前景系列报告会二...

为了让2020级新同学对动漫专业加深认识&#xff0c;更好的规划学习&#xff0c;学院于11月12日6点晚邀请了校企合作单位“369云遮月游戏公司”在长安校区图书馆阶梯教室进行了游戏美术行业的发展与应用的报告会&#xff0c;主题围绕“专业介绍与发展前景”展开&#xff0c;云遮…

华为谷歌互利合作曝光:或将推Nexus手表

业内传言称&#xff0c;中国的华为科技公司和韩国LG电子公司&#xff0c;今年将为谷歌公司设计两款Nexus品牌的智能手机&#xff0c;这也将是华为科技第一次参加谷歌的Nexus硬件计划。日前&#xff0c;国外权威媒体披露了华为Nexus硬件计划的更多内容。除了一款5.7英寸的智能手…

unity2d随机生成物体_2020 年最好用的一键生成设计神器,全在这里了!

对于很多新手设计师来说&#xff0c;要高效率地完成一件看上去还不错的设计作品&#xff0c;其实并不是一件容易的事。特别是在现实的工作中&#xff0c;对于临危受命的任务&#xff0c;更是很少有人会耐心地等你慢慢去摸索的.……不慌&#xff0c;今天就掏出一份私藏已久的设计…

android MPV架构快速实现,不是所有的MPV都叫GL8,一体化智能座舱体验来袭

进入车内&#xff0c;首先映入眼帘的就是双12.3吋全液晶仪表及中控联屏&#xff0c;出色的画面质感在第一时间吸引了我的注意。当然&#xff0c;全新的一体化智能座舱理念&#xff0c;多屏互联、多维交互也是它的最大亮点之一。全新一代别克GL8家族采用迭代更新的通讯解决方案&…

基于SuperSocket的IIS主动推送消息给android客户端

在上一篇文章《基于mina框架的GPS设备与服务器之间的交互》中&#xff0c;提到之前一直使用superwebsocket框架做为IIS和APP通信的媒介&#xff0c;经常出现无法通信的问题&#xff0c;必须一天几次的手动回收程序池&#xff0c;甚至重起服务器&#xff0c;通常周末接到一个陌生…

明细表如何添加重量_关于Revit中明细表标准的导出及导入

Revit中明细表的作用非常大&#xff0c;项目中的数据归类整理及统计都离不开它&#xff0c;今天给大家分享一下如何在Revit中进行明细表标准的导出及导入&#xff0c;减少在实际项目中的重复性工作。1. 首先在Revit中新建一个项目文件&#xff0c;在平面视图中随便画几条管道&a…

鸿蒙还是不是安卓,华为捐赠鸿蒙核心架构!是否形成“三足鼎立”?

发布会已经开完&#xff0c;万物互联时代也已开启。经过测试&#xff0c;鸿蒙系统支持几乎所有的安卓软件&#xff0c;换句话说安卓用户可以无缝过渡到鸿蒙系统&#xff0c;相比安卓&#xff0c;速度更快&#xff0c;耗电量更低&#xff0c;这无疑比安卓系统的体验好出一个档次…

Filter基金会

一个、总结 简单的说&#xff0c;Filter的作用就是拦截(Tomcat的)service&#xff08;Request&#xff0c;Response&#xff09;方法。拿到Request、Response对象进行处理。然后释放控制。继续自己主动流转。其运用的还是“分层”的思想。至于为什么要增加这一层&#xff0c;为…

python2处理耗时任务_RabbitMQ Go客户端教程2——任务队列/工作队列

本文翻译自RabbitMQ官网的Go语言客户端系列教程&#xff0c;本文首发于我的个人博客&#xff1a;liwenzhou.com&#xff0c;教程共分为六篇&#xff0c;本文是第二篇——任务队列。这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完…