【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(){ ...
随机推荐
- B-彻底删除卸载Ubuntu中的MySQL并重新安装(已验证)
Ubuntu-16.04,MySQL-5.7,寻找多篇有关如何彻底卸载删除MySQL的博文, 最终验证下面转发博文真实有效,推荐! https://www.jianshu.com/p/c76b31df ...
- Aggregate report 聚合报告
- python代码技巧总结(更新至17条)
怎么提高代码水平?答:看牛逼的代码! 牛逼的代码怎么写的?简单,明确,优雅! 怎么简单,明确,优雅?学技巧! 下面搜罗了一些有才格子褂青年的总结,哈哈 1.检查 Python 中的对象 调用 dir( ...
- AWS的lambda和S3之间如何连携
今天正好遇到了这个问题,就在官方文档里查询,然后根据他的说明整理了一下大致的流程,详细的请参考AWS国际版的官方文档,这里只是作者的一个简单的流程展示. Lambda和S3连接 1.在S3的同一区域当 ...
- SQL Injection简介
- Spring容器对Bean组件的管理
Bean对象创建 默认是随着容器创建 可以使用 lazy-init=true:在调用 getBean 延迟创建 也可以用 <beans default-lazy-init="true& ...
- Delphi 中多线程同步的一些处理方法
Delphi 中多线程同步的一些处理方法 当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...
- NX二次开发-NXOpen::WCS Class Reference
NX11+VS2013 #include <NXOpen/Part.hxx> #include <NXOpen/PartCollection.hxx> #include < ...
- Mysql 触发器写法
DELIMITER $$ USE `库名`$$ DROP TRIGGER /*!50032 IF EXISTS */ `trig_contract_status`$$ CREATE /*!50017 ...
- 20180713NOIP模拟赛
20180713NOIP模拟赛 T1:动物园 zoo.cpp 2s [题目描述] 给定一张图,点有点权,求每个点到其他所有点中所有点的权值最小值之和. [思路] \(50pts\)做法:对于每个点跑一 ...