Acwing
Acwing刷题
前滩卷王
You Only Live Once
展开
-
Java版 静态链表---数组模拟链表
head 表示头结点的下标e[i] 表示结点i的值ne[i] 表示结点i 的next指针idx 存储当前的结点, 地址int head, e[N], ne[N], idx;//初始化void init(){ head = -1; idx = 0;}//将x插到头结点void add_to_head(int x) { e[idx] = x; ne[idx] = head; head = idx; idx ++;}...原创 2021-08-06 19:49:52 · 161 阅读 · 0 评论 -
区间选点
题目描述给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。样例描述输入格式第一行包含整数 N,表示区间数。接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样例:2思路将每个区间按右端点从小到大排序原创 2021-03-31 08:04:11 · 247 阅读 · 0 评论 -
最长上升子序列
题目描述给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。样例描述输入格式第一行包含整数 N。第二行包含 N 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4思路用f[i]表示所有以第i个数(即w[i])结尾的上升子序列的集合,f[i]取值为其中所有子序列的最大值所有f[i]中的最大值,就是整个的最大值状态转移方程f[i] =原创 2021-03-30 11:14:03 · 106 阅读 · 0 评论 -
01背包问题
题目描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。样例描述输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入原创 2021-03-29 11:08:28 · 95 阅读 · 0 评论 -
数字反转
题目描述给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。样例描述输入格式输入共1行,1个整数N。输出格式输出共1行,1个整数表示反转后的新数。 数据范围|N|≤109输入样例:123输出样例:321输入样例:-380输出样例:-83思路用int可以方便去掉前导0,如果是负数先变成正数。每次取模,除10进行反转。直接计算出反转后的数。代码import java.i原创 2021-02-18 10:26:25 · 235 阅读 · 0 评论 -
数的三次方根
题目描述给定一个浮点数n,求它的三次方根。样例描述输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000思路二分法,直接用浮点数二分注意设置eps,一般多设置两位可保证精度和准确性,例如本题要求保留6位小数,设置成1e-8及以上会好些。代码#include<iostream>using namespace st原创 2021-01-30 11:33:10 · 642 阅读 · 1 评论 -
最长连续不重复子序列
题目描述给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。样例描述输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤100000输入样例:51 2 2 3 5输出样例:3思路桶排序里面的计数思想,统计各个元素出现的次数双指针算法,这里i,j的移动具有单调性,即只能朝同一个方向,不然会产生矛盾,不在这里做证明,原创 2021-01-29 19:38:54 · 473 阅读 · 0 评论 -
归并排序
题目描述给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。样例描述输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路分治思想,一定注意记得将排好序的部分放回原数组代码#include<iostre原创 2021-01-29 19:33:21 · 125 阅读 · 0 评论 -
快速排序
题目描述给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。样例描述输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路双指针算法代码#include<iostream>using names原创 2021-01-29 19:30:41 · 129 阅读 · 0 评论 -
剑指Offer 合并两个排序的链表
题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。样例描述输入:1->3->5 , 2->4->5输出:1->2->3->4->5->5/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), n原创 2021-01-28 19:49:37 · 59 阅读 · 0 评论 -
剪绳子
题目描述有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。样例描述输入格式第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。输出格式输出一个数字,表示裁剪后最长的长度,保留两位小数。数据范围1≤N,M≤100000,0<Li<109输入样例:3 43 5 4输出样例:2.50样例解释第原创 2021-01-28 19:15:24 · 126 阅读 · 0 评论 -
回文平方
题目描述回文数是指数字从前往后读和从后往前读都相同的数字。例如数字 12321 就是典型的回文数字。现在给定你一个整数 B,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B 进制表示是回文数字。样例描述输入格式一个整数 B。输出格式每行包含两个在 B 进制下表示的数字。第一个表示满足平方值转化为 B 进制后是回文数字那个数,第二个数表示第一个数的平方。所有满足条件的数字按从小到大顺序依次输出。数据范围2≤B≤20,对于大于 9 的数字,用原创 2021-01-27 20:06:44 · 107 阅读 · 0 评论 -
红与黑
题目描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。样例描述输入格式输入包括多个数据集合。每个数据集合的第一行是两个整数 W 和 H,分别表示 x 方向和 y 方向瓷砖的数量。在接下来的 H 行中,每行包括 W 个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:红色的瓷砖;3)‘@’:黑色的瓷砖,并且你站在这块瓷原创 2021-01-27 20:00:47 · 336 阅读 · 0 评论 -
蛇形矩阵
题目描述输入两个整数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<原创 2021-01-27 19:57:23 · 228 阅读 · 0 评论 -
数字三角形
题目描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 5样例描述输入格式第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式输出一个整数,表示最大的路径数字和。原创 2021-01-27 19:52:24 · 680 阅读 · 0 评论 -
货仓选址
题目描述在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。样例描述输入格式第一行输入整数N。第二行N个整数A1~AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000,0≤Ai≤40000输入样例:46 2 9 1输出样例:12思路利用数学结论,排序后的中间值到其他点的差值的绝对值之和即为原创 2021-01-27 19:46:29 · 115 阅读 · 0 评论