https://www.luogu.org/problem/show?pid=1191
来一个用xjb算法的题解;
xjb是什么算法?
这种算法基本上可以解决所有题目;
也许你不会lct;
也许你不会插头dp;
也许你不会莫比乌斯反演;
但是,只要你会xjb算法,noip甚至省选noi都不成问题!

我们对于这道题
要有一个初步的想法;
对于(i,j)这个点;
如果可以求出以这个点为右下角的所有矩阵;
那么这道题就好办了;
但是这个类似与dp的思想,却好像无法实现;
那怎么办呢?
我们对于(i,j)
维护x表示这个点向左最多连续几个W
维护y表示这个点向上最多连续几个W
显然(i,j)这个点最大贡献就是x*y
但是我们咋么求这个点的实际贡献呢?
我们从x*y这个矩阵的左下角开始向右上角搜索;
勾出一条边界线;
边界线左下放全部是W
这样我们一遍勾出边界,一边计算答案就好了;
时间复杂度
150*150*300

#include<bits/stdc++.h>
using namespace std;
const int N=155;
int a[N][N],x[N][N],y[N][N],s[N][N];
int ans,n,m,xx,yy;
char c;
bool check(int x,int y,int xx,int yy){return (s[xx][yy]-s[xx][y-1]-s[x-1][yy]+s[x-1][y-1])==(xx-x+1)*(yy-y+1);
}
int dfs(int a1,int a2,int xx,int yy){int ans=0;int x=xx;int y=yy-a1+1;while(a1&&a2){ans+=a1;while(!check(x-1,y,xx,yy))y+=1,a1--;x-=1;}return ans;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>c;if(c=='W')a[i][j]=1;s[i][j]=a[i][j];}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)s[i][j]+=s[i][j-1];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)s[i][j]+=s[i-1][j];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(a[i][j]){x[i][j]=x[i][j-1]+1;y[i][j]=y[i-1][j]+1;ans+=dfs(x[i][j],y[i][j],i,j);}printf("%d",ans);
}

xjb——洛谷P1191 矩形相关推荐

  1. 洛谷 P1034 矩形覆盖

    P1034 矩形覆盖 题目描述 在平面上有nn个点(n \le 50n≤50),每个点用一对整数坐标表示.例如:当 n=4n=4 时,44个点的坐标分另为:p_1p1​(1,11,1),p_2p2​( ...

  2. 洛谷 - P1034 - 矩形覆盖 - dfs

    https://www.luogu.org/problemnew/show/P1034 可能是数据太水了瞎搞都可以过. 判断两个平行于坐标轴的矩形相交(含顶点与边相交)的代码一并附上. 记得这里的xy ...

  3. 洛谷P1034矩形覆盖题解--zhengjun

    题目描述 在平面上有 nnn 个点(n≤50n \le 50n≤50),每个点用一对整数坐标表示.例如:当 n=4n=4n=4 时,444 个点的坐标分另为:p1p_1p1​(1,11,11,1),p ...

  4. [洛谷P1369]矩形

    题目大意:有$n(n\leqslant300)$个点,每个点坐标范围在$[1\sim100]$,求一个矩阵,使得边界上的点最多. 题解:做一遍二维前缀和,直接暴力枚举两个顶点 卡点:无 C++ Cod ...

  5. xjb——洛谷 P1439 排列LCS问题

    https://www.luogu.org/problem/show?pid=1439 这个一看就是n*n的暴力嘛,但是n有点大- 因为是两个排列,换句话说没有重复的数字: 那我们可以转化一下 比如样 ...

  6. [洛谷P1856] [USACO5.5]矩形周长Picture

    洛谷题目链接:[USACO5.5]矩形周长Picture 题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长 ...

  7. 洛谷[P1719 最大加权矩形] {前缀和与差分} 奋斗的珂珂~

    洛谷[P1719 最大加权矩形] {前缀和与差分} 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电 ...

  8. 洛谷4147:玉蟾宫——题解

    https://www.luogu.org/problemnew/show/P4147#sub 土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块 ...

  9. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

最新文章

  1. linux跨主机复制文件
  2. PHP中把stdClass Object转array的几个方法
  3. linux内核dentry结构学习
  4. Matlab——GUI程序操作说明
  5. Mybatis中 Dao接口和XML文件的SQL如何建立关联
  6. [转]使用Ant进行ssh和scp操作
  7. pat 乙级 1033 旧键盘打字(C++)
  8. Matlab找到不知道的函数名
  9. python语法用到了什么_Python语法的使用和简介
  10. oracle表数据如何恢复,ORACLE如何恢复被delete的表数据
  11. 电脑配置Java环境变量之后,在cmd中仍然无法识别
  12. delphi xe 连接 mysql_Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决
  13. 关于ini读取错误问题?
  14. 服务器内存有很多不显示,这里大神多,帮忙看看这个服务器内存是不是真的
  15. 安川ga700变频器故障码集_安川变频器CPF故障码集
  16. 如何做一个优秀的管理者
  17. phpmywind 调取导航
  18. unity3d:Matrix4x4矩阵位移,缩放,旋转
  19. 矩阵的LU分解,LU分解的推广,LU分解有什么意义,为什么要用LU分解。
  20. java对接支付宝支付(手机网站支付)

热门文章

  1. 2022新款校园同学跑腿小程序源码+有安装教程
  2. 最新毕设 基于STM32的智能宠物投喂系统(全套资料)
  3. Google OAuth2 for Android(type of web OAuth)
  4. TCP首部(报头)理解
  5. [数据库与SQL] - No.1 in、exists、all、any用法与区别
  6. 【CSDN竞赛第26期】赢实体图书盲盒和高级定制背包等周边
  7. 管理者的角色修炼-第二课总结
  8. 雷军与董明珠的 5 年之约,10 亿赌局 |畅言
  9. 宽带,梦想走向现实?
  10. 这些Excel学会了,你做账的效率将大大提高