前缀 区间
题解 P9963【[THUPC 2024 初赛] 前缀和】
注意到,\(x_i\) 取 \(k\) 的概率是 \(p(1-p)^{k-1}\),是和为 \(1\) 的等比数列,下面考察数列前缀和的性质。 不难想到,概率每次乘以 \(1-p\) 像是概率的分步乘法,每一步正是加一的操作。于是可以得到如下转化:初始时 \(S=0\),每一时刻 \(S\) 先增加 ......
题解 P9963【[THUPC 2024 初赛] 前缀和】
注意到,\(x_i\) 取 \(k\) 的概率是 \(p(1-p)^{k-1}\),是和为 \(1\) 的等比数列,下面考察数列前缀和的性质。 不难想到,概率每次乘以 \(1-p\) 像是概率的分步乘法,每一步正是加一的操作。于是可以得到如下转化:初始时 \(S=0\),每一时刻 \(S\) 先增加 ......
线段树与历史最值和区间最值问题
线段树与历史最值问题 P4314 CPU 监控 Description 给定数组 \(\{a_i\}\),维护以下操作。定义一个辅助数组 \(\{b_i\}\),每次操作完后令 \(b_i=\max(a_i,b_i)\)。 查询 \(\max_{i=l}^{r} a_i\)(区间最值) 查询 \(\ ......
字符串篇(leetcode—最长公共前缀)
字符串 百度百科:字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。 常用函数 比较函数 C++、Python等支持运算符重载的语言——可以使用 == 来比较两个字符串 JAVA等不支持运算符重载——可 ......
区间区间并
区间区间并 对于区间区间并这类问题,可以枚举某个段看是否被统计 但存在类问题不好统计 我们考虑转化为求和形式: 即** 在范围内包含这个段的区间个数-相邻两个都在范围内且包含这个区间的个数** ,这样可以用类似扫描线、差分的方式来统计 几道类似题: 差分+双指针维护 扫描线+树状数组 ......
莫比乌斯函数平方前缀和
考虑求\(\sum_{i=1}^n\mu(i)^2\) 结论是\(\mu(i)^2=\sum_{j^2|i}\mu(j)\) 考虑证明这个式子。 先证明若\(\mu(i)\neq 0\)此时\(\mu(i)^2=1\) 显然只有\(j=1\)在右式造成贡献\(1\)等式成立。 若存在\(j\neq ......
枚举子集&高维前缀和学习笔记
枚举子集 首先 \(n\) 位二进制数可以表示一个大小为 \(n\) 的集合的所有子集。接下来的问题均用二进制数展开。 一种暴力的想法是枚举所有数然后判一下是否满足条件,单次时间复杂度 \(O(2^n)\),对所有数做一遍就是 \(O(4^n)\)。 发现有很多枚举是无用的,考虑怎么样让每次枚举出来 ......
前缀和,差分,二叉堆
目录前缀和一维数组前缀和二维数组前缀和差分二叉堆 前缀和 一维数组前缀和 代码如下: for(int i=0;i<n;i++){ if(i==0) y[i]=x[i]; else y[i]=y[i-1]+x[i]; } 或者 for(int i=1;i<=n;i++){ y[i]=y[i-1]+x[ ......
闭区间上连续函数的基本定理
![](https://img2023.cnblogs.com/blog/2702872/202312/2702872-20231216221223782-1965230898.jpg) ![](https://img2023.cnblogs.com/blog/2702872/202312/2702... ......
56. 合并区间
1.题目介绍 以数组 \(intervals\) 表示若干个区间的集合,其中单个区间为 \(intervals[i] = [starti, endi]\) 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals = [[1, ......
区间素数筛模板
例题素数密度 template<typename T> struct segment_sieve { vector<bool> is_prime, is_prime_small; vector<T> prime; segment_sieve() { is_prime.resize(1000010); ......
R语言 Lasso系数置信区间计算
真是神了奇了,还能被审稿人问到Lasso系数的置信区间的信息,还好有现成的工具可以计算 # load library library(selectiveInference) library(xlsx)library(glmnet) # load datasetwd("E:\\UAI_Program\ ......
刷题 ST表、单调栈、线段树->区间最值
2023.12.13 cf1904D2 解题思路 首先,a[i]大于b[i]时肯定不行,等于就满足了,直接过掉 其次,要想使得a[i]等于b[i],就要在a[i]左右找最近的j使得a[j]=b[i](最近的最优,可证) k是i和j中间的一个数,想要满足题意,要满足以下两个条件(a[j]=b[i]) ......
ST表 RMQ(区间最大/最小值查询)问题
主要应用倍增思想预处理:O(nlogn) 查询:O(1)f[i][j]是以i为起点,长度为2j的区间中的最大值(一个点一个单位长度,不是一条线段)区间终点:i+2j-1<=n区间长度的指数k=log2(r-l+1),只有当r-l+1为2n-1时是恰好分割,其他时候有重叠,但问题不大 代码 #incl ......
【线段树入门】P3353 在你窗外闪耀的星星(区间求和)
这题正解是前缀和,我用线段树练练手>< 1 1 //笔记-自用 2 2 //#pragma GCC optimize("Ofast") 3 3 //#pragma GCC optimize("unroll-loops") 4 4 #define _CRT_SECURE_NO_WARNINGS 5 5 ......
【线段树入门】 P1198 最大数(区间最大值+无懒标记+末尾插入)
1 //笔记-自用 2 //#pragma GCC optimize("Ofast") 3 //#pragma GCC optimize("unroll-loops") 4 #define _CRT_SECURE_NO_WARNINGS 5 #define All(a) a.begin(),a.en ......
线段树入门】P3870 开关(区间异或和)
1 // 2 //#pragma GCC optimize("Ofast") 3 //#pragma GCC optimize("unroll-loops") 4 #define _CRT_SECURE_NO_WARNINGS 5 #define All(a) a.begin(),a.end() 6 ......
【线段树入门】P3373 线段树 2(区间乘加)
//笔记-自用 //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") #define _CRT_SECURE_NO_WARNINGS #define All(a) a.begin(),a.end() #defin ......
【算法】【线性表】最长公共前缀
1 题目 给k个字符串,求出他们的最长公共前缀(LCP) 样例 1: 输入: k个字符串 = ["ABCD", "ABEF", "ACEF"] 输出: "A" 解释:公共最长前缀是"A". 样例 2: 输入: k个字符串 = ["ABCDEFG", "ABCEFG", "ABCEFA"] 输出: " ......
排序合并区间
题目 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals = [[1,3],[2,6 ......
第 375 场周赛(滑动窗口,区间合并)
使用差分的思想进行解决 class Solution: def countTestedDevices(self, batteryPercentages: List[int]) -> int: diff = 0 for x in batteryPercentages: if x > diff: dif ......
线段树模板区间加(含懒标记)
const int N = 1e5 + 10; int n, m; int a[N]; struct Tree{ int l,r; ll sum,add; }tr[4*N]; void build(int u,int l,int r){ // l=tr[u].l;r=tr[u].r; //注释掉的部 ......
2023南海区区赛模拟(初中组)T3删除区间
第3题 删除区间 查看测评数据信息 开始给你N个元素的数组(下标从1开始),数组里的数是1,2,3,…,N,然后执行D次删除操作。每次删除操作给一个区间[lo, hi],要求删除下标位置从lo到hi的数,数组里的数据个数会减少hi-lo+1个。 例如,N=8,第1次删除操作区间是[3 4],结果为” ......
AcWing 802. 区间和
题面: 假定有一个无限长的数轴,数轴上每个坐标上的数都是 \(0\) 。 现在,我们首先进行 \(n\) 次操作,每次操作将某一位置 \(x\) 上的数加 \(c\) 。 接下来,进行 \(m\) 次询问,每个询问包含两个整数 \(l\) 和 \(r\) ,求出在区间 \([l,r]\) 之间的所有 ......
高维前缀和
对于求高维前缀和,我的理解是在维度数乘总点数的复杂度下求前缀和。 首先可以先看看二维前缀和。 如果使用容斥的方法,像这样: for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ f[i][j]=a[i][j]+f[i-1][j]+f[i][j-1]-f[i-1] ......
刷题 字典树 LCP(最长公共前缀)
2023.12.5 cf 1902E 字典树的功能 根据字典树的概念,我们可以发现:字典树的本质是把很多字符串拆成单个字符的形式,以树的方式存储起来。所以我们说字典树维护的是”字典“。那么根据这个最基本的性质,我们可以由此延伸出字典树的很多妙用。简单总结起来大体如下: 1、维护字符串集合(即字典)。 ......
2023年广东工业大学腾讯杯新生程序设计竞赛不知道叫什么名字(前缀和)
需要的是男生女生数量相同,做个转化,女生变成-1,然后求一遍前缀和,我们希望找到最长的满足\(sum(l, r)=0\)的区间也就是\(sum(r) - s(l - 1) = 0\) 考虑枚举右端点,找到最左端和它相等的sum就是对于当前右端点的最长的。 最开始想了个二分答案的假做法,011100, ......
前缀和/差分——acwing算法基础课笔记
个人笔记,欢迎补充,指正。 一维前缀和 对于数组: a[1],a[2],a[3]...a[n]; 其前缀和数组为 s[i] = a[1] + a[2] + ... + a[i]; 下标必须从1开始 求前缀和 1 for(int i=1;i<n;++i) 2 s[i] = s[i-1] + a[i]; ......
P8111 [Cnoi2021] 区间
[Cnoi2021] 区间 题目背景 Cirno 有一个区间 \([a,b](1\le a \le b \le n)\),而你的任务是在规定的次数内帮 Rumia 猜出这个区间。 每次,你可向Cirno询问一个数字 \(k\),而 Cirno 会告诉你这个数字与区间 \([a,b]\) 的关系。 题 ......