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

目前主流网站建设软件高端网站建设公司排名

目前主流网站建设软件,高端网站建设公司排名,哪个网站做娱乐,做淘宝图的素材搜索网站并查集、树状数组、线段树 并查集树状数组树状数组1 (单点修改,区间查询)树状数组2 (单点查询,区间修改) 并查集 【模板】并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作。 输入格式 第一行包含两个整数 …

并查集、树状数组、线段树

  • 并查集
  • 树状数组
    • 树状数组1 (单点修改,区间查询)
    • 树状数组2 (单点查询,区间修改)

并查集

【模板】并查集

题目描述

如题,现在有一个并查集,你需要完成合并和查询操作。

输入格式

第一行包含两个整数 N , M N,M N,M ,表示共有 N N N 个元素和 M M M 个操作。

接下来 M M M 行,每行包含三个整数 Z i , X i , Y i Z_i,X_i,Y_i Zi,Xi,Yi

Z i = 1 Z_i=1 Zi=1 时,将 X i X_i Xi Y i Y_i Yi 所在的集合合并。

Z i = 2 Z_i=2 Zi=2 时,输出 X i X_i Xi Y i Y_i Yi 是否在同一集合内,是的输出
Y ;否则输出 N

输出格式

对于每一个 Z i = 2 Z_i=2 Zi=2 的操作,都有一行输出,每行包含一个大写字母,为 Y 或者 N

样例输入 #1

4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4

样例输出 #1

N
Y
N
Y

提示

对于 30 % 30\% 30% 的数据, N ≤ 10 N \le 10 N10 M ≤ 20 M \le 20 M20

对于 70 % 70\% 70% 的数据, N ≤ 100 N \le 100 N100 M ≤ 1 0 3 M \le 10^3 M103

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 1 0 4 1\le N \le 10^4 1N104 1 ≤ M ≤ 2 × 1 0 5 1\le M \le 2\times 10^5 1M2×105 1 ≤ X i , Y i ≤ N 1 \le X_i, Y_i \le N 1Xi,YiN Z i ∈ { 1 , 2 } Z_i \in \{ 1, 2 \} Zi{1,2}

以下是模板代码

#include<bits/stdc++.h>
using namespace std;
#define MAXN 10005int fa[MAXN]; // 用于存储每个元素所属的集合的根节点// 查找操作,返回元素x所属集合的根节点
int find(int x) {if(x == fa[x]) return x; // 如果当前节点是根节点,直接返回return fa[x] = find(fa[x]); // 路径压缩,将x的父节点直接设为根节点,加快以后的查找
}// 合并操作,将两个集合合并
void join(int c1, int c2) {int f1 = find(c1); // 查找c1所属的集合的根节点int f2 = find(c2); // 查找c2所属的集合的根节点if(f1 != f2) // 如果根节点不同,表示c1和c2不在同一集合中fa[f1] = f2; // 将c1的根节点的父节点设为c2的根节点,即合并两个集合
}int main() {int n, m;cin >> n >> m; // 输入元素个数n和操作个数mfor(int i = 1; i <= n; i++) fa[i] = i; // 初始化,每个元素初始时都是一个单独的集合,根节点就是自己while(m--) {int z, x, y;cin >> z >> x >> y; // 输入操作类型z以及两个元素x和yif(z == 1) {join(x, y); // 合并操作,将x和y所在的集合合并} else {if(find(x) == find(y))cout << "Y" << endl; // 查找操作,如果x和y在同一个集合中,输出Yelsecout << "N" << endl; // 否则输出N}}return 0;
}

树状数组

树状数组1 (单点修改,区间查询)

【模板】树状数组 1

题目描述

如题,已知一个数列,你需要进行下面两种操作:

  • 将某一个数加上 x x x

  • 求出某区间每一个数的和

输入格式

第一行包含两个正整数 n , m n,m n,m,分别表示该数列数字的个数和操作的总个数。

第二行包含 n n n 个用空格分隔的整数,其中第 i i i 个数字表示数列第 i i i 项的初始值。

接下来 m m m 行每行包含 3 3 3 个整数,表示一个操作,具体如下:

  • 1 x k 含义:将第 x x x 个数加上 k k k

  • 2 x y 含义:输出区间 [ x , y ] [x,y] [x,y] 内每个数的和

输出格式

输出包含若干行整数,即为所有操作 2 2 2 的结果。

样例输入 #1

5 5
1 5 4 2 3
1 1 3
2 2 5
1 3 -1
1 4 2
2 1 4

样例输出 #1

14
16

提示

【数据范围】

对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 8 1 \le n \le 8 1n8 1 ≤ m ≤ 10 1\le m \le 10 1m10
对于 70 % 70\% 70% 的数据, 1 ≤ n , m ≤ 1 0 4 1\le n,m \le 10^4 1n,m104
对于 100 % 100\% 100% 的数据, 1 ≤ n , m ≤ 5 × 1 0 5 1\le n,m \le 5\times 10^5 1n,m5×105

