当前位置: 首页 > news >正文

We are the Lights 2023牛客暑期多校训练营4-L

登录—专业IT笔试面试备考平台_牛客网

题目大意:有n*m盏灯,q次操作,每次可以将一整行或一整列的等打开或关闭

1<=n,m<=1e6;1<=q<=1e6

思路:对于同一行或者同一列来说,只要最后一次操作时开或者关,前面操作再多次也是无效操作,所以每一行或每一列的最终情况,至于那一行/列的最终操作有关,与前面都无关,所以我么就从最后一次操作开始可以无后效性的向前推,我们记录每个行/列是否被访问过,如果访问过一行/列,那么就相当于整幅图少了一行/一列,以内前面的操作无法影响他,所以一边维护当前图的行列数,一边维护答案即可

//#include<__msvc_all_public_headers.hpp>
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
int co[N], r[N];
bool visc[N], visr[N];
char op1[N];
int op2[N];
int main()
{int n, m, q;cin >> n >> m >> q;for (int i = 1; i <= q; i++){string a, c;int b;cin >> a >> b >> c;if (a[0] == 'r'){r[b] = (c[1] == 'n' ? 1 : 0);//记录每一行最后一次操作是开还是关}else{co[b] = (c[1] == 'n' ? 1 : 0);}op1[i] = a[0];//记录操作顺序op2[i] = b;//记录每次操作的行列}ll ans = 0;ll cc = m, cr = n;for (int i = q; i >= 1; i--){if (op1[i] == 'r'){if (visr[op2[i]])continue;//每一行就访问一次visr[op2[i]] = 1;if(r[op2[i]])ans += cc;//每一行的贡献就是当前列数cr--;//处理完一行,行数-1}else{if (visc[op2[i]])continue;visc[op2[i]] = 1;if(co[op2[i]])ans += cr;cc--;}if(!cc&&!cr)break;}cout << ans << endl;return 0;
}

http://www.lryc.cn/news/100255.html

相关文章:

  • ant-design-vue中table组件使用customRender渲染v-html
  • 若依框架实现后端防止用户重复点击
  • PCA对手写数字数据集的降维
  • Python入门【变量的作用域(全局变量和局部变量)、参数的传递、浅拷贝和深拷贝、参数的几种类型 】(十一)
  • 下级平台级联安防视频汇聚融合EasyCVR平台,层级显示不正确是什么原因?
  • vue : 无法加载文件 C:\Users\jianfei\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。...
  • godot引擎c++源码深度解析系列二
  • 专才or 通才
  • 【小白必看】Python爬虫实战之批量下载女神图片并保存到本地
  • 道本科技||全面建立国有企业合规管理体系
  • CentOS 8上安装和配置Redis
  • 西北乱跑娃 -- CSS动态旋转果冻效果
  • 解决安装office出现1402错误和注册表编辑器无法设置安全性错误
  • Jmeter接口自动化生成测试报告html格式
  • 移动IP的原理
  • uView 在 uni-app 中的使用
  • netcat和netstat使用
  • mybatisPlus高级篇
  • Rust之包、单元包及模块
  • 内存函数讲解
  • C语言假期作业 DAY 01
  • 2023牛客暑期多校-J-Qu‘est-ce Que C‘est?(DP)
  • 【141. 环形链表】
  • ORB特征笔记
  • 12.Netty源码之整体架构脉络
  • 【ArcGIS Pro二次开发】(54):三调名称转用地用海名称
  • 3D Tiles官方示例资源下载链接
  • 【Java】分支结构习题
  • 删除主表 子表外键没有索引的性能优化
  • 面向切面编程AOP