02数据结构
张学恒
这个作者很懒,什么都没留下…
展开
-
4461. 范围分区(Google Kickstart2022 Round C Problem B)
接下来N行,每行包含一个操作指令,操作指令为Ix,PM,DM,Dk或Ckx中的一种。现在要进行N次操作,对于所有第2个操作,输出当前集合的最小值。对于每个输出指令PM,输出一个结果,表示当前集合中的最小值。DM,删除当前集合中的最小值(数据保证此时的最小值唯一);Ckx,修改第k个插入的数,将其变为x;Dk,删除第k个插入的数;PM,输出当前集合中的最小值;Ix,插入一个数x;第一行包含整数N。...原创 2022-07-28 18:00:55 · 160 阅读 · 0 评论 -
839. 模拟堆
接下来N行,每行包含一个操作指令,操作指令为Ix,PM,DM,Dk或Ckx中的一种。现在要进行N次操作,对于所有第2个操作,输出当前集合的最小值。对于每个输出指令PM,输出一个结果,表示当前集合中的最小值。DM,删除当前集合中的最小值(数据保证此时的最小值唯一);Ckx,修改第k个插入的数,将其变为x;Dk,删除第k个插入的数;PM,输出当前集合中的最小值;Ix,插入一个数x;第一行包含整数N。...原创 2022-07-28 17:57:45 · 85 阅读 · 0 评论 -
G巴士计数(Google Kickstart2014 Round D Problem B)(DAY 89)
结果表示为Case#xy,其中x是组别编号(从1开始),y是P个空格隔开的整数,其中第i个整数是为城市Ci提供服务的G巴士的数量。对于每个G巴士,我们知道它服务的城市范围第i个g巴士为编号为Ai和Bi之间的城市(包含Ai和Bi)提供服务。第一个服务城市15到25,第二个服务城市30到35,第三个服务城市45到50,第四个服务城市10到20。对于P中包含的每一座城市,我们需要找出有多少辆G巴士为该城市服务。...原创 2022-07-28 07:49:02 · 209 阅读 · 0 评论 -
倒计数(来源:Google Kickstart2020 Round C Problem A)(DAY 88)
如果一个连续的子数组的长度为m,并且按顺序包含整数m,m−1,m−2,…,2,1,则称它为m倒计数。结果表示为Case#xy,其中x为组别编号(从1开始),y为K倒计数的数量。第二行包含N个整数,其中第i个表示Ai。请帮助艾弗里计算她的数组中有多少个K倒计数。第一行包含整数T,表示共有T组测试数据。对于每组数据,第一行包含两个整数N和K。例如,[3,2,1]是3倒计数。每组数据输出一个结果,每个结果占一行。在示例2中,没有2倒计数。...原创 2022-07-28 07:44:15 · 211 阅读 · 0 评论 -
成绩排序(华中科技大学考研机试题)(DAY 87)
代码】成绩排序(华中科技大学考研机试题)(DAY87)原创 2022-07-27 18:42:28 · 92 阅读 · 0 评论 -
质数(清华大学机试题)(DAY 86)
代码】质数(清华大学机试题)(DAY86)原创 2022-07-27 08:28:30 · 359 阅读 · 0 评论 -
二叉树(北京邮电大学机试题)(DAY 85)
代码】二叉树(北京邮电大学机试题)(DAY85)原创 2022-07-26 09:37:27 · 108 阅读 · 0 评论 -
排列与二进制(吉,大)(DAY 84)
ji林大xue机试题。原创 2022-07-26 09:34:21 · 105 阅读 · 0 评论 -
围圈报数(北理工机试题)(DAY 83)
代码】围圈报数(北理工机试题)(DAY83)原创 2022-07-26 09:20:04 · 218 阅读 · 0 评论 -
二叉树(DAY 82)
代码】二叉树(DAY82)原创 2022-07-26 08:29:21 · 226 阅读 · 0 评论 -
正方形数组的数目(DAY 81)
代码】正方形数组的数目(DAY81)原创 2022-07-26 08:26:40 · 129 阅读 · 0 评论 -
最低票价(DAY 80)
代码】最低票价(DAY80)原创 2022-07-26 08:18:21 · 62 阅读 · 0 评论 -
食物链(DAY 79)
代码】食物链(DAY79)原创 2022-07-25 17:10:07 · 63 阅读 · 0 评论 -
水仙花数(DAY 78)
代码】水仙花数(DAY78)原创 2022-07-25 08:39:32 · 118 阅读 · 1 评论 -
最大连续子序列(DAY 77)
代码】最大连续子序列(DAY77)原创 2022-07-25 08:36:02 · 102 阅读 · 0 评论 -
日期(DAY 76)
今天是 2012 年 4 月 12 日星期四,编写程序,输入今天开始到 12 月 31 日之间的任意日期,输出那一天是星期几。输入格式共两行,第一行包含一个整数 m,表示询问日期的月份。第二行包含一个整数 d,表示询问日期的为该月的第几天。输出格式...原创 2022-07-24 09:15:09 · 138 阅读 · 0 评论 -
二叉搜索树(DAY 75)
代码】二叉搜索树(DAY75)原创 2022-07-23 07:03:37 · 103 阅读 · 0 评论 -
最少交换次数
代码】最少交换次数。原创 2022-07-22 09:11:23 · 386 阅读 · 0 评论 -
二叉树遍历
代码】二叉树遍历。原创 2022-07-22 09:05:49 · 125 阅读 · 0 评论 -
二叉树遍历(DAY 74)
代码】二叉树遍历(DAY74)原创 2022-07-21 07:49:20 · 147 阅读 · 0 评论 -
手机键盘(DAY 73)
代码】手机键盘(DAY73)原创 2022-07-21 07:43:08 · 139 阅读 · 0 评论 -
连通图(DAY 72)
代码】连通图(DAY72)原创 2022-07-21 07:39:46 · 120 阅读 · 0 评论 -
区块反转(DAY 71)
代码】区块反转(DAY71)原创 2022-07-19 17:17:37 · 75 阅读 · 0 评论 -
擅长C(DAY 70)
代码】擅长C(DAY70)原创 2022-07-19 17:14:28 · 216 阅读 · 0 评论 -
倒水问题(DAY 69)
代码】倒水问题(DAY69)原创 2022-07-19 17:12:04 · 81 阅读 · 0 评论 -
连通块中点的数量(DAY 68)
代码】连通块中点的数量(DAY68)原创 2022-07-19 12:32:19 · 152 阅读 · 0 评论 -
836. 合并集合(DAY 63)并查集
一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。现在要进行 m 个操作,操作共有两种:M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;Q a b,询问编号为 a 和 b 的两个数是否在同一个集合中;输入格式第一行输入整数 n 和 m。接下来 m 行,每行包含一个操作指令,指令为 M a b 或 Q a b 中的一种。输出格式对于每个询问指令 Q a b,都要输出一个结果,如果 a 和 b 在同一集合内,则输出 Y原创 2022-07-01 11:06:48 · 135 阅读 · 0 评论 -
143. 最大异或对(DAY 60)
文章目录12:代码实现12:代码实现#include<iostream>#include<algorithm>using namespace std;const int N=1000010,M=31000010;int n;int a[N],son[M][2],idx;void insert(int x){ int p=0; for(int i=30;i>=0;i--) { int &s=son[p][x原创 2022-05-23 17:05:58 · 70 阅读 · 0 评论 -
3302. 表达式求值(DAY 59)
文章目录1:题目2:代码实现1:题目2:代码实现#include<iostream>#include<cstring>#include<algorithm>#include<stack>#include<unordered_map>using namespace std;stack<int> num;stack<char>op;void eval(){ auto b = num.top原创 2022-05-22 21:15:18 · 103 阅读 · 0 评论 -
827. 双链表(DAY 57)
文章目录1:题目2:代码实现1:题目2:代码实现#include<iostream>using namespace std;const int N=1000010;int m;int e[N],l[N],r[N],idx;void init(){ r[0]=1,l[1]=0; idx=2;}void add(int k,int x){ e[idx]=x; r[idx]=r[k]; l[idx]=k; l[r[k]原创 2022-05-17 17:58:44 · 209 阅读 · 0 评论 -
826. 单链表(DAY 56)
文章目录1:题目2:代码实现1:题目2:代码实现#include<iostream>using namespace std;const int N=1000010;int e[N],ne[N],idx,head;void init(){ head=-1; idx=0;}void add_to_head(int x){ e[idx]=x,ne[idx]=head,head=idx++;}void add(int k,int x){原创 2022-05-16 15:58:58 · 203 阅读 · 0 评论 -
Acwing周赛48(DAY 44)
文章目录1:4410. 吃鸡蛋题目代码实现2:4411. 三仙归洞题目代码实现1:4410. 吃鸡蛋题目代码实现#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){ int n,m; cin>> n>> m; int day=0; while(n)原创 2022-04-23 20:58:49 · 151 阅读 · 0 评论 -
数据结构11 840. 模拟散列表(DAY 42)
文章目录题目代码实现题目维护一个集合,支持如下几种操作:I x,插入一个数 x;Q x,询问数 x 是否在集合中出现过;现在要进行 N 次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数 N,表示操作数量。接下来 N 行,每行包含一个操作指令,操作指令为 I x,Q x 中的一种。输出格式对于每个询问指令 Q x,输出一个询问结果,如果 x 在集合中出现过,则输出 Yes,否则输出 No。每个结果占一行。数据范围1≤N≤105−109≤x≤109输入样例:5I原创 2022-04-21 22:18:24 · 90 阅读 · 0 评论 -
数据结构10 838. 堆排序(DAY 42)
文章目录题目代码实现思考题目输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。输入格式第一行包含整数 n 和 m。第二行包含 n 个整数,表示整数数列。输出格式共一行,包含 m 个整数,表示整数数列中前 m 小的数。数据范围1≤m≤n≤105,1≤数列中元素≤109输入样例:5 34 5 1 3 2输出样例:1 2 3代码实现#include<iostream>#include<algorithm>using namespace s原创 2022-04-21 20:43:40 · 907 阅读 · 0 评论 -
算法08 离散化 (DAY 41)
文章目录原题题目代码实现总结原题题目假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含两个整数 x 和 c。再接下来 m 行,每行包含两个整数 l 和 r。输出格式共 m 行,每行输出一个询问中所求的区间内数字和。数据范围−109≤x≤109原创 2022-04-20 21:58:24 · 84 阅读 · 0 评论 -
数据结构09 836. 合并集合(DAY 41)
文章目录原题题目代码实现原题题目代码实现#include<iostream>using namespace std;const int N=100010;int n,m;int p[N];int find(int x){ if(p[x]!=x)p[x]=find(p[x]); return p[x];}int main(){ cin >> n>> m; for(int i=1;i<=n;i+原创 2022-04-20 19:07:54 · 1134 阅读 · 0 评论 -
数据结构08 835. Trie字符串统计(DAY 41)
文章目录原题题目代码实现原题题目代码实现#include<iostream>using namespace std;const int N=100010;int son[N][26],cnt[N],idx;char str[N];void insert(char str[]){ int p=0; for(int i=0;str[i];i++) { int u=str[i]-'a'; if(!son[p][u])原创 2022-04-20 17:20:16 · 779 阅读 · 0 评论 -
数据结构07 831. KMP字符串(DAY 40)
kmp以及kmp暴力原创 2022-04-19 22:39:23 · 349 阅读 · 0 评论 -
第一章:基础算法集和——八大排序中的部分(DAY 40)
文章目录一:快速二:归并三:二分四:前缀和五:双指针六:位运算一:快速#include<iostream>using namespace std;const int N=1000010;int n;int q[N];void quick_sort(int q[],int l,int r){ if(l>=r)return; int x=q[l+r>>1],i=l-1,j=r+1; while(i<j) {原创 2022-04-19 21:10:45 · 355 阅读 · 1 评论 -
数据结构06 154. 滑动窗口(DAY 39)
文章目录题目代码实现题目给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -原创 2022-04-18 16:20:35 · 225 阅读 · 0 评论