计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和

时间:2022-09-27 15:35:33

题目链接:https://nanti.jisuanke.com/t/16445

题意:

  给你一个n*n大小的01矩阵,和一个k*k大小的锤子,锤子只能斜着砸,问只砸一次最多能砸到多少个1。

             计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和

题解:

  将原矩阵顺时针旋转45°,二维前缀和预处理,然后枚举每一个可能砸到的正方形之和并取最大。

  注:枚举的正方形的四个顶点必须是从原矩阵旋转过来的点,否则会出现砸到下面的这种情况:

            计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和

    (*代表不是原矩阵旋转过来的点,阴影代表砸到的部分)

    代码中用vis数组判断是否为原矩阵中旋转过来的点。

AC Code:

#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 4005 using namespace std; int n,k,t;
int ans;
int a[MAX_N][MAX_N];
int sum[MAX_N][MAX_N];
bool vis[MAX_N][MAX_N]; void read()
{
memset(a,,sizeof(a));
memset(vis,false,sizeof(vis));
scanf("%d%d",&n,&k);
t=n;
int temp;
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
scanf("%d",&temp);
a[i+j][n--i+j]=temp;
vis[i+j][n--i+j]=true;
}
}
n=n*-;
k=k*-;
} bool is_legal(int x,int y)
{
return x+y>=t- && n--x+y>=t- && n--y+x>=t- && *n--x-y>=t- && vis[x][y];
} void cal_sum()
{
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
if(i->=) sum[i][j]+=sum[i-][j];
if(j->=) sum[i][j]+=sum[i][j-];
if(i->= && j->=) sum[i][j]-=sum[i-][j-];
sum[i][j]+=a[i][j];
}
}
} int cal_max()
{
int maxn=;
for(int i=;i<n && i+k-<n;i++)
{
for(int j=;j<n && j+k-<n;j++)
{
if(!is_legal(i,j) || !is_legal(i,j+k-) || !is_legal(i+k-,j) || !is_legal(i+k-,j+k-)) continue;
int now=sum[i+k-][j+k-];
if(i->=) now-=sum[i-][j+k-];
if(j->=) now-=sum[i+k-][j-];
if(i->= && j->=) now+=sum[i-][j-];
maxn=max(maxn,now);
}
}
return maxn;
} void solve()
{
cal_sum();
ans=cal_max();
} void print()
{
printf("%d\n",ans);
} int main()
{
read();
solve();
print();
}

计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和的更多相关文章

  1. 计蒜客模拟赛D2T3 蒜头君救人:用bfs转移状压dp

    题目链接:https://nanti.jisuanke.com/t/16444 题意: 蒜头君是一个乐于助人的好孩子,这天他所在的乡村发生了洪水,有多名村民被困于孤岛上,于是蒜头君决定去背他们离开困境 ...

  2. 计蒜客模拟赛D1T3 蒜头君的坐骑:用dfs转移dp

    题目链接:https://nanti.jisuanke.com/t/16447 题意: 蒜头君有一只坐骑,人马. 一天,蒜头君骑着他的坐骑走上了一片n*m的大荒野,一开始时,蒜头君在(1,1)点,他要 ...

  3. 计蒜客模拟赛D2T2 蒜头君的排序:区间逆序对(移动端点) &plus; 树状数组

    题目链接:https://nanti.jisuanke.com/t/16443 题意: 给你一个由1~n构成的正整数序列,有m组询问,每组询问要求输出[l , r]区间内的逆序对个数. 数据范围: 对 ...

  4. 计蒜客模拟赛D2T1 蒜头君的兔子:矩阵快速幂

    题目链接:https://nanti.jisuanke.com/t/16442 题意: 有个人在第一年送了你一对1岁的兔子.这种兔子刚生下来的时候算0岁,当它在2~10岁的时候,每年都会生下一对兔子, ...

  5. 计蒜客模拟赛D1T2 蒜头君的树:树上节点之间最短距离和

    题目链接:https://nanti.jisuanke.com/t/16446 题意: 给你一棵有n个节点的树以及每条边的长度,输出树上节点之间的最短距离和.然后进行m次操作,每次操作更改一条边的长度 ...

  6. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  7. 计蒜客模拟赛5 D2T2 蚂蚁搬家

    很久很久以前,有很多蚂蚁部落共同生活在一片祥和的村庄里.但在某一天,村庄里突然出现了一只食蚁兽,蚂蚁们为了保全性命而决定搬家. 然而这个村庄四面环山,想要离开这个村庄必须要从地洞里离开,村子里一共有 ...

  8. 计蒜客模拟赛 &num;5 &lpar;B 题&rpar; 动态点分治&plus;线段树

    虽然是裸的换根dp,但是为了在联赛前锻炼码力,强行上了点分树+线段树. 写完+调完总共花了不到 $50$ 分钟,感觉还行. code: #include <bits/stdc++.h> # ...

  9. 2019ICPC西安邀请赛&lpar;计蒜客复现赛&rpar;总结

    开始时因为吃饭晚了一刻钟,然后打开比赛.看了眼榜单A题已经过了二十来个队伍了,宝儿就去做A. 传师说最后一题看题目像最短路,于是我就去看M了,宝儿做完之后也来陪我看.M一开始看到时以为是像   POJ ...

随机推荐

  1. 【jQuery Demo】jQuery打造动态下滑菜单

    作者:漫凯维奇      来源:[教程]jQuery打造动态下滑菜单 Tip:这只是一个转载,源代码可以在上面的来源博文中下载 此教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单.效果如 ...

  2. CSS的基本操作

    <html> <!-- . 给整个页面填一个一个背景 . 给em添加一个样式样倾斜效果消失 . 改变第一层UL的样式为蓝色,16px . 改变第二层的UL的样式为红色 14px . ...

  3. &num; 20145210 《Java程序设计》第06周学习总结

    教材学习内容总结 第十章 输入\输出 10.1 InputStream与OutputStream •串流设计的概念 •java将输入\输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 •从应 ...

  4. hdu 4155 The Game of 31 博弈论

    给出序列,在剩下的卡中选择,谁先拿到大于31的输,搜一下就可以了! 代码如下: #include<cstdio> #include<cstring> ]; ],sum; boo ...

  5. bzoj 2594 &lbrack;Wc2006&rsqb;水管局长数据加强版(LCT&plus;最小生成树)

    [深坑勿入] [给个链接] http://blog.csdn.net/popoqqq/article/details/41348549 #include<cstdio> #include& ...

  6. Nhibernate 多对多级联删除

    在网上找到的方法:查看这里 //-------------------------------------Article.hbm.xml-------------------------------- ...

  7. WebService开启远程测试

    WebService部署成站点之后,如果在本地测试webservice的接口可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或者"The test form is only a ...

  8. aliyun ubuntu读取第三方源被forbidden的问题

    使用下面指令添加了一个源: sudo add-apt-repository ppa:webupd8team/java 然后update的时候提示: W: Failed to fetch http:// ...

  9. Script error&period;解决方法

    1. 添加 crossorigin="anonymous" 到script标签 <script src="https://xxx.com/xxx.js" ...

  10. 05typedef struct用法详解与小结

    1.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程中使用typedef ...