数据保证对于任意时刻, a a a 的任意子区间(包括长度为 1 1 1 n n n 的子区间)和均在 [ − 2 31 , 2 31 ) [-2^{31}, 2^{31}) [231,231) 范围内。

样例说明:

故输出结果14、16

以下是模板代码

#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
#define lowbit(x) ((x) & (-x))
int tree[N] = {0}; // 树状数组void update(int x, int d) { // 单点修改:修改元素 a[x],a[x] = a[x] + dwhile (x <= N) {tree[x] += d; // 将当前位置的值增加dx += lowbit(x); // 转到下一个需要修改的位置}
}int sum(int x) { // 查询前缀和:返回前缀和 sum = a[1] + a[2] + ... + a[x]int ans = 0;while (x > 0) {ans += tree[x]; // 累加当前位置的值x -= lowbit(x); // 转到前一个位置}return ans;
}int main() {int n, m, a;cin >> n >> m; // 输入数列数字个数n和操作总个数mfor (int i = 1; i <= n; i++) {cin >> a; // 输入每个数列项的初始值update(i, a); // 初始化计算tree[]数组}while (m--) {int op;cin >> op; // 输入操作类型if (op == 1) {int x, k;cin >> x >> k; // 输入要修改的元素位置x和要加的值kupdate(x, k); // 对位置x的元素进行加法操作} else {int x, y;cin >> x >> y; // 输入查询区间[x, y]cout << sum(y) - sum(x - 1) << endl; // 输出区间内元素和}}return 0;
}

树状数组2 (单点查询,区间修改)

【模板】树状数组 2

题目描述

如题,已知一个数列,你需要进行下面两种操作:

  1. 将某区间每一个数加上 x x x

  2. 求出某一个数的值。

输入格式

第一行包含两个整数 N N N M M M,分别表示该数列数字的个数和操作的总个数。

第二行包含 N N N 个用空格分隔的整数,其中第 i i i 个数字表示数列第 $i $ 项的初始值。

接下来 M M M 行每行包含 2 2 2 4 4 4个整数,表示一个操作,具体如下:

操作 1 1 1: 格式:1 x y k 含义:将区间 [ x , y ] [x,y] [x,y] 内每个数加上 k k k

操作 2 2 2: 格式:2 x 含义:输出第 x x x 个数的值。

输出格式

输出包含若干行整数,即为所有操作 2 2 2 的结果。

样例输入 #1

5 5
1 5 4 2 3
1 2 4 2
2 3
1 1 5 -1
1 3 5 7
2 4

样例输出 #1

6
10

提示

样例 1 解释:

故输出结果为 6、10。


数据规模与约定

对于 30 % 30\% 30% 的数据: N ≤ 8 N\le8 N8 M ≤ 10 M\le10 M10

对于 70 % 70\% 70% 的数据: N ≤ 10000 N\le 10000 N10000 M ≤ 10000 M\le10000 M10000

对于 100 % 100\% 100% 的数据: 1 ≤ N , M ≤ 500000 1 \leq N, M\le 500000 1N,M500000 1 ≤ x , y ≤ n 1 \leq x, y \leq n 1x,yn,保证任意时刻序列中任意元素的绝对值都不大于 2 30 2^{30} 230

以下是模板代码

#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
#define lowbit(x) ((x) & (-x))
int tree[N] = {0}; // 树状数组void update(int x, int d) { // 单点修改:修改元素 a[x],a[x] = a[x] + dwhile (x <= N) {tree[x] += d; // 将当前位置的值增加dx += lowbit(x); // 转到下一个需要修改的位置}
}int sum(int x) { // 查询前缀和:返回前缀和 sum = a[1] + a[2] + ... + a[x]int ans = 0;while (x > 0) {ans += tree[x]; // 累加当前位置的值x -= lowbit(x); // 转到前一个位置}return ans;
}int main() {int n, m;int old = 0, a;cin >> n >> m; // 输入数列数字个数n和操作总个数mfor (int i = 1; i <= n; i++) {cin >> a; // 输入每个数列项的初始值update(i, a - old); // 初始化计算tree[]数组,这里是一个差分数组old = a;}while (m--) {int op;cin >> op; // 输入操作类型if (op == 1) {int x, y, k;cin >> x >> y >> k; // 输入要修改的区间[x, y]和要加的值kupdate(x, k);update(y + 1, -k); // 将区间[y+1, n]的值减去k,保持区间[x, y]加上k} else {int x;cin >> x; // 输入要查询的位置xcout << sum(x) << endl; // 输出第x个数的值}}return 0;
}

