本题题意:在一个矩阵中,去随机一点,设定一个步数K,求出从这个点可以走到的范围的和,求最大值

思路:这个范围的和是一个菱形,我们把他旋转45°,然后成为一个正放的矩阵,求出二维前缀和

然后用前缀和的性质枚举每一块矩阵的大小,更新答案

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
int a[maxn][maxn];
int b[maxn*][maxn*];
int main()
{
int n,m,k,x,y,xl,yl,xr,yr;
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&a[i][j]);
m=n*-;//新矩阵的大小
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[i+j-][n-i+j]=a[i][j];//把矩阵旋转过来
// for(int i=1;i<=m;i++){
// for(int j=1;j<=m;j++){
// printf("%d ",b[i][j]);
// }
// printf("\n");
// }
for(int i=;i<=m;i++)
for(int j=;j<=m;j++)
b[i][j]+=b[i][j-];//前缀和
for(int j=;j<=m;j++)
for(int i=;i<=m;i++)
b[j][i]+=b[j-][i];//前缀和
int ans=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
x=i+j-,y=n-i+j;//求旋转后的坐标
xl=x-k,yl=y-k,xr=x+k,yr=y+k;//求左上角、右下角的坐标
if(xl<) xl=;
if(yl<) yl=;
if(xr>m) xr=m;
if(yr>m) yr=m;//超出矩阵外的部分要去掉
ans=max(ans,b[xr][yr]-b[xr][yl-]-b[xl-][yr]+b[xl-][yl-]);//更新答案
}
printf("%d\n",ans);
return ;
}

旋转坐标+前缀和(zqu 25001)的更多相关文章

  1. HDU 1700 Points on Cycle (坐标旋转)

    题目链接:HDU 1700 Problem Description There is a cycle with its center on the origin. Now give you a poi ...

  2. 【30分钟学完】canvas动画|游戏基础(6):坐标旋转探究

    前言 本篇主要讲坐标旋转及其应用,这是编程动画必不可少的技术. 阅读本篇前请先打好前面的基础. 本人能力有限,欢迎牛人共同讨论,批评指正. 坐标旋转 模拟场景:已知一个中心点(centerX,cent ...

  3. 第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[1] - 仿射变换(cvWarpAffine)

    拉伸.收缩.扭曲.旋转是图像的几何变换,在三维视觉技术中大量应用到这些变换,又分为仿射变换和透视变换.仿射变换通常用单应性建模,利用cvWarpAffine解决密集映射,用cvTransform解决稀 ...

  4. 2018.10.15 bzoj3564: [SHOI2014]信号增幅仪(坐标处理+最小圆覆盖)

    传送门 省选考最小圆覆盖? 亦可赛艇(你们什么都没看见) 在大佬的引领下成功做了出来. 就是旋转坐标使椭圆的横轴跟xxx轴平行. 然后压缩横坐标使得其变成一个圆. 然后跑最小覆盖圆就可以了. 注意题目 ...

  5. [opencv] 图像几何变换:旋转,缩放,斜切

    几何变换 几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动. 几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定 ...

  6. canvas之图形的变化(平移,缩放,旋转)

    1.保存与恢复canvas状态 ctx.save();暂时将当前的状态保存到堆中 ctx.restore();该方法用于将上一个保存的状态从堆中再次取出,恢复该状态的所有设置. <!DOCTYP ...

  7. html+css笔记

    文档结构 1.html文档结构 ①文档类型声明 严格型(标准模式):    <!DOCTYpE HTML>   HTML5 XHTML 1.0:<!DOCTYpE html pUbL ...

  8. XDOJ

    1000.a+b. #include<bits/stdc++.h> using namespace std; int a,b; int main() { ios::sync_with_st ...

  9. 06. Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 我们先看看画布的魅力: 初始画布 canvas默认是宽3 ...

随机推荐

  1. Leetcode Week3 Merge Two(k) Sorted Lists

    Question Q1.Merge two sorted linked lists and return it as a new list. The new list should be made b ...

  2. 链表问题----删除链表的中间节点和a/b处的节点

    删除链表的中间节点和a/b处的节点 对于给定一个链表的头节点head,实现删除链表的中间节点的函数. 例如 不删除任何节点: 1->2,删除节点1 1->2->3,删除节点2 1-& ...

  3. 2019ICPC南昌站E.Bob's Problem

    题意: 一张图,n个点,m条边分为黑边和白边,黑边任意选,白边只能选k条,在保持整张图连通的情况下使得所选变的权值和最大 解析: 因为边权全部是正值,所以可以把黑边全选上,缩点之后对各个连通块和白边进 ...

  4. 1.mysql卸载重新安装问题

    前言:在开发过程中,MySQL数据库是很频繁使用的数据库,但是有时候,数据库一单出错,或者其他原因,想要重装数据库,难免会遇到MySQL重装之后服务启不来,,下面我就跟大家讨论下如何干净的卸载MySQ ...

  5. mysql-使用存储过程创建大批量数据

    参考:https://www.iteye.com/blog/825635381-2161290 场景1.创建1万个table,每个table种插入1条记录 DELIMITER $$ CREATE DA ...

  6. 【C语言】猴子吃桃问题

    题目: 猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个: 第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个:以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了. ...

  7. 从ASCII到Unicode再到UTF-8的历史原由

    编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体解释: ...

  8. flaskapp

    前置知识 https://blog.csdn.net/u013457794/article/details/88997699?depth_1-utm_source=distribute.pc_rele ...

  9. ❀❀ selenium 学习网站 ★★★★★

    http://edu.51cto.com/course/course_id-7320.html   Selenium IDE WEB自动化测试入门视频课程(上)(共10课时)_在线自学视频教程_51C ...

  10. 测试准确率计算方法说明 pre.eq(target).float().sum().item()

    测试准确率计算方法说明 pre.eq(target).float().sum().item() 待办 pred = logits.argmax(dim=1) correct += pred.eq(ta ...