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

CF Edu152 C

Problem - C - Codeforces

题意:

思路:

首先,观察样例可知

这种是等效的

推广一下

0000.....111111

..l..............r......

这种是等效的

容易想到维护后面第一个1的位置和前面第一个0的位置,然后把所有区间都等效一下,开一个二元组的set

但是有点问题,考虑一些特殊case

0001111

这样的,很明显等效之后左端点在右端点后面

1

这种的也是

这些特殊case有什么共同点呢?这些区间一个区间sort之后对应一种情况

因此直接插入 {-1, -1}即可

111100000

那么这种呢?等效前和等效后的区间是一样的,直接插入即可

Code:

#include <bits/stdc++.h>#define int long longusing i64 = long long;constexpr int N = 2e5 + 10;
constexpr int M = 2e5 + 10;
constexpr int P = 2600;
constexpr i64 Inf = 1e18;
constexpr int mod = 1e9 + 7;
constexpr double eps = 1e-6;std::string s;int n, m;
int a[N];
int pre0[N];//前面第一个0的位置
int suf1[N];//后面第一个1的位置void solve() {std::cin >> n >> m >> s;s = " " + s;for (int i = 1; i <= n; i ++) {a[i] = s[i] - '0';}pre0[0] = 0;suf1[n + 1] = n + 1;for (int i = 1; i <= n; i ++) {if (a[i] == 0) pre0[i] = i;else pre0[i] = pre0[i - 1];}for (int i = n; i >= 1; i --) {if (a[i] == 1) suf1[i] = i;else suf1[i] = suf1[i + 1];}std::set<std::pair<int,int> > S;for (int i = 1; i <= m; i ++) {int l, r;std::cin >> l >> r;int tl = suf1[l];int tr = pre0[r];if (tl > tr) S.insert({-1, -1});else S.insert({tl, tr});}std::cout << S.size() << "\n";
}
signed main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t = 1;std::cin >> t;while (t--) {solve();}return 0;
}

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

相关文章:

  • iBooker 技术评论 20230902
  • 视频动态壁纸 Dynamic Wallpaper for Mac中文
  • Java“牵手”京东商品列表数据,关键词搜索京东商品数据接口,京东API申请指南
  • springboot实战(三)之多环境部署配置文件生效方式
  • java透传参数至logback,自定义日志文件名。过期日志文件自动删除
  • HFSS 3维曲线导入
  • 【消息中心】kafka消费失败重试10次的问题
  • 无涯教程-Python机器学习 - Semi-supervised Learning函数
  • 7 | 计算每个键对应的平均值,并按降序排序
  • kafka详解二
  • SAP_ABAP_接口技术_RFC远程函数实践总结
  • 计算机 --> 磁盘 --> 分区
  • 3D视觉测量:形位公差 平面度测量(附源码)
  • vmware虚拟机远程开发
  • Web安全——穷举爆破上篇(仅供学习)
  • POJ 3045 Cow Acrobats 二分+优先队列
  • 手写实现call() apply() bind()函数,附有详细注释,包含this指向、arguments讲解
  • MySQL中日期、时间直接相减的坑
  • 漏洞发现-web应用发现探针类型利用(43)
  • 专门针对开发人员,攻击者利用Rust获取操作系统信息
  • PHP8的箭头函数-PHP8知识详解
  • 初识PHP编程:探索Web开发的起点
  • Git——Windows平台创建gitee私有仓库详解
  • Git基础教程-常用命令整理:学会Git使用方法和错误解决
  • Ops实践 | 国产化KylinOS系统中快速部署企业内部高性能DNS服务器、时间同步服务器 (精选)...
  • stm32之IIC协议
  • 范式 事务 多表查询
  • 基于白鲸算法优化的BP神经网络(预测应用) - 附代码
  • java并发编程 ReentrantLock详解
  • Java获取文件内容IO流