Luogu3444:[POI2006]ORK-Ploughing
题意
Sol
贪心+枚举
如果知道最后一次是消除一行
那么一定消了\(n\)行
此时只要消的列最小就好了
枚举每列从上往下消到哪里,那么下面消的越小越好
那么就有了贪心策略:
先消左右的列,再消上面,再消下面
最后一次消列的情况是一样的
# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(2005);
IL int Input(){
RG int x = 0, z = 1; RG char c = getchar();
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x * z;
}
int k, m, n, s1[_][_], s2[_][_], ans = 2e9;
IL int Calc1(RG int x){
RG int l1 = 1, r1 = n, l2 = 1, r2 = m, ret = 0;
while(l1 <= r1 && l2 <= r2){
++ret;
if(s2[r1][l2] - s2[l1 - 1][l2] <= k) ++l2;
else if(s2[r1][r2] - s2[l1 - 1][r2] <= k) --r2;
else if(s1[l1][r2] - s1[l1][l2 - 1] <= k && l1 < x) ++l1;
else if(s1[r1][r2] - s1[r1][l2 - 1] <= k) --r1;
else return 2e9;
}
return ret;
}
IL int Calc2(RG int x){
RG int l1 = 1, r1 = n, l2 = 1, r2 = m, ret = 0;
while(l1 <= r1 && l2 <= r2){
++ret;
if(s1[l1][r2] - s1[l1][l2 - 1] <= k) ++l1;
else if(s1[r1][r2] - s1[r1][l2 - 1] <= k) --r1;
else if(s2[r1][l2] - s2[l1 - 1][l2] <= k && l2 < x) ++l2;
else if(s2[r1][r2] - s2[l1 - 1][r2] <= k) --r2;
else return 2e9;
}
return ret;
}
int main(RG int argc, RG char* argv[]){
k = Input(), m = Input(), n = Input();
for(RG int i = 1; i <= n; ++i)
for(RG int j = 1; j <= m; ++j)
s1[i][j] = s2[i][j] = Input();
for(RG int i = 1; i <= n; ++i)
for(RG int j = 2; j <= m; ++j)
s1[i][j] += s1[i][j - 1];
for(RG int j = 1; j <= m; ++j)
for(RG int i = 2; i <= n; ++i)
s2[i][j] += s2[i - 1][j];
for(RG int i = 1; i <= n + 1; ++i) ans = min(ans, Calc1(i));
for(RG int i = 1; i <= m + 1; ++i) ans = min(ans, Calc2(i));
printf("%d\n", ans);
return 0;
}
Luogu3444:[POI2006]ORK-Ploughing的更多相关文章
- java web 开发三剑客 -------电子书
Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...
- 所有selenium相关的库
通过爬虫 获取 官方文档库 如果想获取 相应的库 修改对应配置即可 代码如下 from urllib.parse import urljoin import requests from lxml im ...
- [洛谷P3444] [POI2006]ORK-Ploughing
洛谷题目链接[POI2006]ORK-Ploughing 题目描述 Byteasar, the farmer, wants to plough his rectangular field. He ca ...
- [POI2006]ORK-Ploughing(贪心,枚举)
[POI2006]ORK-Ploughing 题目描述 Byteasar, the farmer, wants to plough his rectangular field. He can begi ...
- 【Luogu3444】ORK-Ploughing(贪心)
[Luogu3444]ORK-Ploughing(贪心) 题面 Luogu 题解 我们知道,如果我们选定了以横向为主,或者纵向为主, 那么就有尽可能减少另一个方向上耕地的次数 所以分开贪心,但是本质相 ...
- Scalaz(14)- Monad:函数组合-Kleisli to Reader
Monad Reader就是一种函数的组合.在scalaz里函数(function)本身就是Monad,自然也就是Functor和applicative.我们可以用Monadic方法进行函数组合: i ...
- BZOJ1510: [POI2006]Kra-The Disks
1510: [POI2006]Kra-The Disks Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 265 Solved: 157[Submit][ ...
- BZOJ1524: [POI2006]Pal
1524: [POI2006]Pal Time Limit: 5 Sec Memory Limit: 357 MBSubmit: 308 Solved: 101[Submit][Status] D ...
- BZOJ1511: [POI2006]OKR-Periods of Words
1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 174 Solved: 92[Su ...
随机推荐
- MarkDown 编辑数学公式
1. 参考博客:http://blog.csdn.net/smstong/article/details/44340637 1 数学公式的web解决方案 在网页上显示漂亮的数学公式,是多年来数学工作者 ...
- 深入分析Java ClassLoader的原理(转)
一.什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程 ...
- 一步一步从原理跟我学邮件收取及发送 13.mime格式与常见字符编码
在前面的本系列文章中我们已经学会了邮件的发送和收取.但在收取中我们看到的是一串串的乱码,回忆前面的发送过程,我们会奇怪:我们前面的邮件是明文啊.为什么明文的邮件明明也可以正常工作,还要弄乱码似的字符串 ...
- jdbc 报错解决办法
刚刚看到一个童鞋出现了这个问题 其实这个问题很好解决 在工程中创建一个lib目录: 然后讲mysql包复制进去 然后对着包点击右键 build path就可以了 最后面再次运行就可以了 jar包地址下 ...
- 记一次内存溢出的分析经历——thrift带给我的痛orz
说在前面的话 朋友,你经历过部署好的服务突然内存溢出吗? 你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗? 你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗? 我知道,你有过! 但是 ...
- Java基础系列--集合之ArrayList
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单 ...
- 缩减APK包大小
1)开启minifyEnabled 开启混淆,删除没用的java文件 2)开启shrinkResources 去除无用资源 3)resConfigs "zh" 删除无用的语言资源 ...
- 【BZOJ2959】长跑 (LCT+并查集)
Time Limit: 1000 ms Memory Limit: 256 MB Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能“为祖国健康工作五十年”,同学们纷纷离开寝室 ...
- scrapy 中日志的使用
我在后台调试 在后台调试scrapy spider的时候,总是觉得后台命令窗口 打印的东西太多了不便于观察日志,因此需要一个日志文件记录信息,这样以后会 方便查找问题. 分两种方法吧. 1.简单粗暴. ...
- 吾八哥学Selenium(二):操作输入框/按钮的方法
一个web页面一定少不了输入框或者按钮这两种元素,那么在Python里如何使用Selenium操作web页面里的输入框和按钮呢?本文带你简单入门. 本文采用了一个例子,就是利用Selenium打开百度 ...