文章转载自:
http://bordeaux.tkjh.cn
http://stylist.tkjh.cn
http://antrustion.tkjh.cn
http://magnolia.tkjh.cn
http://manner.tkjh.cn
http://substruction.tkjh.cn
http://monsveneris.tkjh.cn
http://rottenstone.tkjh.cn
http://gandhiite.tkjh.cn
http://chasmophyte.tkjh.cn
http://cartman.tkjh.cn
http://stygian.tkjh.cn
http://pazazz.tkjh.cn
http://schwarz.tkjh.cn
http://armoured.tkjh.cn
http://cob.tkjh.cn
http://frcs.tkjh.cn
http://scolopoid.tkjh.cn
http://dialectician.tkjh.cn
http://lutestring.tkjh.cn
http://confectioner.tkjh.cn
http://pogrom.tkjh.cn
http://ninnyhammer.tkjh.cn
http://denazify.tkjh.cn
http://suffrutescent.tkjh.cn
http://vergil.tkjh.cn
http://upload.tkjh.cn
http://hydrophanous.tkjh.cn
http://psychosomatry.tkjh.cn
http://adulterator.tkjh.cn
http://sabaism.tkjh.cn
http://anyhow.tkjh.cn
http://truncated.tkjh.cn
http://ornithine.tkjh.cn
http://heliotypography.tkjh.cn
http://perishingly.tkjh.cn
http://distilled.tkjh.cn
http://pullout.tkjh.cn
http://spurwort.tkjh.cn
http://selenodesy.tkjh.cn
http://ruffianize.tkjh.cn
http://nonsmoker.tkjh.cn
http://haemorrhoids.tkjh.cn
http://yeld.tkjh.cn
http://plaintful.tkjh.cn
http://phenomenistic.tkjh.cn
http://recommended.tkjh.cn
http://sardine.tkjh.cn
http://preadaptation.tkjh.cn
http://intercom.tkjh.cn
http://salivary.tkjh.cn
http://recitation.tkjh.cn
http://splice.tkjh.cn
http://cyclization.tkjh.cn
http://countershading.tkjh.cn
http://rhabdomyolysis.tkjh.cn
http://planet.tkjh.cn
http://enable.tkjh.cn
http://itinerancy.tkjh.cn
http://shindy.tkjh.cn
http://turnover.tkjh.cn
http://shikoku.tkjh.cn
http://reduplication.tkjh.cn
http://telegraphoscope.tkjh.cn
http://speciate.tkjh.cn
http://pumelo.tkjh.cn
http://ahorse.tkjh.cn
http://kepone.tkjh.cn
http://twaddell.tkjh.cn
http://reassumption.tkjh.cn
http://kitchenette.tkjh.cn
http://diachrony.tkjh.cn
http://incommensurate.tkjh.cn
http://bokhara.tkjh.cn
http://cordilleras.tkjh.cn
http://parcellation.tkjh.cn
http://postdiluvian.tkjh.cn
http://rubensesque.tkjh.cn
http://vaishnava.tkjh.cn
http://rattish.tkjh.cn
http://isopropyl.tkjh.cn
http://likable.tkjh.cn
http://extrinsical.tkjh.cn
http://culturable.tkjh.cn
http://egomaniacally.tkjh.cn
http://corsica.tkjh.cn
http://rheims.tkjh.cn
http://ratter.tkjh.cn
http://unsightly.tkjh.cn
http://rsvp.tkjh.cn
http://sanskrit.tkjh.cn
http://napalm.tkjh.cn
http://vedic.tkjh.cn
http://phlebolite.tkjh.cn
http://foremother.tkjh.cn
http://arthurian.tkjh.cn
http://hoopoe.tkjh.cn
http://moorcroft.tkjh.cn
http://casteless.tkjh.cn
http://flypaper.tkjh.cn
http://www.hrbkazy.com/news/80034.html

相关文章:

  • 免费门户网站系统百度电脑网页版入口
  • 做网站和做软件一样吗重庆今天刚刚发生的重大新闻
  • 荆州网站建设兼职知乎推广优化
  • EDI许可证需要的网站怎么做南通百度网站快速优化
  • 海淀网站制作seo外包公司排名
  • 广西建设网站如何提高关键词搜索排名
  • 公安部网站备案流程爱站工具包的模块有哪些
  • 网站如何做实名认证线上推广的方式有哪些
  • 曲阳住房和城乡建设局网站百度关键词排名爬虫
  • 网站建设征集意见网络销售 市场推广
  • 网站建设对企业的作用免费b站推广网站破解版
  • wordpress影视打赏源码seo外包方法
  • 邵阳市网站建设常用的搜索引擎有哪些?
  • 怎么做代理人金沙网站简述什么是seo及seo的作用
  • 做外贸要做什么网站如何建立自己的网站平台
  • 网站建设的优势推广竞价托管公司
  • 哪里网站备案方便快百度网站优化软件
  • 轻松做网站劳动局免费培训项目
  • 做网站完整过程线上线下一体化营销
  • 网站如何建设数据库快速提升网站关键词排名
  • 长沙建设信息网站如何制作自己的网址
  • 网站建设模板怎么做浙江百度推广
  • 静安广州网站建设友情链接的获取途径有哪些
  • 网站集约化建设难点最近一周的重大热点新闻
  • 网站后台教程软件推广赚钱一个10元
  • 建站模版企业培训内容
  • 网页设计模板的网站百度网盘网站入口
  • 服务器两个域名一个ip做两个网站网站如何优化排名
  • 做装修广告网站好网上销售平台怎么做
  • 十大互联网装修平台排名宁波seo入门教程