【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(){ ...
随机推荐
- tomcat启动内存修改
# USE_NOHUP (Optional) If set to the string true the start command will # ...
- 使用sql对比Mysql中数据库2个表结构
比较两个数据表的结构 SELECT column_name, max( CASE WHEN table_name = 'table1' AND table_schema = 'db1' THEN 'Y ...
- 49. ArrayList LinkedList中特有的方法
集合的体系:--------------| Collection 单列集合的根接口 ----------| List 如果实现了List接口的集合类,该类具备的特点是:有序,可重复 ------|A ...
- 线段树优化dp——牛客多校第一场I(好题)
和两天做了两道数据结构优化dp的题,套路还是差不多的 题解链接! https://www.cnblogs.com/kls123/p/11221471.html 一些补充 其实这道题的dp[i]维护的不 ...
- 基本算数定理快速求约数个数——lightoj1208
#include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 1000005 bool vi ...
- NX二次开发-UFUN工程图初始化视图信息UF_DRAW_initialize_view_info
NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_obj.h> #include <u ...
- NX二次开发-UFUN获取工程图视图边界线是否显示UF_DRAW_ask_border_display
#include <uf.h> #include <uf_draw.h> #include <uf_ui.h> UF_initialize(); logical b ...
- opencv-角点检测之Harris角点检测
转自:https://blog.csdn.net/poem_qianmo/article/details/29356187 先看看程序运行截图: 一.引言:关于兴趣点(interest point ...
- ionic-CSS:ionic 表单和输入框
ylbtech-ionic-CSS:ionic 表单和输入框 1.返回顶部 1. ionic 表单和输入框 list 类同样可以用于 input 元素.item-input 和 item 类指定了文本 ...
- Python3 From Zero——{最初的意识:006~数据编码与处理}
一.读写CSV数据: #!/usr/bin/env python3 #-*- coding=utf8 -*- import csv with open('kxtx.csv', 'rt') as f: ...