【JZOJ6360】最大菱形和(rhombus)
description

analysis
容易想到把原矩阵翻转\(45°\),然后每个数再用\(0\)隔开
然后就变成了求最大子正方形,求完二维前缀和之后就很好做了
code
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 6005
#define ha 19260817
#define ll long long
#define reg register ll
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i)
using namespace std;
ll a[3005][3005],b[MAXN][MAXN];
ll n,m,h,type,ans=-ha;
ll Seed,A,B,C,MOD;
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline ll max(ll x,ll y){return x>y?x:y;}
inline ll Random(){C++,Seed=(Seed*A+B*C)%MOD;return Seed;}
inline ll Random_int(){ll tmp=Random();if (Random()&1)tmp*=-1;return tmp;}
inline ll calc(ll x,ll y,ll xx,ll yy){return b[xx][yy]-b[x-1][yy]-b[xx][y-1]+b[x-1][y-1];}
int main()
{
//freopen("T1.in","r",stdin);
freopen("rhombus.in","r",stdin);
freopen("rhombus.out","w",stdout);
n=read(),m=read(),h=read(),type=read();
if (type)
{
Seed=read(),A=read(),B=read(),C=read(),MOD=read();
fo(i,1,n)fo(j,1,m)a[i][j]=Random_int();
}
else {fo(i,1,n)fo(j,1,m)a[i][j]=read();}
fo(i,1,n)fo(j,1,m)b[i-j+m][i+j]=a[i][j];
fo(i,1,n+m)fo(j,1,n+m)b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
fo(i,1,n+m)for (reg j=((m-i)&1)?1:0;j<=n+m;j+=2)
{
ll tmpx=(i+j-m)/2,tmpy=j-tmpx;
if (h<=tmpx && tmpx<=n-h+1 && h<=tmpy && tmpy<=m-h+1)ans=max(ans,calc(i-h+1,j-h+1,i+h-1,j+h-1));
}
printf("%lld\n",ans);
return 0;
}
【JZOJ6360】最大菱形和(rhombus)的更多相关文章
- markdown绘图插件----mermaid简介
作者:黄永刚 mermaid简介 当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样. mermaid解决这个痛点 ...
- Mermaid 学习
基础 在 VS code 中安装插件 Markdown Preview Mermaid Support,则便可支持 Mermaid 流程图 flowchart graph LR; A-->B; ...
- Mxgraph使用总结二
1 新建画板,画板相关操作 var container = document.getElementById("main"); //设置背景样式 container.style.ba ...
- java 输出菱形
package com.demo01; public class Triangle { /** * @param args */ /* * 第一步:规定输出的行数 * 第二步:输出空格 再输出一个星, ...
- JAVA 基础编程练习题19 【程序 19 打印菱形图案】
19 [程序 19 打印菱形图案] 题目:打印出如下图案(菱形) * *** ************ ***** *** * 程序分析:先把图形分成两部分来看待,前四行一个 ...
- For循环打印正三角,倒三角,菱形
A:正三角形: 内循环的判断条件:y<=x for(int x=0; x<5; x++) { for(int y=0; y<=x; y++) { System.out.print(& ...
- Html5 设置菱形链接菜单
本例是采用html5+css3.0设置的菜单链接.其中主要用到了以下几个方面: 1. CSS3.0中的2D变换,如:旋转transform:rotate(45deg);移动,放大transform:r ...
- 冒泡排序和用for循环画菱形
忘了当时刚开始学java编程时提到的冒泡排序和for循环画菱形怎么做了, 找了找以前的练习, 重新修改了一遍, 其实冒泡排序也是可以排列字符串和字符的, package com.test; publi ...
- c语言打印空心菱形
***算法:把菱形的中心看成坐标的原点(,),由此可以知道,如果|x| + |y| <= n;则打印输出"*"号,否则打印输出" " int mai(){ ...
随机推荐
- 自定义hive文件和记录格式及文本文件数据编码
(1)一段 建表语句: [ROW FORMAT row_format] [STORED AS file_format] | STORED BY 'storage.handler.class.name' ...
- 【POJ】1679 The Unique MST
题目链接:http://poj.org/problem?id=1679 题意:给你一组数据,让你判断是否是唯一的最小生成树. 题解:这里用的是kuangbin大佬的次小生成树的模板.直接判断一下次小生 ...
- vue中wath的源码实现
前言 阅读本节,需要理解vue的数据驱动原理. 看这样一段代码 new Vue({ data: { msg: 'hello', say: 'hello world', }, watch: { msg( ...
- Excel函数——ANSI字符集与Code、Char、Asc函数
小叙背景 Windows系统下,默认的字符集为ANSI,该字符编码方式在不同语言环境下采用不同的编码方案,在中文系统下ANSI编码是GBK.ANSI由ASCII扩展而来,ANSI下无论何种具体的编码方 ...
- dnslog小技巧
一.dnslog利用场景 主要针对无回显的情况. Sql-Blind RCE SSRF RFI(Remote File Inclusion) 二.原理 将dnslog平台中的特有字段payload带入 ...
- 2018-2-13-win10-uwp-音频
title author date CreateTime categories win10 uwp 音频 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...
- centos6.8 oracle 11.2.0.4 11g安装
配置Linux系统参数 配置阿里云yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ...
- 第二天:PowerShell别名
1.查询别名: Get-Alias -name ls Get-Alias -name dir Get-Alias -name fl Get-Alias -name ft 2.查看可用的别名 查看可用的 ...
- Ruby 安装 – Unix
Ruby 安装 - Unix 下面列出了在 Unix 机器上安装 Ruby 的步骤. 注意:在安装之前,请确保您有 root 权限. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 Ruby ...
- thinkphp 域名部署
ThinkPHP支持模块(甚至可以包含控制器)的完整域名.子域名和IP部署功能,让你的模块变得更加灵活,模块绑定到域名或者IP后,URL地址中的模块名称就可以省略了,所以还可以起到简化URL的作用. ...