传送门
ODT水题。
支持区间01赋值,区间填补(把区间 [ l , r ] [l,r] [l,r]从左往右数 k k k个1都变成0),区间查询最长连续1个数。
思路:
区间填补操作感觉不是很好弄,写线段树的神仙可以套一个二分来写。
而对于写 o d t odt odt的朋友们来说就很 e a s y easy easy了,直接从左往右遍历到第 k k k个1所在区间覆盖一波即可(详见代码)。
不会 O D T ODT ODT的点这里
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+