【setDS】牛客小白月赛83 E

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

题意

思路

首先,一个必要步骤是把它转化为两个序列,这样就变成了一个序列DS问题

我们的答案是一个位置 pos 后面还有多少位置和这个位置的颜色相同,考虑得到这个答案我们需要维护什么东西

我们只需要维护颜色之间的边界的位置即可

用 set 维护位置,剩下就是常规的增删改查了

#include <bits/stdc++.h>#define int long longconstexpr int N = 5e2 + 10;
constexpr int M = 1e4 + 10;
constexpr int mod = 998244353;
constexpr int Inf = 0x3f3f3f3f;std::set<int> sa, sb;int n, m;int a(int i, int j) {if (i & 1) {return (i - 1) * m + j;}else {return i * m - (j - 1);}
}
int b(int i, int j) {if (j & 1) {return (j - 1) * n + i;}else {return j * n - (i - 1);}
}
void upd(std::set<int> &S, std::vector<char> &V, int i, char x) {S.erase(i);S.erase(i + 1);V[i] = x;if (V[i] != V[i - 1]) {S.insert(i);}if (V[i] != V[i + 1]) {S.insert(i + 1);}
}
void solve() {std::cin >> n >> m;std::vector<char> va(n * m + 2), vb(n * m + 2);for (int i = 1; i <= n; i ++) {for (int j = 1; j <= m; j ++) {char x;std::cin >> x;upd(sa, va, a(i, j), x);upd(sb, vb, b(i, j), x);}}int q;std::cin >> q;while(q --) {int op, x, y;char c;std::cin >> op;if (op == 1) {std::cin >> x >> y >> c;upd(sa, va, a(x, y), c);upd(sb, vb, b(x, y), c);}else if (op == 2) {std::cin >> x >> y;std::cout << (*sa.upper_bound(a(x, y))) - a(x, y) << "\n";}else {std::cin >> x >> y;std::cout << (*sb.upper_bound(b(x, y))) - b(x, y) << "\n";}}
}
signed main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t = 1;while(t --) {solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/278337.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB 与 Python 的交互

文章目录 第1关&#xff1a;MongoDB 与 Python 的交互 第1关&#xff1a;MongoDB 与 Python 的交互 编程要求 根据提示&#xff0c;在右侧编辑器 Begin-End 处补充代码&#xff0c;完成右侧程序。 测试说明 点击评测&#xff0c;平台会对你编写的代码进行测试。 import pymo…

AI日报:OpenAI向新用户重新开放ChatGPT Plus订阅

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 总览Chatgptplus重新开放订阅#暂停原因功能 OpenAI的1000万美元安全人工智能拨款拨款初衷学术捐赠 总览 ChatGPT Plus再次向新用户开放&#xff0c;但目前每三小时限制发送40条消息。 OpenAI还宣布拨款1000万美元…

【Hive】——DDL(TABLE)

1 查询指定表的元数据信息 如果指定了EXTENDED关键字&#xff0c;则它将以Thrift序列化形式显示表的所有元数据。 如果指定了FORMATTED关键字&#xff0c;则它将以表格格式显示元数据。 describe formatted student&#xff1b;2 删除表 如果已配置垃圾桶且未指定PURGE&…

ToolLLM model 以及LangChain AutoGPT Xagent在调用外部工具Tools的表现对比浅析

文章主要谈及主流ToolLLM 以及高口碑Agent 在调用Tools上的一些对比&#xff0c;框架先上&#xff0c;内容会不断丰富与更新。 第一部分&#xff0c;ToolLLM model 先来说主打Function Call 的大模型们 OpenAI GPT 宇宙第一LLM&#xff0c;它的functionCall都知道&#xff0…

恒创:更换服务器,网站备案会掉吗

随着互联网的普及&#xff0c;越来越多的企业和个人选择通过网站来展示自己的形象和业务。然而&#xff0c;在网站建设和运营过程中&#xff0c;更换服务器是一个常见的问题。那么&#xff0c;更换服务器后&#xff0c;网站备案是否会受到影响呢&#xff1f; 网站备案是为了保…

前端开发中的单元测试(unit testing)和端到端测试(end-to-end testing)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

重温经典struts1之文件上传

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 今天来学习下&#xff0c;每个项目都会有的文件上传功能&#xff0c;看看struts是怎么实现的。 步骤 编写三个jsp页面&#xff0c;一个是跳转到文件上传页面&#xff…

2023.12.15 FineBI与kettle

1.结构化就是可以用schema描述的数据,就是结构化数据,能转为二维表格, 如CSV,Excel, 2.半结构化就是部分可以转换为二维表格,如JSON,XML 3.非结构化数据,就是完全无法用二维表格表示的数据,如Word文档,Mp4,图片,等文件. kettle的流程 新建转换-构建流图-配置组件-保存运行 使…

如何用 Cargo 管理 Rust 工程系列 乙

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/__nvVZYti-G05QJHIp_f8Q 编译程序 这次我们用 cargo 来启动编译&#xff0c;cargo 提供了 build 指令来调度工具构建并输出软件。cargo build 只…

HTTP 414错误:请求URI过长,如何避免

在Web开发中&#xff0c;HTTP状态码是用于表示Web服务器响应的各种状态。其中&#xff0c;HTTP 414错误表示请求URI过长&#xff0c;这意味着客户端发送的请求URL超过了服务器所能处理的长度限制。 当请求的URI过长时&#xff0c;服务器可能无法正确处理请求&#xff0c;从而导…

一些好用的VSCode扩展

可以在扩展这里直接搜索需要的扩展&#xff0c;点击安装即可。 1.Chinese 中文扩展&#xff0c;就是说虽然咱们懂点英语&#xff0c;但还是中文看着方便 2.Auto Rename Tag 当你重命名一个HTML 标签时&#xff0c;会自动重命名与他配对的HTML 标签 当你选择h4这个标签时&…

ControlNet Adding Conditional Control to Text-to-Image Diffusion Models

ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models TL; DR&#xff1a;ControlNet 使得我们能通过输入额外的条件图&#xff08;如 Canny 边缘、人体姿态、深度图等&#xff09;&#xff0c;对 SD 生成结果的空间位置有更准确的控制。它拷贝 SD 部分…