【题目描述】

日本信息学奥赛委员会为了应援将要去台湾参加 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 列的 M
N 个正方形组成的图形。

接下来的 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徽章的更多相关文章

  1. JOI2013-2019

    代码自己去LOJ看 JOI2013 彩灯 把序列划分成若干极长交替列,那么最优的方案一定是将一个极长交替列翻转使得连续的三个极长交替列合成一个.计算相邻三个极长交替列长度的最大值即可. 搭乘IOI火车 ...

  2. 「CSP-S模拟赛」2019第四场

    「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...

  3. Bootstrap <基础二十一>徽章(Badges)

    Bootstrap 徽章(Badges).徽章与标签相似,主要的区别在于徽章的边角更加圆滑. 徽章(Badges)主要用于突出显示新的或未读的项.如需使用徽章,只需要把 <span class= ...

  4. 使用joi来验证数据模型

    我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证.然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式 ...

  5. Bootstrap 路径分页标签和徽章组件

    一.路径组件 路径组件也叫做面包屑导航. //面包屑导航 <ol class="breadcrumb"> <li><a href="#&qu ...

  6. BootStrap入门教程 (三) :可重用组件(按钮,导航,标签,徽章,排版,缩略图,提醒,进度条,杂项)

    上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前 ...

  7. 造一个Badge Service(徽章)的轮子

    什么是Badge Service 细心的读者朋友一定在很多Github的Repo,npm的package页面看到过诸如 的徽章.这些徽章是干什么用的? 大家看到上文中我引用的Badge的左侧,是Dow ...

  8. [Hapi.js] Request Validation with Joi

    hapi supports request validation out of the box using the joi module. Request path parameters, paylo ...

  9. Bootstrap入门(十八)组件12:徽章与巨幕

    Bootstrap入门(十八)组件12:徽章与巨幕 1.徽章 2.巨幕 1.徽章 给链接.导航等元素嵌套 <span class="badge"> 元素,可以很醒目的展 ...

随机推荐

  1. C# Socket服务器及多客户端连接示例

    服务端代码[控制台示例] static List<Socket> Sockets = new List<Socket>(); static void Main(string[] ...

  2. oracle高级部分

    回顾 多表关联查询的方式 内连接 根据AB表关联的条件进行过滤查询,只保留满足条件数据 Select * from a,b where a.xxx=b.xxx; Select * from a inn ...

  3. JavaWeb 使用Session实现一次性验证码

    表单 <form action="loginServlet" method="post"> 请输入验证码:<input type=" ...

  4. MSSQL记录表字段数据变化的相关SQl

    在软件实施过程中,也许会有这样的问题: 表中数据出现非预期的结果,此时不确定是程序问题,哪个程序,存储过程,触发器.. 或还是人为修改的结果,此时可以用触发器对特定的表字段做跟踪监视,记录每次新增,修 ...

  5. JVM性能优化简介

    01. JVM是什么    概述:        大白话:             全称Java Virtual Machine(Java虚拟机), 它是一个虚构出来的计算机, 通过实际的计算机来模拟 ...

  6. 解决postMessage跨域问题

    在HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输(Cross Document Messaging),Internet Explorer 8, Firefo ...

  7. springmvc多环境配置-profiles

    1 pom.xml 添加 profiles 标签 <profiles> <!--pro 线上环境--> <profile> <id>hdapp_pro& ...

  8. Unity 渲染教程(一):矩阵

    转载:http://gad.qq.com/program/translateview/7181958 创建立方体网格.· 支持缩放.位移和旋转. · 使用变换矩阵. · 创建简单的相机投影. 这是关于 ...

  9. 词向量---ELMO

    1.ELMo(Embeddings from Language Models ) RNN-based language models(trained from lots of sentences) E ...

  10. Latex使用过程中的一些总结

    本文主要总结在使用Latex过程中遇到的一些问题及解决方案. 一:关于参考文献 1.如何在paper同一处用\cite命令同时引用多篇文献? 用\cite{bibtex1}\cite{bibtex2} ...