P2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver
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的更多相关文章
- 洛谷 2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver
[题解] 每个格子可以到达的区域是一个菱形,但是我们并不能快速的求和,所以我们可以把原来的草地旋转45度,用二维前缀和快速处理菱形的区域的和. #include<cstdio> #incl ...
- 037——VUE中表单控件处理之表单修饰符:lazy/number/trim
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- Hibernnate延迟加载策略(这么详细你还看不懂)
好久没有认真写过博客了,今天就好好的写一篇吧!!!!!!!!! 当Hibernate 从数据库中加载某个对象(例如:Dept对象)时,如果同时自动加载所有的关联的某个对象(例如:Emp对象),而程序实 ...
- iOS - Swift 面向对象语法
1.面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析.如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块.每一个解决的步骤可能是一行或者几行代码,也可能是一 ...
- Yii 多表关联relations,需要与with()方法联合使用
1,首先多表关联是在models/xx.php的relations里配置的.而且是互配,但有区别. 格式: 'VarName'=>array('RelationType', 'ClassName ...
- C++11新特性之字节对齐、多参数模版、placement new
1. 内存对齐 #pragma pack(push, 1) struct A { char a; int b; double c; ]; }; #pragma pack(pop) #pragma pa ...
- java——线段树 SegmentTree
应用: 区间染色 区间查询 线段树不是完全二叉树,线段树是平衡二叉树 使用数组来实现线段树:存储空间为4n 以下是使用数组实现的静态线段树: public class SegmentTree<E ...
- 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)
就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...
随机推荐
- springboot集成邮件服务
一.前言 Spring Email 抽象的核心是 MailSender 接口,MailSender 的实现能够把 Email 发送给邮件服务器,由邮件服务器实现邮件发送的功能. Spring 自带了一 ...
- 使用maven搭建Spring MVC
在maven项目中搭建SpringMvc 1.pom文件 <span style="white-space:pre"> </span><propert ...
- python打开文件常见错误及解决办法
打开文件注意事项: 打开文件时需要,填写正确的路径,需要配置与文件相同的编码方式打开位机例如’utf-8‘,需要以特定 的模式打开文件 r, w,r+,w+,rb,wb,a, a+,ab等模式 f.o ...
- CSS3自定义loading效果
效果: 使用CSS3完成loading的制作 css样式: <style type="text/css"> .mask { position: fixed; left: ...
- Scrapy框架的使用 -- 自动跳转链接并请求
# -*- coding: utf-8 -*- import scrapy from movie.items import MovieItem class MoviespiderSpider(scra ...
- JavaScript有限状态机实现方式
阮一峰博客 http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html 开源实现库(javascri ...
- HTML学习笔记《二》 ----HTML部分标签应用
HTML 部分标签应用 一.HTML中的注释.标签语法以及颜色表示方式 1.HTML中注释: <!-- .... --> 注释的目的:1. 辅助说明 2.代码调试(不同编程语言,注释方式略 ...
- Java jsp 自定义标签
1 自定义标签 1.1 引入 需求: 向浏览器输出当前客户的IP地址 (只能使用jsp标签) 1.2 第一个自定义标签开发步骤 1)编写一个普通的java类,继承SimpleTagSupport类,叫 ...
- 1-2 Sass安装(windows版)
在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,大家可以到 Ruby 的官网(http://rubyinstaller.org/downloads)下载对应需要的 Ruby 版本 ...
- <Android 基础(二十)> CoordinatorLayout Behavior
介绍 Interaction behavior plugin for child views of {@link CoordinatorLayout}. A Behavior implements o ...