- 博客(6)
- 收藏
- 关注
原创 AcWing 841. 字符串哈希
AcWing 841. 字符串哈希给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2,请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。字符串中只包含大小写英文字母和数字。[输入格式]第一行包含整数n和m,表示字符串长度和询问次数。第二行包含一个长度为n的字符串,字符串中只包含大小写英文字母和数字。接下来m行,每行包含四个整数l1,r1,l2,r2,表示一次询问所涉及的两个区间。注意,字符串的位置从1开始编号。[输出格式]
2020-12-27 17:03:27
164
1
原创 [哈希表/map数组] AcWing840.模拟散列表
AcWing840.模拟散列表[题目描述]维护一个集合,支持如下几种操作:“I x”,插入一个数x;“Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。[输出格式]对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“No”。每个结果占一行。[数据范围]1≤N≤105−109≤x≤
2020-12-27 16:23:42
210
原创 [手写栈/STL] AcWing 830.单调栈
AcWing 830. 单调栈给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。[输入格式]第一行包含整数N,表示数列长度。第二行包含N个整数,表示整数数列。[输出格式]共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。[数据范围]1≤N≤1051≤数列中元素≤109[输入样例]53 4 2 7 5[输出样例]:-1 3 -1 2 2打暴力显然超时,但通过建立一个单调下降的栈,栈顶为最优,时间复杂度降低到
2020-12-25 16:23:03
184
原创 [贪心]Acwing 803. 区间合并/一本通 1323活动选择
前缀和与差分#include<bits/stdc++.h>using namespace std;int num[200008],a[200080],v[200013],b[200011];int n,m;int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d%d",&a[i],&v[i]); //a为坐标 b[i]=a[i]; } sort
2020-12-22 19:27:05
135
原创 [离散化] AcWing 802.区间和
AcWing 802.区间和[题目描述]假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。接下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。[输入格式]第一行包含两个整数n和m。接下来 n 行,每行包含两个整数x和c。再接下里 m 行,每行包含两个整数l和r。输出格式共m行,每行输出一个询问中所求的区间内数字和。[数据范围]−10^9 ≤x≤10 ^91≤n,m≤10
2020-12-22 19:17:46
171
原创 前缀和与差分
前缀和与差分如果给出一串长度为n的数列,再给出m个询问,每次询问给出L,R两个数,要求给出区间[L,R]里的数的和。对于m次询问,如果每次都遍历一遍区间内的值并累加,其时间复杂度为O(nm),如果数据量稍大一点就有可能超时,如果使用前缀和的方法,就能够将时间复杂度降到O(n+m),节省了运算时间。一维前缀和 —— 模板题 AcWing 795. 前缀和#include<bits/stdc++.h>using namespace std;int n,m;int a[100009];
2020-12-18 17:01:49
160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人