正题

题目链接:https://www.luogu.com.cn/problem/CF1598E


题目大意

给出一个n×mn\times mn×m的网格图,开始所有都是黑色的,qqq次取反一个格子的颜色,然后求楼梯的数量。

楼梯定义为全黑色的下/右交替的格子集。

1≤n,m≤1000,1≤q≤1041\leq n,m\leq 1000,1\leq q\leq 10^41≤n,m≤1000,1≤q≤104


解题思路

注意到其实是两个斜行交错,可以考虑把坐标轴旋转45°45°45°,然后发现其实就是相邻的两行的正方形数量。

fi,jf_{i,j}fi,j​表示格子(i,j)(i,j)(i,j)所在斜行再往(i,j)(i,j)(i,j)左上角的能延伸多少个黑色,然后每次O(n)O(n)O(n)暴力修改即可。

时间复杂度:O(qn)O(qn)O(qn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1100;
ll n,m,q,w[N][N],a[N][N],ans;
ll calc(ll x,ll y)
{if(y<0)return 0;return min(x,y+1)+min(x,y);
}
signed main()
{scanf("%lld%lld%lld",&n,&m,&q);for(ll i=1;i<=n;i++)   for(ll j=1;j<=m;j++)w[i][j]=w[i-1][j-1]+1;for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++)ans+=calc(w[i][j],w[i-1][j])+calc(w[i][j],w[i][j-1])-1;while(q--){ll x,y;scanf("%lld%lld",&x,&y);if(a[x][y]){ll dx=x,dy=y;x++;y++;while(x<=n&&y<=m&&!a[x][y]){ans-=calc(w[x][y],w[x-1][y])+calc(w[x][y],w[x][y-1])-1;ans-=calc(w[x][y],w[x+1][y]-1)+calc(w[x][y],w[x][y+1]-1);x++;y++;}x=dx;y=dy;a[x][y]^=1;while(x<=n&&y<=m&&!a[x][y])w[x][y]=w[x-1][y-1]+1,x++,y++;x=dx;y=dy;while(x<=n&&y<=m&&!a[x][y]){ans+=calc(w[x][y],w[x-1][y])+calc(w[x][y],w[x][y-1])-1;ans+=calc(w[x][y],w[x+1][y]-1)+calc(w[x][y],w[x][y+1]-1);x++;y++;}}else{ll dx=x,dy=y;while(x<=n&&y<=m&&!a[x][y]){ans-=calc(w[x][y],w[x-1][y])+calc(w[x][y],w[x][y-1])-1;ans-=calc(w[x][y],w[x+1][y]-1)+calc(w[x][y],w[x][y+1]-1);x++;y++;}x=dx;y=dy;a[x][y]^=1;w[x][y]=0;x++;y++;while(x<=n&&y<=m&&!a[x][y])w[x][y]=w[x-1][y-1]+1,x++,y++;x=dx;y=dy;x++;y++;while(x<=n&&y<=m&&!a[x][y]){ans+=calc(w[x][y],w[x-1][y])+calc(w[x][y],w[x][y-1])-1;ans+=calc(w[x][y],w[x+1][y]-1)+calc(w[x][y],w[x][y+1]-1);x++;y++;}}printf("%lld\n",ans);}
}

CF1598E-Staircases【计数】相关推荐

  1. 微机原理—定时计数控制接口

    别看题目很高深,其实就是很简单的定时器和计数器而已. 通常用手机定个闹钟,就是定时器的使用. 工厂里通过传送带上安装传感器,传感器传输给计算机的信号用来计数. 这是一些很简单的应用,通过很小的一个芯片 ...

  2. nvGRAPH三角形计数和遍历示例

    nvGRAPH三角形计数和遍历示例 #include " stdlib.h" #include" inttypes.h" #include" stdi ...

  3. hdu5701-中位数计数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5701 题目: Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个 ...

  4. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

  5. 计数排序之python

    计数排序( Count sort) 一个不需要比较的,类似于桶排序的线性时间排序算法.该算法是对已知数量范围的数组进行排序.其时间复杂度为O(n),适用于小范围集合或重复元素多的排序.计数排序是用来排 ...

  6. bzoj 1211 [HNOI2004]树的计数

    [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, ...

  7. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  8. linux输出指定数量脉冲,ESM335x Linux输出脉冲计数

    关键词:Linux,脉冲计数,ESM335x 作者:emtronix 摘要:ESM335X具有4路PWM输出,其中PWM1和PWM2除了可以用于产生标准的PWM信号,现已支持输出脉冲计数功能,可以在应 ...

  9. 基于YOLO的手部检测和计数实现(课程设计,训练和测试)(1)

    基于YOLO的手部检测和计数实现(课程设计)支持YOLOV3和YOLOV3-TINY 训练测试代码.数据集.测试视频下载地址:下载地址 环境要求: * Python 3.7 * PyTorch > ...

  10. 基于yolov5和deepsort的行人车辆的检测、跟踪和计数(课程设计)

    - 实现了行人出入分别计数,沿着图像上下方向检测. - 检测类别:行人.自行车.小汽车.摩托车.公交车.卡车. -支持yolov5s.pt yolov5x.pt yolov5m.pt yolov5l. ...

最新文章

  1. CSS基本知识1-CSS基本概念
  2. rman datafile恢复(归档模式)
  3. android基础之内容提供者使用
  4. ASP.NET 错误
  5. mysql seconds_behind_master_MySQL中的seconds_behind_master的理解
  6. JAVA WEB篇1——初识JAVAWEB
  7. ewsa 字典_汉语字典小程序
  8. linux用户管理和文件权限
  9. Windows 2000活动目录详解之基础篇
  10. python核心数据类型
  11. #64-【模拟】屠城(zly#3)
  12. elite php,Elite Chat (开源在线客服系统)
  13. docker安装后,并没有ln到/etc/systemd/system/multi-user.target.wants
  14. 计算机组成原理:RISC与CISC比较
  15. java纲要_幼儿园综合素质笔试大纲
  16. 如何给自己打造好的“口碑”?
  17. java 进阶笔记线程与并发之ForkJoinPool简析
  18. 【北邮国院大二下】产品开发与营销知识点整理 Topic11
  19. Lumion 9.0 建筑动画微电影:Uncaptured
  20. 乐鑫科技2022笔试面试题

热门文章

  1. Oracle 加密配置,Oracle sqlnet设置网络传输加密
  2. aix 安装oracle9,IBM P570 小型机AIX5.3系统安装ORACLE9i
  3. java中统计括号配对_括号配对问题(C语言或JAVA语言代码)
  4. php 电压 异常,tv断线警告是什么原因
  5. 归纳推理测试没做完_朋友买了1斤紫菜,2年还没吃完,我教他这样做,2个月就吃完了...
  6. python json方法详解_python详解json模块
  7. 项目进度计划甘特图_项目管理进度计划表制作及甘特图绘制方法
  8. python3怎么安装gmpy2_python2/3 模块gmpy2在linux下安装
  9. linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
  10. [JavaWeb-HTTP]request对象和response对象的原理