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

asp网站源码安装教程百度联系电话

asp网站源码安装教程,百度联系电话,个人资料库网站怎么做,郑州做网站服务器本题链接:【模板】树状数组 2 - 洛谷 题目: 输入 5 5 1 5 4 2 3 1 2 4 2 2 3 1 1 5 -1 1 3 5 7 2 4 输出 6 10 思路: 根据题意,这里是需要区间添加值,单点查询值。如果区间添加值中暴力去一个个加值,肯定…

本题链接:【模板】树状数组 2 - 洛谷

题目:

输入
5 5
1 5 4 2 3
1 2 4 2
2 3
1 1 5 -1
1 3 5 7
2 4
输出
6
10

思路:

        根据题意,这里是需要区间添加值,单点查询值。如果区间添加值中暴力去一个个加值,肯定会TLE,所以我们这里运用到了模板树状数组的重要作用了。

        根据 差分 的性质,我们知道,区间加值,我们可以构造一个前缀和数组来表示当前原数组的元素值,对此,进行区间的修改,有效的避免O(n)的时间复杂度。

所以我们可以结合,树状数组的前缀和 + 差分 性质,达到区间修改,单点查询的效果。

下面给出操作函数:

区间修改
// 单点添加元素
inline void Add_pos(int pos,int x)
{for(int i = pos;i <= n + 1;i+=lowbit(i)) arr[i] += x;
}// 区间添加元素
inline void Add_section(int L,int R,int x)
{// 利用差分数组的原理,// 差分树状数组,// 达到区间修改值的效果Add_pos(L,x);Add_pos(R+1,-x);	
}

单点查询
// 差分前缀和 单点查询
inline int Ask_pos(int pos)
{// 利用 差分 性质// 差分的前缀和,就是当前的元素值// 所以树状数组求前缀和,返回当前下标的元素值int ans = 0;for(int i = pos;i;i-=lowbit(i)) ans += arr[i];return ans;
}

代码详解如下:

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#define endl '\n'
#define int long long
#define YES puts("YES")
#define NO puts("NO")
#define lowbit(x) (x&(-x))
#define umap unordered_map
#define All(x) x.begin(),x.end()
//#pragma GCC optimize(3,"Ofast","inline")
#define IOS std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 7e7 + 10;int n,m;
int arr[N];	// 构造 差分树状数组
int a[N];	// 记录原数组初始值// 单点添加元素
inline void Add_pos(int pos,int x)
{for(int i = pos;i <= n + 1;i+=lowbit(i)) arr[i] += x;
}// 区间添加元素
inline void Add_section(int L,int R,int x)
{// 利用差分数组的原理,// 差分树状数组,// 达到区间修改值的效果Add_pos(L,x);Add_pos(R+1,-x);	
}// 差分前缀和 单点查询
inline int Ask_pos(int pos)
{// 利用 差分 性质// 差分的前缀和,就是当前的元素值// 所以树状数组求前缀和,返回当前下标的元素值int ans = 0;for(int i = pos;i;i-=lowbit(i)) ans += arr[i];return ans;
}inline void solve()
{cin >> n >> m;for(int i = 1;i <= n;++i){cin >> a[i];Add_pos(i,a[i] - a[i - 1]);	// 单点添加 初始值 的 差分元素}while(m--){int op;cin >> op;if(op == 1){int L,R,x;cin >> L >> R >> x;Add_section(L,R,x);	// 区间添加值	}else{int pos;cin >> pos;	// 差分前缀和单点查询cout << Ask_pos(pos) << endl;}}
}signed main()
{
//	freopen("a.txt", "r", stdin);
//	IOS;int _t = 1;
//	cin >> _t;while (_t--){solve();}return 0;
}

最后提交:

http://www.hrbkazy.com/news/40050.html

相关文章:

  • wordpress不显示目录文章玉林网站seo
  • 100g网站空间seo培训优化
  • 怎么做本地网站获客渠道找精准客户
  • 重庆网站公司设计关键词优化排名软件怎么样
  • wordpress阅读随机增加台州seo公司
  • 深圳微商城网站设计电话企业网站优化哪家好
  • 网站环境配置网络推广员工作内容
  • 做名片去哪个网站怎么建立网站的步骤
  • 西安网站设计哪家好公司推广咨询
  • 学做衣服的网站有哪些sem运营
  • PHP网站建设视频免费新闻营销发稿平台
  • wordpress 优惠插件seo推广排名
  • 广州金山大厦 网站建设安徽疫情最新情况
  • 做网站地图友情链接的形式有哪些
  • 办公管理系统有哪些芜湖seo
  • 商丘做网站的价格网站怎么做优化排名
  • 汽车销售服务东莞网站建设网络推广经验
  • 成都网站建设众成联邦南京网站设计公司
  • 网站设计风格分类郑州做网站公司有哪些
  • 上海网站建设平台免费的网络推广渠道
  • 网站建设的商业阶段建站seo是什么
  • 做网站数据对电脑要求百度收录查询代码
  • 自己做网站主机seo网站推广招聘
  • 新闻网站做服务2023年8月新冠又来了
  • 做网站让用seo刷新是哪个键网站推广计划方案
  • 做gif动图的素材网站建设一个网站的具体步骤
  • 北京公司网站建设报价雷神代刷网站推广
  • 网站投放广告投放方案
  • 百度全静态生成技术seo外包是什么意思
  • 买的服务器怎么做网站想做一个网站