USACO2011Brownie Slicing巧克力蛋糕切片
Description
Input
Output
Solution
二分答案,然后用贪心思想来检查这个答案。注意题目中输入的a和b是分成几块而不是切几刀的意思。详解见代码。
Code
#include<iostream>
#include<cstdio>
using namespace std;
int x[][];
int r,c,a,b; bool check(int num)//二分产生的答案
{
int i=,j=,tot2=;//i,j表示当前横着切的蛋糕上下界,tot2表示横着分成了几块
while (j<=r)//然后贪心求出这块横着的蛋糕在满足num的要求的情况下,最多分成几块
{
int s=,sum=,tot=;//指针s,指向当前这刀切哪的位置,tot表示竖着切了几刀
while (s<=c)
{
for (int k=i; k<=j; k++)
sum+=x[k][s];
if (sum>=num)//满足num,竖着切下一块
{
sum=;
tot++;
}
s++;//指针后移
}
if (tot>=b) {i=j+; tot2++;}//满足竖着切b刀的条件,横着切一刀,下块蛋糕的边界调整
j++;//无论满不满足,蛋糕的边界下移
}
if (tot2>=a) return true;//满足横着切a刀的条件,返回true
else return false;
} int main()
{
int left=-,right=;
cin>>r>>c>>a>>b;
for (int i=; i<=r; i++)
for (int j=; j<=c; j++)
{
cin>>x[i][j];
right+=x[i][j];
}
int mid,st=,ans=;
while (left<=right)//注意二分的边界问题,因为这个卡一个上午
{
//if (mid==(left+right)/2) st++;
mid=(left+right)/;
if (check(mid)) {ans=mid; left=mid+;}//记录做到的最优方案
else right=mid-;
}
//if (!check(2)) cout<<"OwO"<<endl;
cout<<ans<<endl;
return ;
}
Source
http://www.lydsy.com/JudgeOnline/problem.php?id=2196
USACO2011Brownie Slicing巧克力蛋糕切片的更多相关文章
- caffe 学习(3)——Layer Catalogue
layer是建模和计算的基本单元. caffe的目录包含各种state-of-the-art model的layers. 为了创建一个caffe model,我们需要定义模型架构在一个protocol ...
- C++ 词汇表
C++词汇表 A abort() 特殊函数 如果一个函数抛出异常,但在通往异常函数的调用链中找不到与之匹配的catch,则该程序通常以此函数调用终止 abs ...
- Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...
- 设备、像素和点 、 9切片技术 、 颜色和外观 、 NavigationBar的美化
1 TMessage项目的输入面板界面 1.1 问题 IOS中经常会使用到九切片技术对图片进行处理.本案例使用九切片技术完成Tmessage项目的输入板界面,如图-1所示: 图-1 1.2 方案 首先 ...
- BZOJ 2196: [Usaco2011 Mar]Brownie Slicing( 二分答案 )
二分答案就可以了.... ----------------------------------------------------------------------- #include<cst ...
- 在python&numpy中切片(slice)
在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...
- 『Numpy』内存分析_高级切片和内存数据解析
在计算机中,没有任何数据类型是固定的,完全取决于如何看待这片数据的内存区域. 在numpy.ndarray.view中,提供对内存区域不同的切割方式,来完成数据类型的转换,而无须要对数据进行额外的co ...
- 17 Go Slices: usage and internals GO语言切片: 使用和内部
Go Slices: usage and internals GO语言切片: 使用和内部 5 January 2011 Introduction Go's slice type provides a ...
- Python基础知识--Slice(切片)和Comprehensions(生成式)
最近在Youtube的Python视频教程上学习Python相关的基础知识,视频由Corey Schafer制作,讲得十分简单明了,英文发音也比较清晰,几乎都能听懂,是一个不错的Python入门学习的 ...
随机推荐
- zepto源码--核心方法10(位置)--学习笔记
今天基本上就是zepto学习笔记的最后一篇了,介绍一下有关位置的函数,position, offset, scrollLeft, scrollTop scrollLeft 如果所选取的包装集不存在,则 ...
- AngularJS 实现简单购物车
使用AngularJS实现一个简单的购物车,主要感受强大的双向绑定和只关注对象不关注界面特性. 先看看界面: 点击+-操作和删除: 这些全部只需要操作数据源就行,不需要关注界面. 实现过程: 一.使用 ...
- JMeter学习-021-JMeter 定时器(Synchronizing Timer)之集合点应用
性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的.为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置. ...
- Python开发程序:简单主机批量管理工具
题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密码可以不同 流程图: 说明: ### 作者介绍: * au ...
- PartialViewResult不鸟_ViewStart.cshtml
概述 在ASP.NET MVC中,对于Action中得到的ActionResult如果是一个ViewResult对象,那么在进行View呈现时,则会先执行_ViewStart.cshtml,然后再去执 ...
- Android drawText获取text宽度的三种方式
String str = "Hello";canvas.drawText( str , x , y , paint); //1. 粗略计算文字宽度Log.d(TAG, " ...
- jQuery效果之隐藏与显示、淡入淡出、滑动、回调
隐藏与显示 淡入淡出 滑动效果
- 12个css高级技巧.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL中插入单引号,新增修改删除
1.插入单引号如果不转化的话,字符串插入到数据库中错误的,只要在字符串中有单引号的地方在加一个单引号即可. 例如:在数据库插入'井下设备' : insert into Static_Bel ...
- 解决redmine写操作很慢的问题
以前刚开始时用redmine是直接使用它的webrick服务器来运行的,后来为了提高性能,采用nginx+passenger的方式来驱动redmine,访问速度快了不少,但是在新建问题或更新问题时变得 ...