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入门学习的 ...
随机推荐
- Spark on YARN两种运行模式介绍
本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发) 问题导读 1.Spark ...
- JAVA程序改错 (易错题)
JAVA程序改错 1. abstract class Name { private String name; public abstract boolean isStupidName(String n ...
- MySQL创建数据库并赋予权限
1.创建一个mysql用户并设置密码create user 'MySql用户名'@'localhost' identified by '密码';2.限制账户资源grant usage on *.* t ...
- StringUtils.isEmpty和StringUtils.isBlank用法
StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ...
- 启动Hive报错
Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not init ...
- Metasploitable 2系列教程:信息收集
Metasploitable 2 系统是一个基于ubuntu 的系统.其设计的最初目的为安全工具测试和常见漏洞攻击演示.而在这篇关于 Metasploit 的教程中,我们将列举有关 Metasploi ...
- Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms
自3月25至今,已经好久没有写学习日志了,今天在写日志抓取合并的小方法,发现抓取后的日志并米有依据系统执行的日志顺序排序.日志抓取排列逻辑如下: 通过日志标识,从各个日志文件(例如 use.log,e ...
- 深度学习笔记(四)VGG14
Very Deep Convolutional Networks for Large-Scale Image Recognition 1. 主要贡献 本文探究了参数总数基本不变的情况下,CNN随着层数 ...
- 压缩文本、字节或者文件的压缩辅助类-GZipHelper 欢迎收藏
压缩文本.字节或者文件的压缩辅助类-GZipHelper 欢迎收藏 下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间 ...
- oracle生成主键
SELECT 'ZTO'||TO_CHAR(SYSDATE,'yymmdd')||TO_CHAR(SEQ_COMMON_ORDER.NEXTVAL,'FM00000000') AS orderCode ...