CF1200D 【White Lines】
退役快一年了之后又打了场紧张刺激的$CF$(斜眼笑)
然后发现$D$题和题解里的大众做法不太一样 (思路清奇)
题意不再赘述,我们可以看到这个题~~好做~~在只有一次擦除机会,尝试以此为突破口解决问题
我们考虑擦除某一行(列同理),分别记录这一行最左端和最右端的黑块位置(分别记为$l,r$)
这里存在以下三种情况:
1,这一行没有黑块,这时无论在哪擦除,这一行必然全白,记录答案后不再考虑
2,这一行的最左黑块和最右黑块之间的距离$>k$(即$r-l+1>k$),这时无论在哪擦除,这一行必然不会全白,不再考虑
3,这一行最左黑块和最右黑块之间的距离$<=k$,考虑能够使得这一行全为白色的擦除位置(假设我们当前考虑的是第$i$行)
容易得出,对于擦除位置的选择
可行的行:第$i-k+1((i-k+1)+k-1=i)$行到第$i$行
可行的列:第$l-k+1((l-k+1)+k-1=l)$列到第$l$列
即如果擦除位置$(x,y)$满足$i-k+1<=x<=i$且$l-k+1<=y<=l$,这一次擦除可以使第$i$行变白
对于答案统计,自然想到二维前缀和
我们只需在位置$(i-k+1,l-k+1),(i+1,l+1)+1$,$(i-k+1,l+1),(i+1,l-k+1)-1$即可(二维差分的常规操作)
差分完了再做前缀和即可得出答案(别忘了累加情况一的答案)
$P.S.i-k+1$和$l-k+1$不要数组越界
上代码:
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=;
int n,k,ans[maxn][maxn],l[][maxn],r[][maxn],res,bs;
bool exi[maxn][maxn];
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
{
string s;
cin>>s;
for(int j=;j<n;j++)
if(s[j]=='W')
exi[i][j+]=;
else
exi[i][j+]=;
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
if(exi[i][j])
{
l[][i]=j;
break;
}
for(int j=n;j;j--)
if(exi[i][j])
{
r[][i]=j;
break;
}
if(!l[][i])
bs++;
}
for(int j=;j<=n;j++)
{
for(int i=;i<=n;i++)
if(exi[i][j])
{
l[][j]=i;
break;
}
for(int i=n;i;i--)
if(exi[i][j])
{
r[][j]=i;
break;
}
if(!l[][j])
bs++;
}
for(int i=;i<=n;i++)
{
if(l[][i]&&r[][i]-l[][i]+<=k)
{
int minx=max(i-k+,),miny=max(,r[][i]-k+);
ans[minx][miny]++;
ans[i+][miny]--;
ans[minx][l[][i]+]--;
ans[i+][l[][i]+]++;
}
if(l[][i]&&r[][i]-l[][i]+<=k)
{
int miny=max(i-k+,),minx=max(,r[][i]-k+);
ans[minx][miny]++;
ans[minx][i+]--;
ans[l[][i]+][miny]--;
ans[l[][i]+][i+]++;
}
}
for(int i=;i<=n-k+;i++)
for(int j=;j<=n-k+;j++)
{
ans[i][j]+=ans[i-][j]+ans[i][j-]-ans[i-][j-];
res=max(res,ans[i][j]);
}
printf("%d\n",res+bs);
return ;
}
CF1200D 【White Lines】的更多相关文章
- 题解 CF1216C 【White Sheet】
虽然也很水,但这道还是比前两道难多了... 题目大意:给你三个位于同一平面直角坐标系的矩形,询问你后两个是否完全覆盖了前一个 首先,最直观的想法应该是,把第一个矩形内部每个整数点检查一下,看看是否位于 ...
- CF1200D White Lines | 前缀和
传送门 Examples input 1 4 2 BWWW WBBW WBBW WWWB output 1 4 input 2 3 1 BWB WWB BWB output 2 2 input 3 5 ...
- 【MVC 4】7.SportsSore:完成购物车
作者:[美]Adam Freeman 来源:<精通ASP.NET MVC 4> 本文将继续构建 SportsStore 示例应用程序.在上一章中,添加了对购物车的基本支持,现在打 ...
- 【MVC 4】6.SportsSore:导航
作者:[美]Adam Freeman 来源:<精通ASP.NET MVC 4> 前面的文章[MVC 4]5.SportsSore —— 一个真实的应用程序 建立了 Sports ...
- 【29.89%】【codeforces 734D】Anton and Chess
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【20.51%】【codeforces 610D】Vika and Segments
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- Python基础之【第一篇】
Python简介: python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语 ...
随机推荐
- Retrofit+Okhttp+RxJava打造网络请求之Post
之前一直在准备Android培训的事情,所幸的是终于完事啦,在这过程中真的发现了自身无论从沟通能力还是技术能力上很多的不足,就用一句 路漫漫其修远兮,吾将上下而求索 来勉励自己吧.之前也在项目上用上O ...
- javascript 和oc交互
http://www.apkbus.com/android-127963-1-1.html
- 【原】Spring测试类代码
package test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.bea ...
- django + pycharm 开局
1. 首先有 python3 2. 安装了pycharm 3. 配置开局 下面是用的全局的解释器,如果是用的虚拟环境的,Existing interpreter 选择虚拟环境的解释器. 4. set ...
- Apache:系统找不到指定的文件: No installed ConfigArgs for the service "Apache2"
解决方法: 将以下内容保存成FixApacheError.reg文件(其中红色粗体Apache2改成报错的系统服务名称,如"RTX_HTTPServer"),导入系统注册表 Fix ...
- mysql主从配置步骤
主服务器配置: 1)登陆MySQL数据库 mysql>mysql -uroot -p123 2)给从服务器设置授权用户 mysql>grant all slave on *.* to us ...
- 深度学习中目标检测Object Detection的基础概念及常用方法
目录 关键术语 方法 two stage one stage 共同存在问题 多尺度 平移不变性 样本不均衡 各个步骤可能出现的问题 输入: 网络: 输出: 参考资料 What is detection ...
- 201871010128-杨丽霞《面向对象程序设计(Java)》第十二周学习总结
201871010128-杨丽霞<面向对象程序设计(Java)>第十一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- android 开发工具 adb
1.abd基本使用 1.启动一个adb应用程序 adb -P <port> start-server # -P指定端口 默认是5037 1.停止adb adb kill-server 2. ...
- 青春正盛,未来可期。马上2020了,低成本投资自己:vip测试提升圈
应部分群友再三强烈建议要求,组建了一个测试提升小分队,相约vip测试提升圈, 这里汇集了一群热爱学习.渴望提升的测试小伙伴,大家都朝着自己的梦想拼命努力: 此圈将助你在接口自动化和性能方向全面提升,提 ...