cf1200 D White Lines(二维差分)
题目大意
有一个大小为n的矩阵,每个1*1的单位为黑或白,我们可以用一个(只有一个)大小为k*k的白色矩阵覆盖,问:最多的时候有几条白线(横的全为白 或竖的全为白 即为白线)。
思路
要想把一条线(以横的为例)全变为白的,那么我们就需要从这一行最左边的黑色块覆盖到最右边的黑色块,如果两端距离超过k,则无法覆盖,否则就一定可以。那么就一定会产生一个矩阵,选取这个矩阵里面的任何一个点 都可以将这行变为白线;反之,矩阵外的一定不行。所以,可以用差分数组,因为只要选了矩阵里的点,答案就一定就加一。然后二维前缀和,最后max取答案。
代码
#include <stdio.h>
#include <queue>
#include <string>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long int ll;
const int maxn = 2e3 + ;
const ll inf = 0x3f3f3f3f;
int res[maxn][maxn];
char mp[maxn][maxn];
int main()
{
int n,k,ans,anss;
while(scanf("%d%d",&n,&k) != EOF){
for(int i = ;i <= n;i++)
scanf("%s",mp[i] + );
memset(res,,sizeof(res));
ans = anss = ; for(int i = ;i <= n;i++){
int mi = n + ,mx = ;
for(int j = ;j <= n;j++){
if(mp[i][j] == 'B'){
mi = min(j,mi);
mx = max(j,mx);
}
}
if(mx == ){
anss++;
continue;
}
if(mx - mi + > k)
continue;
res[max(i - k + ,)][max(mx - k + ,)]++;
res[max(i - k + ,)][mi + ]--;
res[i + ][max(mx - k + ,)]--;
res[i + ][mi + ]++;
}
for(int i = ;i <= n;i++){
int mi = n + ,mx = ;
for(int j = ;j <= n;j++){
if(mp[j][i] == 'B'){
mi = min(j,mi);
mx = max(j,mx);
}
}
if(mx == ){
anss++;
continue;
}
if(mx - mi + > k)
continue;
res[max(mx - k + ,)][max(i - k + ,)]++;
res[mi + ][max(i - k + ,)]--;
res[max(mx - k + ,)][i + ]--;
res[mi + ][i + ]++;
} for(int i = ;i <= n;i++){
for(int j = ;j <= n;j++){
res[i][j] += res[i - ][j] + res[i][j - ] - res[i - ][j - ];
ans = max(ans,res[i][j]);
}
} printf("%d\n",ans + anss);
}
return ;
}
cf1200 D White Lines(二维差分)的更多相关文章
- 洛谷 P3397 地毯 【二维差分标记】
题目背景 此题约为NOIP提高组Day2T1难度. 题目描述 在n*n的格子上有m个地毯. 给出这些地毯的信息,问每个点被多少个地毯覆盖. 输入输出格式 输入格式: 第一行,两个正整数n.m.意义如题 ...
- HDU - 6514 Monitor(二维差分)
题意 给定一个\(n×m\)的矩阵.(\(n×m <= 1e7\)). \(p\)次操作,每次可以在这个矩阵中覆盖一个矩形. \(q\)次询问,每次问一个矩形区域中,是否所有的点都被覆盖. 解析 ...
- NOI 2012 魔幻棋盘 | 二维差分 + 二维线段树
题目:luogu 2086 二维线段树,按套路差分原矩阵,gcd( x1, x2, ……, xn ) = gcd( xi , x2 - x1 , ……, xn - xn-1 ),必须要有一个原数 xi ...
- Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)
题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...
- Monitor HDU6514 二维差分入门学习
Monitor HDU 6514 二维差分入门学习 题意 小腾有\(n*m\)的田地,但是有小偷来偷东西,在一片矩形区域上,有一部分区域是监控可以覆盖到的,这部分区域由一个或多个包含于该矩形区域的小矩 ...
- Gym 102028J 扫描线/二维差分 + 解方程
题意:有一个二维平面,以及n个操作,每个操作会选择一个矩形,使得这个二维平面的一部分被覆盖.现在你可以取消其中的2个操作,问最少有多少块地方会被覆盖? 思路:官方题解简洁明了,就不细说了:https: ...
- Codeforces Round #578 (Div. 2) 二维差分 可做模板
题意: 在n*n的矩阵中,你可以选择一个k*k的子矩阵,然后将这个子矩阵中的所有B全部变为W,问你怎么选择这个子矩阵使得最终的矩阵中某一行全是W或者某一列全是W的个数最多 题解:考虑每一行和每一列,对 ...
- 2020ICPC·小米 网络选拔赛第一场 J.Matrix Subtraction (贪心,二维差分)
题意:给一个\(nXm\)的矩阵,可以选取\(aXb\)的子矩阵,使子矩阵中的所有元素减一,问最后是否能使矩阵中所有元素变为\(0\). 题解:首先贪心,我们看最左上角的元素,如果\(g[1][1]\ ...
- 220514 T2 画画 (二维差分)
首先我们需要特判只涂了一种颜色的情况: (1)k=1,此时答案就是1:(2)k>1,涂的这种颜色肯定不能是第一个,答案是k-1; 对于其他正常情况,我们对于每个颜色找到一个最小的矩形(这个矩形内 ...
随机推荐
- 51nod 1441:士兵的数字游戏
1441 士兵的数字游戏 题目来源: CodeForces 基准时间限制:4 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 取消关注 两个士兵正在玩一个游戏,游戏开始的时 ...
- SpringIOC初始化过程源码跟踪及学习
Spring版本 4.3.2,ssm框架 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 web.xml <!--配置获取项目的根路径,java类中使用System.getProperty ...
- Day8 - B - Non-Secret Cypher CodeForces - 190D
Berland starts to seize the initiative on the war with Flatland. To drive the enemy from their nativ ...
- Day6 - H - Balanced Lineup POJ - 3264
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...
- Day4 - M - Roads in Berland CodeForces - 25C
There are n cities numbered from 1 to n in Berland. Some of them are connected by two-way roads. Eac ...
- lsof(查看端口)
简介 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如 ...
- 012.CI4框架CodeIgniter, 加载并调用自己的Libraries库
01. 在Libraries目录创建一个Mylib文件,内容是一个简单的类 <?php namespace App\Controllers; class Home extends BaseCon ...
- java 图片上传
代码是最有力量的,嘎嘎 @CrossOrigin@ApiOperation(value = "上传图片", notes = "上传图片", httpMethod ...
- 区块链技术核心概念与原理讲解-Tiny熊
转载自简书ceido:https://www.jianshu.com/u/fcdf49ef65bb (1)区块链前世今生 密码朋克(Cypherpunk):是一个邮件组,里面有许多大牛. 区块链不是单 ...
- (五)微信小程序的跳转
我们在微信页面往往有点击一个图片就可以跳转的情况,接下来我们就学习一下这个功能 一 js版本--bindtap 实现跳转 1. 首先我们先写一个跳转的按钮(在index.wxml) <view ...