题目链接

一开始想枚举左上角,怎么想都做不出来。

看题解,枚举右上角。

转换思路一想。

对于点 ( x , y ) (x,y) (x,y)求出左侧连续的z个数和左下角连续的z的个数。

对每一列从N到1遍历。对于 ( x , y ) (x, y) (x,y)而言,它下面的符合条件的点 ( x , i ) (x, i) (x,i)满足 l e f t [ x ] [ i ] > = i − y + 1 left[x][i]>=i - y + 1 left[x][i]>=i−y+1

假如我们每次遍历前给给 [ N , y ] [N, y] [N,y]区间的 l e f t [ x ] [ i ] left[x][i] left[x][i]减1,则 ( x , y ) (x,y) (x,y)对答案的贡献为 [ N , y ] [N, y] [N,y]区间内 l e f t [ x ] [ i ] > = 0 left[x][i]>=0 left[x][i]>=0的个数

区间减+求排名。只要写个平衡树就可以啦(但是我不会)(挖个坑,以后把用平衡树的做法写了)

再次转换思路通过对角线上的点来判断贡献。

r i g h t [ x ] [ y ] right[x][y] right[x][y]表示点 ( x , y ) (x,y) (x,y)最右边的z的位置

对于点 ( x , y ) (x,y) (x,y),它在第 x + y − 1 x + y - 1 x+y−1条斜线上。从第 r i g h t [ x ] [ y ] right[x][y] right[x][y]开始,它可以组成z矩阵。

y从大到小遍历,把可产生贡献的点加上,利用树状数组求和即可

#include <bits/stdc++.h>
using namespace std;
const int maxn = 3005;
class BIT {public:int c[maxn];BIT() { memset(c, 0, sizeof c); }void clear() { memset(c, 0, sizeof c); }void add(int x, int add, int len) {for (; x <= len; x += x & -x) c[x] += add;}int query(int x) {int ret = 0;for (; x; x -= x & -x) ret += c[x];return ret;}int sum(int L, int R) {return query(R) - query(L - 1);}
} T[maxn << 1];bool z[maxn][maxn];
long long ans;
int N, M, rig[maxn][maxn], lef[maxn][maxn], dia[maxn][maxn];
vector < pair<int, int> > ed[maxn];
int main() {#ifndef ONLINE_JUDGEfreopen("prob.in", "r", stdin);freopen("prob.out", "w", stdout);
#endifscanf("%d%d\n", &N, &M);for (int i = 1; i <= N; ++i) {string s;getline(cin, s);for (int j = 1; j <= M; ++j) z[i][j] = (s[j - 1] == 'z');}for (int i = 1; i <= N; ++i) {lef[i][1] = z[i][1];for (int j = 2; j <= M; ++j) {if (!z[i][j]) lef[i][j] = 0;else lef[i][j] = lef[i][j - 1] + 1;}rig[i][M] = M + z[i][M];for (int j = M - 1; j; --j) {if (!z[i][j]) rig[i][j] = j;else rig[i][j] = rig[i][j + 1];}for (int j = 1; j <= M; ++j) {ed[rig[i][j] - 1].push_back(make_pair(i, j));}}for (int j = 1; j <= M; ++j) dia[N][j] = z[N][j];for (int i = N - 1; i; --i) {dia[i][1] = z[i][1];for (int j = 2; j <= M; ++j) {if (!z[i][j]) dia[i][j] = 0;else dia[i][j] = dia[i + 1][j - 1] + 1;}}for (int j = M; j; --j) {for (auto tp: ed[j]) {int x = tp.first;int y = tp.second;T[x + y - 1].add(y, 1, M);}for (int i = 1; i <= N; ++i) {if (!z[i][j]) continue;int len = min(lef[i][j], dia[i][j]);ans += T[i + j - 1].sum(j - len + 1, j);}}printf("%lld\n", ans);return 0;
}

