2022年11月27日
摘要: 定义合法序列: 含有的元素各不相同 查询[l,r] 有多少合法序列 处理出stt[i] 表示以i结尾的合法序列的起点 stt[i] =stt[i-1],last[ a[i] ]+1 stt [ ]单调增,可以找到一个点x 满足stt[i]<L (I<x) ,stt[j]>=L(j>x) 二分查找即可 阅读全文
posted @ 2022-11-27 22:24 towboat 阅读(79) 评论(0) 推荐(0)
摘要: 01序列 操作 1. [l,r] 翻转 2.求位置 x 的值 维护区间的反转次数即可 区间修改 采用差分,求前缀和得到单点的值 #include <bits/stdc++.h> using namespace std ; const int N=5e5+2; int c[N],a[N],n; int 阅读全文
posted @ 2022-11-27 10:48 towboat 阅读(30) 评论(0) 推荐(0)
摘要: 在区间上种树 1. 区间 [l,r] 全部设为一种树木(每次都种新的品种) 2. 问 [l,r] 内有多少种树木 且操作不会出现覆盖的情况 把区间当作括号 () [ ] , 询问时答案为 r 左边 ( 的个数 - l左边 ) 的个数 ,求前缀和,以及更新 #include <iostream> #i 阅读全文
posted @ 2022-11-27 10:15 towboat 阅读(24) 评论(0) 推荐(0)
摘要: 给定 n 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,(输入按照y值递增给出) 统计每个等级有多少个点 输入按照y值递增给出,y坐标是没有用的(脑补 直接求前缀和,然后更新 注意x,y坐标从0开始,所以处理一下 +1 #include <iostream> #include <c 阅读全文
posted @ 2022-11-27 09:43 towboat 阅读(61) 评论(0) 推荐(0)