LOJ 数列分块入门 8
2024-09-08 18:10:08
\(\text{Solution}\)
一看有区间赋值直接上 \(ODT\)
\(\text{Code}\)
#include <cstdio>
#include <iostream>
#include <set>
#define re register
using namespace std;
int n;
struct node{
int l, r; mutable int v;
inline node(int l, int r, int v):l(l), r(r), v(v){};
inline bool operator < (const node &a) const {return l < a.l;}
};
set<node> T;
typedef set<node>::iterator IT;
inline IT split(int x)
{
if (x > n) return T.end();
IT it = --T.upper_bound((node){x, 0, 0});
if (it->l == x) return it;
int l = it->l, r = it->r, v = it->v;
T.erase(it), T.insert((node){l, x - 1, v});
return T.insert((node){x, r, v}).first;
}
inline void assign(int l, int r, int v)
{
IT itr = split(r + 1), itl = split(l);
T.erase(itl, itr), T.insert(node{l, r, v});
}
inline int Query(int l, int r, int v)
{
IT itr = split(r + 1), itl = split(l); int res = 0;
for(re IT it = itl; it != itr; ++it)
if (it->v == v) res += it->r - it->l + 1;
return res;
}
inline void read(int &x)
{
x = 0; char ch = getchar(); int f = 1;
for(; !isdigit(ch); f = (ch == '-' ? -1 : f), ch = getchar());
for(; isdigit(ch); x = (x<<3) + (x<<1) + (ch^48), ch = getchar());
x *= f;
}
int main()
{
read(n);
for(re int i = 1, x; i <= n; i++) read(x), T.insert((node){i, i, x});
for(re int i = 1, l, r, v; i <= n; i++)
read(l), read(r), read(v), printf("%d\n", Query(l, r, v)), assign(l, r, v);
}
最新文章
- HTML5 oninput实时监听输入框值变化的完美方案
- debian/ubuntu安装桌面环境
- jquery 中的 offset()
- Asp.Net MVC4入门指南(5):从控制器访问数据模型
- bootstrap学习总结-01 环境准备
- Codeforces Beta Round #5
- 如何在安装32位Oracle客户端组件的情况下以64位模式运行
- android UI进阶之实现listview的下拉加载
- Mac OS X 软件推荐
- oracle insert &;字符插入问题
- Spring通过AOP实现对Redis的缓存同步
- ezw证件照芯片压缩算法
- 解决SQLServer 2008 日志无法收缩,收缩后大小不改变
- java面向对象--抽象类和接口
- ⑤bootstrap表格使用基础案例
- python 之 初识模块
- enex 转 md 格式的几种方式(免费版/氪金版)
- 电磁波、无线电、802、WLAN及WiFi的区别与联系
- CODEFORCES掉RATING记 #5
- 解决iOS第三方SDK之间重复的symbols问题
热门文章
- TornadoFx的TableView组件使用
- 【Shell案例】【awk map计数&;sort按指定列排序】9、统计每个单词出现的个数
- python文件名解析---从文件名获得分类类别
- HTTP协议图文简述--HTTP/HTTPS/HTTP2
- django.core.exceptions.ImproperlyConfigured: Application labels aren&#39;t unique, duplicates: rest_framework_swagger
- js将数组内属性值相同的项合并成二维数组
- 工业数据分析为什么要用FusionInsight MRS IoTDB?
- Less-1(GET字符型)
- [python] 基于matplotlib实现圆环图的绘制
- DVWA靶场实战(四)——File Inclusion