看错题-线段树 题目描述 给定一颗线段树,每次区间加一个x,如果每次在线段树区间加操作做完后,依次选一个叶子节点进入,然后一直走到根节点,问最后得到的期望值是多少。 小Y同学为了让题目更简单,对于n个整数,n是一个2^x2x的整数,来保证这个线段树是一棵满二叉树。 他现在想问你,每次给一段区间加上一个整数(每次操作对后续有影响),然后依次在线段树中选一个叶子节点,一直走到根节点,将一路经过的节点权值累加,问 2022-03-27 算法 题解 线段树
“Z”型矩阵 题意: 对于一个只包含 . 和 z 的矩阵,当以下条件满足时: 该矩阵的行数列数相等。 该矩阵的第一行与最后一行的字符全是 z。 该矩阵从右上角到左下角的对角线上的字符全是 z。 我们称其为 Z 矩阵。 现在给定一个 n×mn×m 的矩阵,请你计算它有多少个子矩阵是 Z 矩阵。 输入格式 第一行两个整数 nn , mm 分别表示矩阵的行数和列数 (1≤n,m≤3×10 2022-03-24 算法 题解 树状数组 离线 代码源
求质因子模板 复杂度大概O(nlnn)吧 123456789const int N=1e6+10;for(int i=2; i<N; i++) { if(tt[i].size())continue; for(int j=i; j<N; j+=i) { int t=j,cnt=0; while(t%i==0)t/=i,cnt++; tt[j].push_back( 2022-03-23 算法 模板 质因子
组合数模板 复杂度O(n) 1234567891011121314151617181920const int N=2e6;int Pow(int a,int b) { int c=1; while(b) { if(b&1)c=(1ll*c*a)%mod; a=1ll*a*a%mod; b>>=1; } return c;}int C(int 2022-03-23 算法 模板 组合数
字符串处理技巧 字符串处理常用技巧 1、find()以及其他查找函数 find() int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置 int find(const char s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置 int find(const char s, int pos, int 2022-03-22 算法 笔记 算法 笔记
树状数组 区间信息维护查询 一、二叉索引树(树状数组)(Binary Indexed Tree,BIT) BIT支持两种操作 1.update(x):修改单点值 2.query(L,R):查询(L,R)区间和 实现方式: 首先我们介绍一下lowbit(x) lowbit(x)表示x的二进制表达式中最右边的1所对应的值 程序实现为lowbit(x)={return x&(-x)} 2022-03-22 算法 笔记 树状数组 区间操作