AcWing题目
唐火
开始人工智能之路了!!!
展开
-
AcWing 788 逆序对的数量-归并排序
给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:5解题思路:求逆序对,其实就是在归并排序的代码加一个cnt+=mid-i+1就可原创 2021-03-28 13:45:15 · 101 阅读 · 0 评论 -
[USACO1.5]八皇后 Checker Challenge
给定一个 N×N 的棋盘,请你在上面放置 N 个棋子,要求满足:每行每列都恰好有一个棋子每条对角线上都最多只能有一个棋子上图给出了当 N=6 时的一种解决方案,该方案可用序列 2 4 6 1 3 5 来描述,该序列按顺序给出了从第一行到第六行,每一行摆放的棋子所在的列的位置。请你编写一个程序,给定一个 N×N 的棋盘以及 N 个棋子,请你找出所有满足上述条件的棋子放置方案。输入格式共一行,一个整数 N。输出格式共四行,前三行每行输出一个整数序列,用来描述一种可行放置方案,序列中的第 i 个原创 2021-03-08 00:04:51 · 171 阅读 · 2 评论 -
AcWing 1015. 摘花生
Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。输入格式第一行是一个整数T,代表一共有多少组数据。接下来是T组数据。每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。每组数据的接下来R行数据,从北原创 2021-03-06 00:17:22 · 244 阅读 · 0 评论 -
AcWing 895. 最长上升子序列
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−10^9≤数列中的数≤ 10^9输入样例:73 1 2 1 8 5 6输出样例:4解题思路:思路转载:https://www.acwing.com/solution/content/4807/代码如下:#include <iostream>using namespac原创 2021-03-06 00:16:45 · 97 阅读 · 0 评论 -
AcWing 1113. 红与黑
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入格式输入包括多个数据集合。每个数据集合的第一行是两个整数 W 和 H,分别表示 x 方向和 y 方向瓷砖的数量。在接下来的 H 行中,每行包括 W 个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:红色的瓷砖;3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合原创 2021-03-05 00:12:06 · 90 阅读 · 3 评论 -
AcWing 1101. 献给阿尔吉侬的花束
阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。迷宫用一个 R×C 的字符矩阵来表示。字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。阿尔吉侬在 1 个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。输入原创 2021-03-05 00:11:15 · 142 阅读 · 6 评论 -
AcWing 756. 蛇形矩阵
输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5代码如下:#include <iostream>using namespace std;const int N = 30;int a[N][N];in原创 2021-03-03 15:28:45 · 85 阅读 · 4 评论 -
AcWing 499. 聪明的质监员
解题思路:https://www.acwing.com/solution/content/33961/代码如下:#include <iostream>using namespace std;const int N = 200010;int n,m;int w[N],v[N],L[N],R[N];typedef long long LL;LL b[N],cnt[N];LL S;LL get_Y(int mid){ for (int i = 1;i<=n...原创 2021-02-27 22:15:14 · 97 阅读 · 0 评论 -
AcWing 503. 借教室
代码如下:#include <iostream>using namespace std;const int N = 1000010;int r[N],d[N],s[N],t[N];typedef long long LL;LL b[N];int n,m;bool check(int mid){ for (int i = 1;i<=n;i++) b[i] = r[i]-r[i-1]; for (int i = 1;i<=mid;i++) ...原创 2021-02-27 21:34:05 · 105 阅读 · 0 评论 -
AcWing 312. 乌龟棋
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘只有一行,该行有 N 个格子,每个格子上一个分数(非负整数)。棋盘第 1 格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中共有 M 张爬行卡片,分成 4 种不同的类型(M 张卡片中不一定包含所有 4 种类型的卡片),每种类型的卡片上分别标有1、2、3、4 四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟原创 2021-02-27 16:48:20 · 106 阅读 · 0 评论 -
AcWing 211. 计算系数
代码如下:#include <iostream>using namespace std;const int N = 1010;const int MOD = 10007; int c[N][N];typedef long long LL;int power(int a,int b){ int res = 1; a = a%MOD; while(b--) res = res*a%MOD; return res;}int main(){ .原创 2021-02-27 15:10:50 · 70 阅读 · 0 评论 -
AcWing 1230. K倍区间
给定一个长度为 N 的数列,A1,A2,…AN,如果其中一段连续的子序列 Ai,Ai+1,…Aj 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。你能求出数列中总共有多少个 K 倍区间吗?输入格式第一行包含两个整数 N 和 K。以下 N 行每行包含一个整数 Ai。输出格式输出一个整数,代表 K 倍区间的数目。数据范围1≤N,K≤100000,1≤Ai≤100000输入样例:5 212345输出样例:6解题思路:https://www.acwing.c原创 2021-02-27 00:06:25 · 70 阅读 · 0 评论 -
AcWing 3195. 有趣的数
我们把一个数称为有趣的,当且仅当:它的数字只包含 0,1,2,3,且这四个数字都出现过至少一次。所有的 0 都出现在所有的 1 之前,而所有的 2 都出现在所有的 3 之前。最高位数字不为 0。因此,符合我们定义的最小的有趣的数是 2013。除此以外,4 位的有趣的数还有两个:2031 和 2301。请计算恰好有 n 位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以 109+7 的余数。输入格式输入只有一行,包括恰好一个正整数 n。输出格式输出只有一行,包括恰好 n 位的整数原创 2021-02-26 23:23:56 · 106 阅读 · 0 评论 -
AcWing 730. 机器人跳跃问题
机器人正在玩一个古老的基于DOS的游戏。游戏中有N+1座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为 i 的建筑高度为H(i)个单位。起初,机器人在编号为0的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第k个建筑,且它现在的能量值是E,下一步它将跳到第k+1个建筑。如果H(k+1)>E,那么机器人就失去H(k+1)-E的能量值,否则它将得到E-H(k+1)的能量值。游戏目标是到达第N个建筑,在这个过程中能量值不能为负数个单位。现在的问题是机器人至少原创 2021-02-26 22:02:46 · 105 阅读 · 1 评论 -
AcWing 523. 组合数问题
组合数 Cmn 表示的是从 n 个物品中选出 m 个物品的方案数。 举个例子,从 (1, 2, 3) 三个物品中选择两个物品可以有 (1, 2), (1, 3), (2, 3) 这三种选择方法。 根据组合数的定义,我们可以给出计算组合数 Cmn 的一般公式:其中 n! = 1 × 2 × · · · × n 。 小葱想知道如果给定 n, m 和 k ,对于所有的 0 ≤ i ≤ n, 0 ≤ j ≤ min(i, m) 有多少对 (i, j) 满足 Cji 是 k 的倍数。输入格式第一行有两个原创 2021-02-26 21:48:37 · 169 阅读 · 0 评论 -
AcWing 1234. 倍数问题
众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数。但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼。现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大。数据保证一定有解。输入格式第一行包括 2 个正整数 n, K。第二行 n 个正整数,代表给定的 n 个数。输出格式输出一行一个整数代表所求的和。数据范围1≤n≤10^5,1≤K≤10^3,给定的 n 个数均不超过 10^8输入样例:4 31 2 3转载 2021-02-26 18:41:50 · 288 阅读 · 0 评论 -
AcWing 1047. 糖果
由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的 N 件产品中任意选择若干件带回家享用。糖果公司的 N 件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是 K 的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢?注意:Dzx只能将糖果公司的产品整件带走。输入格式第一行包含两个整数 N 和 K。以原创 2021-02-26 01:44:33 · 140 阅读 · 0 评论 -
AcWing 1214. 波动数列
观察这个数列:1 3 0 2 -1 1 -2 …这个数列中后一项总是比前一项增加2或者减少3,且每一项都为整数。栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢?输入格式共一行,包含四个整数 n,s,a,b,含义如前面所述。输出格式共一行,包含一个整数,表示满足条件的方案数。由于这个数很大,请输出方案数除以 100000007 的余数。数据范围1≤n≤1000,−109≤s≤109,1≤a,b≤106输入样例原创 2021-02-25 22:02:13 · 101 阅读 · 0 评论 -
AcWing 1381. 阶乘
转载地址:https://www.acwing.com/solution/content/31460/N 的阶乘(记作 N!)是指从 1 到 N(包括 1 和 N)的所有整数的乘积。阶乘运算的结果往往都非常的大。现在,给定数字 N,请你求出 N! 的最右边的非零数字是多少。例如 5!=1×2×3×4×5=120,所以 5! 的最右边的非零数字是 2。输入格式共一行,包含一个整数 N。输出格式输出一个整数,表示 N! 的最右边的非零数字。数据范围1≤N≤1000输入样例:7输出样转载 2021-02-25 15:44:27 · 77 阅读 · 0 评论 -
AcWing 126. 最大的和
给定一个包含整数的二维矩阵,子矩形是位于整个阵列内的任何大小为1 * 1或更大的连续子阵列。矩形的总和是该矩形中所有元素的总和。在这个问题中,具有最大和的子矩形被称为最大子矩形。例如,下列数组:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2其最大子矩形为:9 2-4 1-1 8它拥有最大和15。输入格式输入中将包含一个N*N的整数数组。第一行只输入一个整数N,表示方形二维数组的大小。从第二行开始,输入由空格和换行符隔开的N2个整数,它们即为二维数组中的原创 2021-02-25 15:20:05 · 72 阅读 · 0 评论 -
AcWing 703. 数独检查
**数独是一种流行的单人游戏。目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字。每个9x9矩阵在游戏开始时都会有部分数字已经给出,通常有一个独特的解决方案。给定完成的N2∗N2数独矩阵,你的任务是确定它是否是有效的解决方案。有效的解决方案必须满足以下条件:每行包含从1到N2的每个数字,每个数字一次。每列包含从1到N2的每个数字,每个数字一次。将N2∗N2矩阵划分为N2个非重叠N∗N子矩阵。 每个子矩阵包含从1到N2的每个数字,每个数字一次。你无需原创 2021-02-25 03:37:08 · 534 阅读 · 0 评论 -
AcWing 3208. Z字形扫描
在图像编码的算法中,需要将一个给定的方形矩阵进行 Z 字形扫描(Zigzag Scan)。给定一个 n×n 的矩阵,Z 字形扫描的过程如下图所示:对于下面的 4×4 的矩阵,1 5 3 93 7 5 69 4 6 47 3 1 3对其进行 Z 字形扫描后得到长度为 16 的序列:1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3。请实现一个 Z 字形扫描的程序,给定一个 n×n 的矩阵,输出对这个矩阵进行 Z 字形扫描的结果。输入格式输入的第一行包含一个整数 n,表示矩阵的原创 2021-02-25 03:09:31 · 79 阅读 · 0 评论