CF 628E Zbazi in Zeydabad相关推荐

  1. 406 “Z”型矩阵 思维+树状数组 [代码源][namomo spring camp]每日一题div1

    Educational Codeforces Round 8 E. Zbazi in Zeydabad codeforces题目链接 一道CF的E题 晚点补文字,先给代码 //acmer mxc #i ...

  2. 2016区域赛前冲刺训练

    UPD 2016.10.23 shift-and (2题) Codeforces 训练 现在已经完成了: 191 [Codeforces Round #377] (6/6) Div 2 A Buy a ...

  3. 『参考』.net CF组件编程(4)——为自定义组件添加工具箱图标!

    前言: 在前三篇的文章中,和大家一起创建了一个用于TCP连接检测的小组件,如果你记不得了,可以通过以下链接去回顾一下: 『参考』.net CF组件编程(1)--基础之后 『参考』.net CF组件编程 ...

  4. OC对象 vs CF对象

    2019独角兽企业重金招聘Python工程师标准>>> OC对象 vs CF对象 在ARC场景下,对象所有权没有转换 使用__bridge关键字即可实现CF对象和OC对象之间的自由转 ...

  5. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

  6. 推荐算法——基于协同过滤CF

    https://www.toutiao.com/a6643326861214482957/ 2019-01-06 18:21:09 前边我们已经介绍了推荐算法里的基于内容的推荐算法CB,今天我们来介绍 ...

  7. 索引贴——移动开发(.Net CF 停止更新)

    这是关于本人博客的技术索引贴,希望能方便的让您阅读到相关技术文章--不断更新中.一整理才发现,好多啊,哈哈- 一..Net CF技巧:搜集.转载一些和CF开发相关的辅助文章,比较适合初学者.开发入门者 ...

  8. 解答:CF截图保存在哪

    为什么80%的码农都做不了架构师?>>>    大家玩CF(穿越火线)的时候遇到精彩的画面总希望截图保存下来,然而有些游戏玩家截图后却不知道CF截图保存在哪!这不得不说是个悲剧,但是 ...

  9. CF里面的资源载入问题

    前一段时间已经发现CF在载入资源的时候会怪怪的,但是这一段时间都不曾记起要对这个问题研究一下.最近又发现这个问题了,实在是恼火.俗话说择日不如撞日(粤语),唉,就今天啦.这个问题是在VS2k5里面调试 ...

最新文章

  1. c++ 三次多项式拟合_非线性回归模型(一)--多项式回归
  2. 高效整洁CSS代码原则 (下)
  3. spring boot web jar说明
  4. python打包成exe导入文件_【转载】将python脚本打包成exe文件
  5. 如何为Python日志输出着色?
  6. tree命令生成目录结构
  7. [导入][转]精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
  8. Python中各种括号的区别、用途及使用方法
  9. photo3d人脸照片转3d模型软件开发
  10. Visio图标模板库
  11. 华为虚拟专网客户端SecoClient报错“接受返回码超时”故障
  12. 比特bit,字节Byte,带宽流量和流速的关系,存储容量单位
  13. mysql中数据库改名字_MySQL数据库改名字
  14. 【LLC原理与设计】仙童半导体 LLC原理与设计
  15. Apache Hadoop YARN:另一个资源协调者
  16. 京东科技寒假实习前端一面面经
  17. 图的遍历(书本内容)
  18. 一阶广义差分模型_4.2 序列相关性_清华大学:计量经济学(李子奈博导)_ppt_大学课件预览_高等教育资讯网...
  19. 经验之谈:京东撸货入坑的那群人!
  20. WordPress站点基于IP无需账号密码登录的插件IP Based Login

热门文章

  1. 神经网络可以我们matlab吗,Matlab神经网络工具箱介绍-训练神经网络的一些概念和步骤...
  2. 虚幻蓝图节点 set Global Time Dilation
  3. winEdt使用教程
  4. 企业邮箱搭建费用,smtp邮件系统怎么搭建?验证码邮件群发,有哪些推荐邮件群发系统?
  5. https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145
  6. php版个人博客管理系统源码(文末有下载方式)
  7. 电影:香港制造 (香港)
  8. Sharepoint网站创建自定义导航全记录
  9. python 排序算法:插入排序
  10. 综合纳税服务平台的设计