当前位置: 首页 > wzjs >正文

一个jsp做的购物小网站wordpress模板站如何安装

一个jsp做的购物小网站,wordpress模板站如何安装,福田做商城网站建设多少钱,哎呀哎呀视频在线观看【题目链接】 洛谷 P3374 【模板】树状数组 1 【题目考点】 一. 树状数组 树状数组是在线算法,可以维护区间和,区间最值。其实现单点修改、区间修改、区间查询时间复杂度都为 O ( log ⁡ n ) O(\log n) O(logn) 1. lowbit函数 int lowbit(int x) {…

【题目链接】

洛谷 P3374 【模板】树状数组 1

【题目考点】

一. 树状数组

树状数组是在线算法,可以维护区间和,区间最值。其实现单点修改、区间修改、区间查询时间复杂度都为 O ( log ⁡ n ) O(\log n) O(logn)

1. lowbit函数
int lowbit(int x)
{return x & -x;
}

lowbit(x)为x在二进制下最低位的位权,为x在二进制下最低位的1和后面的0组成的数的数值。
例:十进制数 12 12 12在二进制下为 ( 1100 ) 2 (1100)_2 (1100)2,那么lowbit(12) ( 100 ) 2 (100)_2 (100)2,即十进制下的4。

2. 树状数组的定义

设原序列为 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1,a2,...,an a i a_i ai表示序列的第i个数,共有n个数。
树状数组为 t t t t i = ∑ j = i − l o w b i t ( i ) + 1 x a j t_i = \sum\limits_{j=i-lowbit(i)+1}^xa_j ti=j=ilowbit(i)+1xaj,即 t i t_i ti a a a序列区间 [ i − l o w b i t ( i ) + 1 , i ] [i-lowbit(i)+1, i] [ilowbit(i)+1,i]的区间和,或者说以 a i a_i ai为结尾的长为 l o w b i t ( i ) lowbit(i) lowbit(i)的区间的区间和。
在这里插入图片描述
树状数组满足如下性质:

  1. 每个内部结点 t i t_i ti保存以它为根的子树中所有叶子结点的和。
  2. 每个内部结点 t i t_i ti的子结点个数等于lowbit(i)的位数。
  3. 每个内部结点 t i t_i ti的父结点是 t i + l o w b i t ( i ) t_{i+lowbit(i)} ti+lowbit(i)
  4. 树状数组下标不能从0开始,必须从1开始。
  5. 树的深度为 O ( l o g n ) O(logn) O(logn)

【题目考点】

解法1:树状数组

使用树状数组维护区间和,进行单点修改和区间查询

1. 单点修改

设update函数完成对元素 a i a_i ai的修改,假设 a i a_i ai的值增加 v v v(v可以是负数),那么在树状数组表示的树中,所有 a i a_i ai的祖先结点都表示包含 a i a_i ai的一段区间的区间和,因此这些祖先结点的值都要增加 v v v
设循环控制变量x初值为i。每次循环将x增加lowbit(x),使x变为其父结点,直到x大于n时结束循环。循环体内,树状数组x位置的值 t x t_x tx增加 v v v

2. 区间查询

a a a序列区间 [ 1 , i ] [1, i] [1,i]中元素加和为 s i s_i si
设sum函数,调用sum(i)可以求出 s i s_i si
a a a序列区间 [ 1 , i ] [1, i] [1,i]中元素加和为 a a a序列 [ 1 , i − l o w b i t ( i ) ] [1,i-lowbit(i)] [1,ilowbit(i)]中元素的加和再加上 [ i − l o w b i t ( i ) + 1 , i ] [i-lowbit(i)+1, i] [ilowbit(i)+1,i]中元素的加和,即 t i t_i ti
因此 s i = s i − l o w b i t ( i ) + t i s_i = s_{i-lowbit(i)}+t_{i} si=silowbit(i)+ti
不断使用该递推式,可以将 s i s_i si分成多个 t t t中的元素相加。
设求和变量s初值为0。循环控制变量x初值为i,每次循环x减少lowbit(x)。循环体内让s增加 t x t_x tx。最后s的值即为 s i s_i si

求a序列区间 [ l , r ] [l,r] [l,r]中元素的加和,即可用a序列前r项的和减去前l-1项的和求出,即 s r − s l − 1 s_r-s_{l-1} srsl1

使用树状数组维护区间和,每次单点修改的时间复杂度为 O ( log ⁡ n ) O(\log n) O(logn),区间查询的复杂度为 O ( log ⁡ n ) O(\log n) O(logn)

【题解代码】

#include <bits/stdc++.h>
using namespace std; 
#define N 500005
int n, tree[N];//原数组为a,a[i]是输入的第i个数 tree:树状数组 维护区间和 
int lowbit(int x)
{return x & -x;
}
void update(int i, int v)//a[i] += v 单点修改 
{for(int x = i; x <= n; x += lowbit(x))tree[x] += v; 
}
int sum(int i)//a[1]+...+a[i] 区间查询 
{int s = 0;for(int x = i; x > 0; x -= lowbit(x))s += tree[x];return s;
} 
int query(int l, int r)//求[l, r]的区间和 
{return sum(r)-sum(l-1);
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int m, x, y, k, v, op;cin >> n >> m;for(int i = 1; i <= n; ++i){cin >> v;update(i, v);}while(m--){cin >> op;if(op == 1){cin >> x >> k;update(x, k);}else{cin >> x >> y;cout << query(x, y) << '\n';}}return 0;
} 
http://www.dtcms.com/wzjs/820908.html

相关文章:

  • 湘潭做网站价格 q磐石网络网站建设中首页模板下载
  • 泉州专业网站制作公司如何做好网站建设和宣传
  • wordpress静态化插件汕头自动seo
  • 秦皇岛建设网站公司珠海网站艰涩和
  • 做网站编辑好还是新媒体编辑濮阳做网站多少钱
  • 如何规范网站使用专门做面条菜谱的网站
  • 金坛做网站怎么用iapp做网站软件
  • 做资讯网站需要哪些资质网站运营部门职责
  • 网站建设图片素材库物流网个人网站建设
  • 网站开发的公司电话域名注册 阿里云查询
  • 传统文化网站建设wordpress responsive theme
  • 招商加盟的网站应该怎么做合肥建站费用
  • 最新远程网站建设服务器山东做网站建设公司排名
  • 建站合同模板企业网页设计尺寸
  • 深圳网站建设黄浦网络-骗子东营伟浩建设集团网站
  • 网站建设目标及需求河北省建设工程管理信息网官网
  • 网站要能被搜到需要做推广嘛wordpress高仿主题
  • 做论文查重网站代理能赚到钱吗长春市网站推广
  • 门户网站开发视频wordpress博客分享
  • 网站建设crm个人网站我的大学我做主页面
  • 上海响应式网站建设企业修改wordpress设置方法
  • 免费情感网站哪个好湖南智能网站建设费用
  • 郑州好的网站建设公司排名免费网站推广大
  • 天猫建设网站的理由重庆大渡口网站建设
  • 深圳 微网站机械设计师网课
  • 网站的承诺五大免费资源网站
  • asp源码下载网站做地方网站能赚钱吗
  • 网络优化网站 site门户网站开发的意义
  • 资源下载网站源码wordpress数据库合并
  • 集团网站建设思路软文新闻发稿平台