
acwing.算法基础课
题目来源:acwing.com
思路来自:yxc大佬
小帅吖
无
展开
-
AcWing with LeetCode
acwing和LeetCode刷题总结原创 2022-09-26 18:29:09 · 822 阅读 · 0 评论 -
acwing.799.最长不连续子序列(双指针)
799.最长不连续子序列给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3#include<iostream>using namespace std;const int N=100010;int a原创 2021-05-13 00:07:53 · 178 阅读 · 1 评论 -
acwing.789.数的范围(二分模板题)
二分模板题给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回 -1原创 2021-04-17 19:54:09 · 172 阅读 · 0 评论 -
acwing.188.逆序对数量
逆序对数量(归并排序应用)给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:5#include<iostream>using原创 2021-04-17 18:41:15 · 141 阅读 · 0 评论 -
acwing.787.归并排序
归并排序给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5#include<iostream>#include<algorithm>us原创 2021-04-17 18:24:00 · 95 阅读 · 0 评论 -
acwing.785.快速排序
785.快速排序给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5#include<iostream>#include<algorithm>原创 2021-04-17 18:10:16 · 93 阅读 · 0 评论 -
acwing.835.Trie字符串统计
Trie字符串统计维护一个字符串集合,支持两种操作:I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。共有 N 个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。输出格式对于每个询问指令 Q x,都要输出一个整数作为结果,表示 x 在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗104输入样例:5I abc原创 2021-04-14 23:16:55 · 595 阅读 · 0 评论 -
acwing.866.试除法判断质数
试除法判断质数给定n个正整数ai,判定每个数是否是质数。输入格式第一行包含整数n。接下来n行,每行包含一个正整数ai。输出格式共n行,其中第 i 行输出第 i 个正整数ai是否为质数,是则输出“Yes”,否则输出“No”。数据范围1 ≤ n ≤ 100,1 ≤ ai ≤ 231−1输入样例:226输出样例:YesNo#include<iostream>#include<math.h>using namespace std;int judge(原创 2021-03-16 22:22:01 · 145 阅读 · 0 评论 -
acwing.872.最大公因数
最大公因数给定n对正整数ai,bi,请你求出每对数的最大公约数。输入格式第一行包含整数n。接下来n行,每行包含一个整数对ai,bi。输出格式输出共n行,每行输出一个整数对的最大公约数。数据范围1≤n≤105,1≤ai,bi≤2∗109#include<iostream>using namespace std;int gcd(int a,int b){ return b?gcd(b,a%b):a;}int main(){ int n; ci原创 2021-03-16 22:10:47 · 142 阅读 · 0 评论 -
acwing.2.01背包问题
01背包问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 5原创 2021-03-13 19:19:02 · 155 阅读 · 0 评论 -
acwing.794.高精度除法
高精度除法给定两个非负整数A,B,请你计算 A / B的商和余数。输入格式共两行,第一行包含整数A,第二行包含整数B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000,1≤B≤10000B 一定不为0输入样例:72输出样例:31#include<iostream>#include<algorithm>#include<vector>using namespace std; int r;原创 2021-01-27 18:51:41 · 132 阅读 · 0 评论 -
acwing.793.高精度乘法
高精度乘法给定两个正整数A和B,请你计算A * B的值。输入格式共两行,第一行包含整数A,第二行包含整数B。输出格式共一行,包含A * B的值。数据范围1≤A的长度≤100000,0≤B≤10000输入样例:23输出样例:6#include<iostream>#include<string>#include<vector>using namespace std;vector<int> mul(vector<int原创 2021-01-27 18:32:33 · 208 阅读 · 0 评论 -
acwing.792.高精度减法
高精度减法给定两个正整数,计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤10510^5105输入样例:3211输出样例:21#include<iostream>#include<string>#include<vector>using namespace std;vector<int> A,B,C;bool Judge(vector<int&原创 2021-01-27 17:34:02 · 206 阅读 · 0 评论 -
acwing.791.高精度加法
高精度加法给定两个正整数,计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35#include<iostream>#include<string>#include<vector>using namespace std;string a,b;vector<int> A,B,C;int main(){ cin>>原创 2021-01-27 16:56:29 · 167 阅读 · 0 评论 -
acwing.798.差分矩阵
差分矩阵输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含5个整数x1, y1, x2, y2, c,表示一个操作。输出格式共 n 行,每行 m 个整数,表示所有操作进行完毕后的最终矩原创 2021-01-26 18:10:04 · 172 阅读 · 1 评论 -
acwing.797.差分
差分输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤r≤n,−1000≤c≤1000,−1000≤整数序列中元素的值≤1000输入样例:6 31 2 2 1原创 2021-01-26 18:04:13 · 556 阅读 · 0 评论 -
acwing.796.子矩阵的和
子矩阵的和输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。输出格式共q行,每行输出一个询问的结果。数据范围1≤n,m≤1000,1≤q≤200000,1≤x1≤x2≤n,1≤y1≤y2≤m,−1000≤矩阵内原创 2021-01-26 17:51:58 · 206 阅读 · 0 评论 -
acwing.795.前缀和
一维前缀和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000输入样例:5 32 1 3 6 41 21 32 4输出样例:3610#原创 2021-01-26 17:41:24 · 146 阅读 · 0 评论 -
acwing.802.区间和
区间和(离散化)假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。接下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。输入格式第一行包含两个整数n和m。接下来 n 行,每行包含两个整数x和c。再接下里 m 行,每行包含两个整数l和r。输出格式共m行,每行输出一个询问中所求的区间内数字和。数据范围−109≤x≤109,1≤n,m≤105,−109≤l≤r≤109,−10原创 2021-01-26 17:17:52 · 233 阅读 · 0 评论 -
acwing.803.区间合并
803.区间合并给定 n 个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3]和[2,6]可以合并为一个区间[1,6]。输入格式第一行包含整数n。接下来n行,每行包含两个整数 l 和 r。输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。数据范围1≤n≤100000,−109≤li≤ri≤109输入样例:51 22 45 67 87 9输出样例:3#include<iostr原创 2021-01-26 16:21:40 · 164 阅读 · 3 评论