JOI徽章
【题目描述】
日本信息学奥赛委员会为了应援将要去台湾参加 IOI 的选手们,打算制作一面新的 JOI 旗帜 。JOI
旗帜为由 M 行 N 列的 M*N 个正方形组 成的图形,每个正方形里写有 J,O,I 中任一字母。
日本信息学奥赛委员会还决定制作 JOI 徽章 。JOI 徽章为由 2 行 2 列的 4 个
正方形组成的图形,每个正方形里写有 J,O,I 中任一字母。
JOI 旗帜中所含 JOI 徽章的个数的意思是,JOI 旗帜中的与 JOI 徽章相同(不允许翻转或旋转)的 22 区域的个数。
现在日本信息学奥赛委员会拥有一张旧的 JOI 旗帜和一张白纸。这张白纸的大小和一个构成 JOI 旗的正方形的大小相同。可以在这张白纸上写上 J,O,I 中任一字母。日本信息学奥赛委员会将进行以下任意一种操作来制作新的 JOI 旗帜。
1.不进行任何操作,直接把旧的旗帜当新的用。不使用白纸。
2.在白纸上写下一个字母,将白纸覆盖在旧的 JOI 旗帜的任意一个正方形上(也就是变更旧的 JOI 旗帜的一个正方形的字母)。
日本信息学奥赛委员会想让新的 JOI 旗帜所含的 JOI 徽章的数量尽可能多。请求出新的 JOI 旗帜所含的 JOI 徽章的个数的最大值。
【输入格式】
第一行为两个以空格分开的整数 M、N 。表示旧的 JOI 旗帜是由 M 行 N 列的 MN 个正方形组成的图形。
接下来的 M 行,每行为含有 N 个字符的字符串。每个字符为 J,O,I 中的一个。这 M 行中的第 i 行中从左数第 j 个字符表示旧的 JOI 旗帜上的第 i 行第 j 列的正方形中所写的字符。
接下来的 2 行,每行为含有 2 个字符的字符串。每个字符为 J,O,I 中的一个。这 2 行中的第 i 行中从左数第 j 个字符表示 JOI 徽章上的第 i 行第 j 列的正方形中所写的字符。
【输出格式】
输出一行一个整数:表示新的 JOI 旗帜所含的 JOI 徽章的个数的最大值。
【样例1】
input
3 5
JOIJO
IJOOO
IIJIJ
JO
IJ
output
3
【数据规模与约定】
对于 30% 的数据, 1≤M≤50,1≤N≤50 。
对于 100% 的数据, 1≤M≤1000,1≤N≤1000。
暴力跑一遍求原本的答案,再替换后计算\(\Delta ans\)
#include<cstdio>
#include<algorithm>
using namespace std;
# define Type template<typename T>
# define read read1<int>()
Type inline T read1()
{
T t=0;
bool ty=0;
char k;
do k=getchar(),(k=='-')&&(ty=1);while('0'>k||k>'9');
while('0'<=k&&k<='9')t=(t<<3)+(t<<1)+(k^'0'),k=getchar();
return ty?-t:t;
}
# define fre(k) freopen(k".in","r",stdin);freopen(k".out","w",stdout)
int x[1005][1005],n,m,t,ans[1005][1005];
int Get(int i,int j){return x[i][j]<<6|x[i][j+1]<<4|x[i+1][j]<<2|x[i+1][j+1];}
int main()
{
n=read,m=read;
for(int i=0;i++^n;)
for(int j=0,k;j++^m;x[i][j]=k^'J'?k^'O'?1:2:3)
do k=getchar();while(k^'J' and k^'O' and k^'I');
for(int i=0;i++^2;)
for(int j=0,k;j++^2;t=t<<2|(k^'J'?k^'O'?1:2:3))
do k=getchar();while(k^'J' and k^'O' and k^'I');
int tans=0;
for(int i=0;++i^n;)
for(int j=0;++j^m;)
if(Get(i,j)==t)
++tans,++ans[i][j],++ans[i+1][j],++ans[i][j+1],++ans[i+1][j+1];
int ad=0;
for(int i=0;i++^n;)
for(int j=0,l;j++^m;x[i][j]=l)
for(l=x[i][j],x[i][j]=0;++x[i][j]^4;)
{
int fu=0;
for(int o=i-1;o<=i;++o)
for(int p=j-1;p<=j;++p)
if(o&&p and o^n and p^m)
fu+=Get(o,p)==t;
ad=max(ad,ad+fu-ans[i][j]);
}
printf("%d",tans+ad);
return 0;
}
JOI徽章的更多相关文章
- JOI2013-2019
代码自己去LOJ看 JOI2013 彩灯 把序列划分成若干极长交替列,那么最优的方案一定是将一个极长交替列翻转使得连续的三个极长交替列合成一个.计算相邻三个极长交替列长度的最大值即可. 搭乘IOI火车 ...
- 「CSP-S模拟赛」2019第四场
「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...
- Bootstrap <基础二十一>徽章(Badges)
Bootstrap 徽章(Badges).徽章与标签相似,主要的区别在于徽章的边角更加圆滑. 徽章(Badges)主要用于突出显示新的或未读的项.如需使用徽章,只需要把 <span class= ...
- 使用joi来验证数据模型
我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证.然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式 ...
- Bootstrap 路径分页标签和徽章组件
一.路径组件 路径组件也叫做面包屑导航. //面包屑导航 <ol class="breadcrumb"> <li><a href="#&qu ...
- BootStrap入门教程 (三) :可重用组件(按钮,导航,标签,徽章,排版,缩略图,提醒,进度条,杂项)
上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前 ...
- 造一个Badge Service(徽章)的轮子
什么是Badge Service 细心的读者朋友一定在很多Github的Repo,npm的package页面看到过诸如 的徽章.这些徽章是干什么用的? 大家看到上文中我引用的Badge的左侧,是Dow ...
- [Hapi.js] Request Validation with Joi
hapi supports request validation out of the box using the joi module. Request path parameters, paylo ...
- Bootstrap入门(十八)组件12:徽章与巨幕
Bootstrap入门(十八)组件12:徽章与巨幕 1.徽章 2.巨幕 1.徽章 给链接.导航等元素嵌套 <span class="badge"> 元素,可以很醒目的展 ...
随机推荐
- 03 .NET CORE 2.2 使用OCELOT -- Docker中的Consul
部署consul-docker镜像 先搜索consul的docker镜像 docker search consul 然后选择了第一个,也就是官方镜像 下载镜像 docker pull consul 然 ...
- iOS - 逆向调试自用工具(reveal 14 Hopper Go2Shell ifunboxmac MachOView Alfred Go2Shell iTerm)
研究了挺长一段时间的逆向感觉没啥可弄的了,再深处对我也用处不大,渐渐兴趣有些掉头了.最近有问我要工具的朋友,分享一些常用工具给用到的朋友. 用法自己百度吧,这里不再赘述. 图例(希望看到你想要的): ...
- VMware 12 下载+专业版永久序列号
VMware 12 下载 VMware 12 下载(百度网盘) 链接:https://pan.baidu.com/s/1VvRmjf1yZ2zprQUzuVKRkA 密码:dvpr VMwar ...
- 网站怎么上传到服务器流程,从本地到服务器上线过程并通过域名(IP地址)进行访问
制作好的网页想要发布到互联网,该怎么发布呢?我们需要将保存在本地的站点上传站点到服务器,首先我们需要准备一个服务器(可通过服务器公网IP地址访问),也可以购买域名,域名购买可以通过阿里云.腾讯云.百度 ...
- TP5.0整合webuploader实现多图片上传功能
在https://github.com/fex-team/webuploader 下载webuploader并解压,解压后放到public里面.其中我把解压缩后的文件夹改名为webuploader,放 ...
- mysql 命令修复表
如果在断电.硬重启服务器等情况下,可能会造成有些表损坏,这时就需要修复 修复表前需要将mysql停止 centos7 用 systemctl stop mysqld.service 来停止 然后进入到 ...
- POJ 2516Minimum Cost(最小费用流+特判)
[题意]: 有N个人,M个仓库,每个人需要物品,个数都等于共同的K,仓库中有对应的K件物品的数量,随后给K个N*M矩阵(小写k, n, m表示K,N,M对应的子集),表明m个仓库到第n个人的位置运送k ...
- Kibana 学习资料
Kibana 学习资料 网址 Kibana 官方文档 https://s0www0elastic0co.icopy.site/guide/en/kibana/current/introduction. ...
- USACO Slowing down
洛谷 P2982 [USACO10FEB]慢下来Slowing down 洛谷传送门 JDOJ 2684: USACO 2010 Feb Gold 3.Slowing down JDOJ传送门 Des ...
- Codeforces Round #605 (Div. 3) E - Nearest Opposite Parity (超级源点)