P2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver

最大化一个子矩阵的和。

我们如何去做,dp和贪心呀!

大体题意:给定一个正方形,然后在正方形中求出一个大小已经给定的倾斜45的子正方形。使得这个正方形内的元素和最大。

倾斜45度?

好像可以做,有点麻烦?

可以观察到,如果我们将一个已经计算好了的菱形进行平推一格,那么变动的元素只\(2\ast k-1\)(k为边长)。然后每次维护就可以了。

时间复杂度\(O(n^2k)\)

感觉是对的。可我就是不愿意写。那怎么办?

考虑将整个图形旋转45度。

这是样例:





这样子矩形就正过来了。然后就可以很容易的跑前缀和暴力了。时间复杂度\(O((2n)^2)\)。不对,好像更慢了。

空间范围小mua,瞎搞就过了呀。在能通过的范围上最大化收益mua~~

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
using std::max;
using std::min;
const int maxn=540;
int base[maxn][maxn];
int New[maxn<<1][maxn<<1];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&base[i][j]);
for(int K=2;K<=2*n;K++)
for(int j=1;j<=n;j++)
if(K-j>0&&K-j<=n)
{
int i=K-j;
int A=K-1;
int B=(n-A)+2*(j-1)+1;//规律
New[A][B]=base[i][j];
}
n=n*2;k=k*2+1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
New[i][j]=New[i][j]+New[i-1][j]+New[i][j-1]-New[i-1][j-1];
int ans=0;
k=min(n,k);
for(int i=k;i<=n;i++)
for(int j=k;j<=n;j++)
ans=max(ans,New[i][j]-New[i-k][j]-New[i][j-k]+New[i-k][j-k]);
printf("%d",ans);
}

P2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver的更多相关文章

  1. 洛谷 2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver

    [题解] 每个格子可以到达的区域是一个菱形,但是我们并不能快速的求和,所以我们可以把原来的草地旋转45度,用二维前缀和快速处理菱形的区域的和. #include<cstdio> #incl ...

  2. 037——VUE中表单控件处理之表单修饰符:lazy/number/trim

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  4. Hibernnate延迟加载策略(这么详细你还看不懂)

    好久没有认真写过博客了,今天就好好的写一篇吧!!!!!!!!! 当Hibernate 从数据库中加载某个对象(例如:Dept对象)时,如果同时自动加载所有的关联的某个对象(例如:Emp对象),而程序实 ...

  5. iOS - Swift 面向对象语法

    1.面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析.如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块.每一个解决的步骤可能是一行或者几行代码,也可能是一 ...

  6. Yii 多表关联relations,需要与with()方法联合使用

    1,首先多表关联是在models/xx.php的relations里配置的.而且是互配,但有区别. 格式: 'VarName'=>array('RelationType', 'ClassName ...

  7. C++11新特性之字节对齐、多参数模版、placement new

    1. 内存对齐 #pragma pack(push, 1) struct A { char a; int b; double c; ]; }; #pragma pack(pop) #pragma pa ...

  8. java——线段树 SegmentTree

    应用: 区间染色 区间查询 线段树不是完全二叉树,线段树是平衡二叉树 使用数组来实现线段树:存储空间为4n 以下是使用数组实现的静态线段树: public class SegmentTree<E ...

  9. 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)

    就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...

随机推荐

  1. 一、python简单爬取静态网页

    一.简单爬虫框架 简单爬虫框架由四个部分组成:URL管理器.网页下载器.网页解析器.调度器,还有应用这一部分,应用主要是NLP配合相关业务. 它的基本逻辑是这样的:给定一个要访问的URL,获取这个ht ...

  2. 任意表格(table)实现拖动列(column)改变列大小

    直接上代码吧,原理可以看我上一篇博文.本实现基于jquery,完美实现拖动改变表格的列大小功能,只需将代码放置在你页面的底部即可(jquery必须先引入). $(function () { var i ...

  3. Win7下硬盘安装Ubuntu双系统

    一. 准备工作 1. 下载ubuntu镜像文件:Ubuntu-14.04.5-desktop-amd64.iso(4G及以上内存建议64位) 注意这个amd并不是指amd芯片. 2. 下载硬盘分区工具 ...

  4. H5安卓端浏览器如何去除select的边框?

    H5安卓端浏览器如何去除select的边框? android下没有问题,在apple下无三角号. -webkit-appearance:none; border-radius:0

  5. side Effect

    副作用 side Effect 副作用是在计算结果的过程中,系统状态的一种变化,或者与外部世界进行的可观察的交互. 副作用可能包含,但不限于: 1.更改文件系统 2.往数据库里插入数据 3.发送一个h ...

  6. Bzoj1835:[ZJOI2010]基站选址

    Sol 设\(f[i][j]\)表示钦定\(i\)建基站,建了\(j\)个基站的最小代价 \(f[i][j]=max(f[l][j-1]+\Sigma_{t=l+1}^{i-1}\)不能影响到的村庄的 ...

  7. Linux基础之-元字符

    Bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义,强调一点:元字符是被shell解释的. 1. '',取命令的执行结果 [root@MiWiFi-R3-srv ~]# ls4.txt an ...

  8. Activiti 配置Oracle不能自动创建表解决方法

    使用配置文件创建工作流表 <bean id="processEngineConfiguration" class="org.activiti.engine.impl ...

  9. 用 State Pattern 来实现一个简单的 状态机

    首先要理解 State Pattern 模式. http://www.dofactory.com/net/state-design-pattern Definition Allow an object ...

  10. Android 集成百度统计

    在这里简单的介绍下怎么统计自己研发的APP 的用户活跃度,和使用量,以此来展示自己APP的用户使用量! 我们的APP都需要注入数据分析,以供我们实时的了解APP的下载和使用量提供了依据! 不过我还是更 ...