网站建设与排名wangzhan

web/2025/9/30 14:05:21/文章来源:
网站建设与排名,wangzhan,广州专业的网站建设,自己开发小程序并查集、树状数组、线段树 并查集树状数组树状数组1 (单点修改#xff0c;区间查询)树状数组2 (单点查询#xff0c;区间修改) 并查集 【模板】并查集 题目描述 如题#xff0c;现在有一个并查集#xff0c;你需要完成合并和查询操作。 输入格式 第一行包含两个整数 … 并查集、树状数组、线段树 并查集树状数组树状数组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_i1 Zi​1 时将 X i X_i Xi​ 与 Y i Y_i Yi​ 所在的集合合并。 当 Z i 2 Z_i2 Zi​2 时输出 X i X_i Xi​ 与 Y i Y_i Yi​ 是否在同一集合内是的输出 Y 否则输出 N 。 输出格式 对于每一个 Z i 2 Z_i2 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 N≤10 M ≤ 20 M \le 20 M≤20。 对于 70 % 70\% 70% 的数据 N ≤ 100 N \le 100 N≤100 M ≤ 1 0 3 M \le 10^3 M≤103。 对于 100 % 100\% 100% 的数据 1 ≤ N ≤ 1 0 4 1\le N \le 10^4 1≤N≤104 1 ≤ M ≤ 2 × 1 0 5 1\le M \le 2\times 10^5 1≤M≤2×105 1 ≤ X i , Y i ≤ N 1 \le X_i, Y_i \le N 1≤Xi​,Yi​≤N Z i ∈ { 1 , 2 } Z_i \in \{ 1, 2 \} Zi​∈{1,2}。 以下是模板代码 #includebits/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 1≤n≤8 1 ≤ m ≤ 10 1\le m \le 10 1≤m≤10 对于 70 % 70\% 70% 的数据 1 ≤ n , m ≤ 1 0 4 1\le n,m \le 10^4 1≤n,m≤104 对于 100 % 100\% 100% 的数据 1 ≤ n , m ≤ 5 × 1 0 5 1\le n,m \le 5\times 10^5 1≤n,m≤5×105。 数据保证对于任意时刻 a a a 的任意子区间包括长度为 1 1 1 和 n n n 的子区间和均在 [ − 2 31 , 2 31 ) [-2^{31}, 2^{31}) [−231,231) 范围内。 样例说明 故输出结果14、16 以下是模板代码 #includebits/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 题目描述 如题已知一个数列你需要进行下面两种操作 将某区间每一个数加上 x x x 求出某一个数的值。 输入格式 第一行包含两个整数 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 N≤8 M ≤ 10 M\le10 M≤10 对于 70 % 70\% 70% 的数据 N ≤ 10000 N\le 10000 N≤10000 M ≤ 10000 M\le10000 M≤10000 对于 100 % 100\% 100% 的数据 1 ≤ N , M ≤ 500000 1 \leq N, M\le 500000 1≤N,M≤500000 1 ≤ x , y ≤ n 1 \leq x, y \leq n 1≤x,y≤n保证任意时刻序列中任意元素的绝对值都不大于 2 30 2^{30} 230。 以下是模板代码 #includebits/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); // 将区间[y1, n]的值减去k保持区间[x, y]加上k} else {int x;cin x; // 输入要查询的位置xcout sum(x) endl; // 输出第x个数的值}}return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建设网站的难点微信朋友圈软文大全

1.语法顺序 select语句的语法格式如下。 select 字段列表 from 数据源 [ where条件表达式 ] [ group by 分组字段 ] [ having条件表达式 ] [ order by 排序字段 [ asc | desc ] ] 2.执行顺序 FROM 对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1 ON 对虚表VT…

网站上常用字体寻找合肥网站建设

下面这个TXT文档里面是一篇长篇小说,大家都知道一般小说文字内容是比较大的一个文件呢,想要拆分,拆分肯定是有方法呢,比如比较重统的方法手动一章一章复制出来,粘贴到另一个文档里面去粘贴,手动操作是不是很…

专做男装的网站施工企业安全文明施工费取费

Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接keyvalue格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下: #配置根Loggerlog4j.rootLog…

成品网站建设哪家好100款不良网站进入窗口软件

《北京作家》今年第一期(总第七期)最近和读者见面了。这期重点推出了纪念刚刚故去的史铁生的专辑。首发了史铁生生前几个时期四张照片,并发表了他的好友曹文轩、林莽、甘铁生的纪念文章,文章字字真切,句句深情&#xf…

设计工作室网站社交营销可以用于网站制作行业吗

使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据 使用Datatable作为数据源的方式:下面的代码使用到了Co…

阿里云如何建立网站网线制作步骤图片

axios参数汇总 url: 用于请求的服务器 URL。 method: 创建请求时使用的方法,默认为 get baseURL: 自动加在 url 前面,除非 url 是绝对 URL transformRequest: 在发送请求前修改请求数据的函数,仅适用于 PUT, POST 和 PATCH 请求方法 它只能…

网站备案期间可以建站软件开发项目总结报告

3.3 主存储器与CPU连接 3.3.1 连接原理 现代计算机的MAR和MDR都在CPU内部。 (1)主存储器通过数据总线,地址总线,控制总线与CPU连接。 (2)数据传输率数据总线宽度*总线频率。 (4)控制总线(读写线)控制读写操作。 3.3.2 主存的扩展 数据总线宽度等于存储字长 1.位扩展法【增加…

宁波电商网站建设开发php网站开发技术课程

嵌入式系统正在日益广泛的应用于各个方面,嵌入式系统的最大特点在于其精简和实时性。公司近期委派我负责一个新的嵌入式系统项目,因为是小型设备,所以我面临的第一个难题是需要找一个体积少,但非常灵活添加外围接口的嵌入式系统。…

建设网站中期建个网络平台多少钱

一 问题背景 经常会有画廊组件需要在当前展示给用户的页面进行下载功能。一般情况下下载按钮的UI曾经是和ViewPager同级的,而不是作为ViewPager中adapter对应的item一部分。 因此知道当前展示给用户的item页面及其bitmap在用户点击下载按钮时的处理,显…

优化型网站的好处客户关系管理的内涵

目录 一. 排序的概念及应用 1.1 排序的概念 1.2 常见的排序算法 二. 常见排序算法的实现(从小到大排序) 2.1 插入排序 2.1.1基本思想: 2.1.2 直接插入排序 2.1.3 希尔排序( 缩小增量排序) 2.2 选择排序 2.2.1基本思想: 2.2.2 直接选择排序: 2…

保定网站建设与seo没有公司 接单做网站

你说怎么好刚才写【图吧小白教程】散热常识 的时候参考了一些资料,为此咱跑了不少网站关注了不少公众号,这年头有意思,干啥都要关注微信,然后就能拿到资料,我寻思我写这么多文章也没打算给咱自己的微信公众号引流呢&am…

莆田做网站公司平面设计机构培训

目录 1.consul介绍 ❤️❤️❤️ 2.安装 ❤️❤️❤️ 3.创建8006模块 ❤️❤️❤️ 4.创建80模块❤️❤️❤️ 1.consul介绍 ❤️❤️❤️ Consul 是一种用于服务发现、配置和分布式一致性的开源软件。它由HashiCorp开发和维护,可用于帮助构建和管理现代化的分布…

可以在网上接网站做的网址县科协微网站建设

我对java的八大排序算法进行了总结,以此文展示Java八大算法 常见排序算法如下: 1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序 排序方法示例简介 直接插入排序 基本思想 通常人们整理桥牌的方法…

网站建设公司海南海南城乡与建设厅网站

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…

网站建设销售年终总结有哪些做软件的网站有哪些

1.File类概述及构造方法 2.File类创建功能 文件创建成功! 如果文件不存在,就创建文件,并返回true 如果文件存在,就不创建文件,并返回false 如果文件夹不存在,就创建文件夹,并返回true 如果文件…

网站名称 规则游戏推广话术技巧

2020年《纽约时报》调查显示,全球有超过1000万人以AI恋人作为伴侣;后浪发布的《2022年轻人未来恋爱白皮书》报告中显示,有近4成年轻人接受与虚拟人恋爱。随着人工智能技术的突破,越来越多年轻群体在AI伴侣软件亲手打造自己的理想恋…

深圳一定火网站建设龙华区是深圳最差的区

&#xfeff;<table><tr><td bgcolororange>本文仅供学习交流使用&#xff0c;如侵立删&#xff01;</td></tr></table> 记一次阿里云盾滑块验证分析并通过 操作环境 win10 、 macPython3.9selenium、pyautogui 分析 最近在做中国庭审…

织梦批量修改网站源代码备案网站主办者承诺书

对象共享 概述 除了用于实现引用计数内存回收机制之外&#xff0c;对象的引用计数属性还带有对象共享的作用。 在Redis中&#xff0c;让多个键共享同一个值对象需要执行以下两个步骤: 1.将数据库键的值指针指向一个现有的值对象2.将被共享的值对象的引用计数增一 目前来说…

江西赣建建设监理网站移动应用开发干什么的

前言我是从.net 4.5直接跳到.net core 3.x的&#xff0c;感觉asp.net这套东西最初是从4.5中的owin形成的。目前官方文档重点是讲路由&#xff0c;没有特别说明与传统路由的区别&#xff0c;本篇主要介绍终结点路由的相关概念和如何使用&#xff0c;不会详细介绍路由&#xff0c…

成都建设路小学网站个体工商户 网站备案

前言 Leetcode中有一道这样的题:给定两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。 如果正常的四则运算符号不允许使用&#xff0c;呢这道题的考点我觉得应…