
刷题记录本
文章平均质量分 57
刷题记录本
幸愉信奥
信息学奥赛教学|教研|日常
展开
-
天梯 L1 Practic1 题解合集
文章目录调和平均寻找 250幸运彩票敲笨钟天梯赛座位分配情人节倒数第N个字符串前世档案刮刮彩票原创不易,未经允许,禁止转载。博客主页:https://blog.youkuaiyun.com/Edviv调和平均题目链接题目大意N 个正数的算数平均是这些数的和除以 N,它们的调和平均是它们倒数的算数平均的倒数。本题就请你计算给定的一系列正数的调和平均值。输入格式每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (≤1000);第 2 行给出 N 个正数,都在区间 [0.1,100]原创 2021-04-02 08:36:51 · 942 阅读 · 0 评论 -
PTA 中文题目题解合集
文章目录1001 害死人不偿命的(3n+1)猜想1002 写出这个数1003 我要通过!1004 成绩排名1005 继续(3n+1)猜想1001 害死人不偿命的(3n+1)猜想#include <cstdio>using namespace std;int main(){ int n; scanf("%d",&n); int step = 0; while(n != 1) { if(n&1) n = n*3 +原创 2021-01-31 22:36:02 · 2656 阅读 · 1 评论 -
Leetcode 题目类型表单
文章目录基础算法数学数据结构搜索贪心动态规划周赛原创不易 未经博主允许 禁止转载题目来源于 Leetcode 每日一题以及本蒟蒻水 Leetcode 的记载本蒟蒻分类题目聚聚觉得不恰当请见谅 持续更新 ing... LeetCode题库链接基础算法题名题解地址知识点Leetcode 540 有序数组中的单一元素题解链接二分或异或Leetcode 1542. 找出最长的超赞子字符串题解链接状态压缩 + 前缀和Leetcode 1 两数之和题解链接原创 2021-05-01 18:03:34 · 285 阅读 · 0 评论 -
2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛)整理合集
文章目录分子爵士内存海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛分子题目大意在遥远的斯卡布罗集市,有机分子只能由 C,H,OC, H, OC,H,O 三种元素组成。根据珂学家们的探测,一个 C 原子的式量为 13 ,一个 HHH 原子的式量为 1 ,一个 OOO 原子的式量为 17 。一个有机分子的式量恰为各个原子的式量的总和。对于有机分子式给出如下定义:有机分子式只可能包含数字、括号和 C,H,OC, H, OC,H,O 三种元素标记;数字只能出现在元素标记或右括号的右边,代表该元原创 2020-08-08 14:41:35 · 675 阅读 · 0 评论 -
剑指 Offer 37 序列化二叉树
题目链接DFS实现序列化和反序列化二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Codec {public: string path原创 2021-06-30 10:13:16 · 130 阅读 · 0 评论 -
PTA 数字三角形模型--寻宝路线
题目大意在一个mmm 行 nnn 列方格矩阵中,每一个方格内摆放着价值不等的宝贝(价值可正可负),让小明感到好奇的是,从左上角到达右下角的所有可能路线中,能捡到宝贝的价值总和最大是多少?而且这种达到最大值的路线 又有多少条?注意:只能从一个格子向下或向右走到相邻格子,并且走到的格子宝贝一定会被捡起。输入格式第一行为整数 m,nm,nm,n(均不大于100),下一行开始会有一个mmm 行 nnn 列的整数方阵,对应方格矩阵中的宝贝价值(这些值的绝对值都不超过500)。输出格式单独一行输出2个整数,原创 2020-12-22 20:55:14 · 1196 阅读 · 2 评论 -
PTA 背包问题凑零钱
题目大意韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 10410^4104 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。输入格式输入第一行给出两个正整数:N≤104N≤10^{4}N≤104 是硬币的总个数,M≤102M ≤10^{2}M≤102是韩梅梅要付的款额。第二行给出 NNN 枚硬币的正整数面值。数字间以空格分隔。输出格式在一行中输出硬币的面值原创 2020-12-22 20:55:24 · 1380 阅读 · 0 评论 -
SYNU天梯校选题解
文章目录谁是赢家猜数字月饼口罩发放旅游规划寻宝路线最长对称子串拯救007原创不易,未经允许,请勿转载。博客主页:https://blog.youkuaiyun.com/Edviv谁是赢家题目大意某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判原创 2021-03-27 10:33:53 · 499 阅读 · 0 评论 -
PTA 树的遍历 题解
题目链接题目大意给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例72 3 1 5 7 6 41 2 3 4 5 6 7输出样例4 1 6 3 5 7 2二叉树的先序遍历方式:根左右二叉树的中序遍历方原创 2021-04-20 00:11:17 · 486 阅读 · 0 评论 -
PTA 网红点打卡攻略
题目链接输入样例6 130 5 26 2 26 0 13 4 21 5 22 5 13 1 14 1 21 6 16 3 21 2 14 5 32 0 276 5 1 4 3 6 26 5 2 1 6 3 48 6 2 1 6 3 4 5 23 2 1 56 6 1 3 4 5 27 6 2 1 3 4 5 26 5 2 1 4 3 6输出样例35 11样例说明第 2、3、4、6 条都不满足攻略的基本要求,即不能做到从家里出发,在每个网红点打卡原创 2021-04-07 17:43:13 · 919 阅读 · 0 评论 -
PTA 双十一
题目大意双十一期间,某著名电商平台“东东”为应对销售高峰,准备在 nnn 个城市中再增加一个自营仓库,其要求是该仓库设在 nnn 个城市中的某个城市,且距离其他所有城市的最短距离之和最小。请编写程序帮助“东东”找出设立仓库的地点。假定 nnn 个城市编号为 0 至 nnn -1,它们之间至少有一个城市与其他所有城市可及。输入格式输入包含多组数据。每组数据第一行为两个正整数 nnn 和 eee,均不超过100。nnn 表示城市数。接下来 eee 行表示两个城市间的距离信息,每行为 3 个非负整数 a、b原创 2020-12-26 10:24:21 · 2299 阅读 · 0 评论 -
PTA 天梯 紧急救援 Dijkstra 堆优化
题目链接DijkstraDijkstraDijkstra堆优化的解法不会请自行百度#include <bits/stdc++.h>#define mes(a, b) memset(a, b, sizeof a)#define pb push_backtypedef unsigned long long int ull;typedef long long int ll;const int maxn = 1e3 + 20;const int maxm = 1e5 +原创 2021-04-08 22:47:43 · 231 阅读 · 0 评论 -
Leetcode 421 数组中两个数的最大异或值
题目链接题目链接给你一个整数数组 numsnumsnums,返回 nums[i]nums[i]nums[i] XORXORXOR nums[j]nums[j]nums[j] 的最大运算结果,其中 0≤i≤j<n0 \leq i \leq j < n0≤i≤j<n 。示例 1:输入:nums = [3,10,5,25,2,8]输出:28解释:最大运算结果是 5 XOR 25 = 28.提示:1≤nums.length≤2∗1041 \leq nums.length \leq原创 2021-05-16 17:08:21 · 146 阅读 · 0 评论 -
Leetcode 523 连续的子数组和 前缀和 + 哈希表
题目链接一维前缀和思想:sum[i]sum[i]sum[i] = sum[i−1]sum[i-1]sum[i−1] + a[i]a[i]a[i]sum[l] - sum[l-2] [l-2,l] 区间内的数是 k 的倍数sum[l] - sum[l-3] [l-3,l] 区间内的数是 k 的倍数sum[l] - sum[l-4] [l-4,l] 区间内的数是 k 的倍数.........sum[l] - sum[1] [1,l] 区间内的数是 k 的倍数原创 2021-06-02 20:51:13 · 197 阅读 · 0 评论 -
Leetcode 740 删除并获得点数
题目链接题目大意给你一个整数数组 numsnumsnums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i]nums[i]nums[i],删除它并获得 nums[i]nums[i]nums[i] 的点数。之后,你必须删除 所有 等于 nums[i]nums[i]nums[i] - 1 和 nums[i]nums[i]nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1输入:nums = [3,4,2]输出:6解释:删除 4 获原创 2021-05-09 01:28:35 · 202 阅读 · 0 评论 -
Leetcode 1310 子数组异或查询
题目链接题目大意有一个正整数数组 arrarrarr,现给你一个对应的查询数组 queriesqueriesqueries,其中 queries[i]=[Li,Ri]queries[i] = [L_i, R_i]queries[i]=[Li,Ri]。对于每个查询 iii,请你计算从 LiL_iLi 到 RiR_iRi 的 XORXORXOR 值(即 arr[Li]arr[L_i]arr[Li] xorxorxor arr[Li+1]arr[L_{i+1}]arr[Li+1] xorxorx原创 2021-05-12 23:51:04 · 163 阅读 · 0 评论 -
Leetcode 1744 你能在你最喜欢的那天吃到你最喜欢的糖果吗? 前缀和
题目链接前缀和思想,v[i]v[i]v[i] 表示前 i−1i-1i−1 天糖果数量总合,判断一下每天一颗糖果是否在第 favoriteDayifavoriteDay_ifavoriteDayi 吃到糖果,并且最多能吃的糖果数是否大于 favoriteDayifavoriteDay_ifavoriteDayi 前吃的糖果数量总合。class Solution {public: typedef long long ll; vector<bool> canEat(vect原创 2021-06-01 23:46:46 · 124 阅读 · 0 评论 -
Leetcode 483 最小好进制
题目链接class Solution {public: string smallestGoodBase(string n) { long long x = stol(n); for(int i = 2; i <= 60; i++){ long long k = pow(x,1.0/(1.0*i)); if(k == 1) continue; long long sum = 0;原创 2021-06-18 22:04:52 · 119 阅读 · 0 评论 -
Leetcode第239场周赛 总结 + 补题
文章目录到目标元素的最小距离将字符串拆分为递减的连续值邻位交换的最小次数包含每个查询的最小区间到目标元素的最小距离Leetcode 5746 到目标元素的最小距离题目链接题目描述给你一个整数数组 numsnumsnums (下标从 0 开始 计数)以及两个整数 targettargettarget 和 startstartstart ,请你找出一个下标 iii,满足 nums[i]nums[i]nums[i] == targettargettarget 且 abs(i−start)abs(i - s原创 2021-05-04 14:39:39 · 232 阅读 · 0 评论 -
Leetcode 1190 反转每对括号间的子串
题目链接用栈模拟转换过程,如果当前元素不是 ‘)’ 直接入栈,遇到 ‘)’ 则出栈,直到栈顶是 ‘(’ 出栈结束,最后再弹出 ‘(’,最后栈中的元素就是最终的翻转结果,然后将栈中元素用一个字符串存储,最后返回即可。class Solution {public: string reverseParentheses(string s) { stack<char> ans; for(int i = 0; i < s.size(); i++)原创 2021-05-26 11:38:41 · 110 阅读 · 0 评论 -
Leetcode 寻找两个正序数组的中位数 二分
题目链接暴力 nlog(n)nlog(n)nlog(n)class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { vector<double> C; for(int i = 0; i < nums1.size(); i++) C.push_back(nums1[i]);原创 2021-06-03 22:47:06 · 141 阅读 · 0 评论 -
Leetcode 554 砖墙
题目链接原创 2021-05-09 17:58:16 · 189 阅读 · 0 评论 -
Leetcode 1482 制作 m 束花所需的最少天数
题目链接题目链接给你一个整数数组 bloomDaybloomDaybloomDay,以及两个整数 mmm 和 kkk 。现需要制作 mmm 束花。制作花束时,需要使用花园中 相邻的 kkk 朵花花园中有 nnn 朵花,第 iii 朵花会在 bloomDay[i]bloomDay[i]bloomDay[i] 时盛开,恰好可以用于 一束花中。请你返回从花园中摘 mmm 束花需要等待的最少的天数。如果不能摘到 mmm 束花则返回 -1 。示例 1输入:bloomDay = [1,10,3,10,2]原创 2021-05-10 19:39:37 · 192 阅读 · 2 评论 -
Leetcode 1734 解码异或后的排列
题目链接题目描述给你一个整数数组 permpermperm,它是前 nnn 个正整数的排列,且 nnn 是个 奇数 。它被加密成另一个长度为 nnn - 1 的整数数组 encodedencodedencoded,满足 encoded[i]encoded[i]encoded[i] = perm[i]perm[i]perm[i] XORXORXOR perm[i+1]perm[i + 1]perm[i+1]。比方说,如果 permpermperm = [1,3,2] ,那么 encodedencoded原创 2021-05-13 19:08:00 · 171 阅读 · 0 评论 -
Leetcode 1442 形成两个异或相等数组的三元组数目
题目链接题目描述给你一个整数数组 arrarrarr。现需要从数组中取三个下标 iii、jjj 和 kkk ,其中 (0≤i<j≤k<arr.length0 \leq i < j \leq k < arr.length0≤i<j≤k<arr.length) 。aaa 和 bbb 定义如下:a = arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1]b = arr[j] ^ arr[j + 1] ^ ... ^ arr[k]注意:^ 表原创 2021-05-18 23:30:19 · 242 阅读 · 0 评论 -
Leetcode 1738 找出第 K 大的异或坐标值
题目链接1.确定状态 f[i][j]:f[i][j]:f[i][j]:表示第 iii 行第 jjj 列异或的结果,属性表示权值。2.状态转移方程:f[0][0]=matrix[0][0]f[0][0] = matrix[0][0]f[0][0]=matrix[0][0]f[i][j]f[i][j]f[i][j] = f[i−1][j]f[i-1][j]f[i−1][j] xorxorxor matrix[i][j]matrix[i][j]matrix[i][j] ( 1≤i≤n−11 \leq原创 2021-05-19 20:55:09 · 180 阅读 · 0 评论 -
Leetcode 752 打开转盘锁 BFS
题目链接初始状态:"0000"如果初始状态等于 targrt 的状态,返回 0如果初始状态在终止状态里则返回 -1最后就是进行宽搜 $BFS$,如果能到达目标状态则返回操作次数,否则返回 -1class Solution {public: int openLock(vector<string>& deadends, string target) { string star = "0000"; if(target == star) r原创 2021-06-25 12:26:30 · 127 阅读 · 0 评论 -
Leetcode 1 两数之和
两数之和题目链接题目大意给定一个整数数组 numsnumsnums 和一个目标值 targettargettarget,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。样例解释给定 nums=[2,7,11,15],target=9nums = [2, 7, 11, 15], target = 9nums=[2,7,11,15],target=9因为 nums[0]+nums[1]=2+7=9nums[0原创 2020-12-10 15:17:05 · 114 阅读 · 0 评论 -
Leetcode 474 一和零 二维费用的背包问题
题目链接1.确定状态:f[i][j]f[i][j]f[i][j]:表示最多容纳 iii 个 0,jjj 个 1,属性表示最多容纳的字符串数量。2.状态转移:当 iii 和 jjj 的容量都大于当前字符串中 0 和 1 的数量的时候,当前字符串可以选择,否则不能选,即状态转移 f[i][j]=max(f[i][j],f[i−当前字符串0的数量][j−当前字符串1的数量]+1)f[i][j]=max(f[i][j],f[i-当前字符串0的数量][j-当前字符串1的数量]+1)f[i][j]=max(f[i原创 2021-06-07 18:19:05 · 167 阅读 · 0 评论 -
Leetcode 726 原子的数量
题目链接栈 + mapmapmapclass Solution {public: string countOfAtoms(string s) { stack<string> p,q; map<string,int>mp; for(int i = 0; i < s.size(); i++) { if(s[i] == '(') {原创 2021-07-05 10:17:39 · 148 阅读 · 0 评论 -
Leetcode 65 有效数字
题目链接去掉前后空格,不能是空串e的前后如果是空的则返回falsee的后面不能有 . + - 不能连续出现多余1个,“+” 开头或者e后面e 和点最多出现一次,"+" "e+"也是错误class Solution {public: bool isNumber(string s) { int l = 0, r = s.size() - 1; while (l <= r && s[l] == ' ') l++; w原创 2021-06-17 23:18:52 · 150 阅读 · 0 评论 -
Leetcode 12 整数转罗马数字
题目链接题目大意罗马数字包含以下七种字符:III, VVV, XXX, LLL,CCC,DDD 和 MMM。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 IIIIII ,即为两个并列的 1。12 写做 XIIXIIXII ,即为 XXX原创 2021-05-14 15:38:19 · 225 阅读 · 0 评论 -
Leetcode 1269 停在原地的方案数
题目链接题目大意有一个长度为 arrLenarrLenarrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 stepsstepssteps 和 arrLenarrLenarrLen ,请你计算并返回:在恰好执行 stepsstepssteps 次操作以后,指针仍然指向索引 0 处的方案数。由于答案可能会很大,请返回方案数 模 109+710^9 + 7109+7 后的结果。示例 1输入:s原创 2021-05-13 21:29:25 · 125 阅读 · 0 评论 -
Leetcode 1035 不相交的线
题目链接线性动态规划1.f[i][j]f[i][j]f[i][j]表示 a[i...n]a[i...n]a[i...n] 与 b[j...m]b[j...m]b[j...m] 的最长公共子序列。属性表示最长公共子序列长度。2.状态转移:状态计算只要不影响答案可以重复计算,a[i+1]a[i+1]a[i+1] ~ a[n]a[n]a[n] 与 b[j]b[j]b[j] ~ b[m]b[m]b[m]的最长公共子序列 和 a[i]a[i]a[i] ~ a[n]a[n]a[n] 与 b[j+1]b[j+1原创 2021-05-22 00:00:22 · 144 阅读 · 0 评论 -
Leetcode 483 最小好进制
最小好进制题目大意对于给定的整数 nnn, 如果 nnn 的 kkk(k>=2k>=2k>=2)进制数的所有数位全为1,则称 kkk(k>=2k>=2k>=2)是 nnn 的一个好进制。以字符串的形式给出 nnn, 以字符串的形式返回 nnn 的最小好进制。样例解释输入:"13"输出:"3" 解释:13 的 3 进制是 111。k0+k1+k2+⋯+km=nk^0 +k^1 + k^2 + \dots + k^m = nk0+k1+k2+⋯+km=n放原创 2020-12-13 00:36:21 · 172 阅读 · 0 评论 -
Leetcode 403 青蛙过河
题目链接题目大意一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stonesstonesstones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 111 跳至单元格 222 )。如果青蛙上一步跳跃了 kkk 个单位,那么它接下来的跳跃距离只能选原创 2021-05-01 15:29:06 · 223 阅读 · 0 评论 -
Leetcode 1074 元素和为目标值的子矩阵数量 前缀和
题目链接二维前缀和暴力思路,时间复杂度 O(n2×m2)O(n^2\times m^2)O(n2×m2)class Solution {public: int numSubmatrixSumTarget(vector<vector<int>>& matrix, int target) { int s[110][110]; int n = matrix.size(), m = matrix[0].size(); f原创 2021-05-29 18:39:19 · 185 阅读 · 0 评论 -
Leetcode 137 只出现一次的数字 II
只出现一次的数字 II题目链接题目大意给你一个整数数组 numsnumsnums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1输入:nums = [2,2,3,2]输出:3 示例 2输入:nums = [0,1,0,1,0,1,99]输出:99提示:1≤nums.length≤3∗1041 \leq nums.length \leq 3 * 10^41≤nums.length≤3∗104−231≤nums[i]≤231原创 2021-04-30 20:20:51 · 149 阅读 · 0 评论 -
Leetcode 810 黑板异或游戏 博弈论
题目链接博弈论1.先筛除数据,一个数如果总共出现奇数次,那么就记录该数,存入容器2.预处理:如果符号题意的数异或值等于 0,那么先手肯定赢。3.如果预处理异或值非 0,那么看容器数据的奇偶性,奇数先手输,偶数先手赢。 class Solution {public: bool xorGame(vector<int>& nums) { set<int> s; int cnt = 0; for(auto x :原创 2021-05-22 22:17:55 · 204 阅读 · 0 评论 -
Leetcode 477 汉明距离总和 位运算技巧
文章目录问题导入题目链接BrianBrianBrian KernighanKernighanKernighan 算法记 f(x)f(x)f(x) 表示 xxx 和 x−1x-1x−1 进行与运算所得的结果(即 f(x)f(x)f(x)=xxx & (x−1)(x−1)(x−1)),那么 f(x)f(x)f(x) 恰为 xxx 删去其二进制表示中最右侧的 111 的结果。时间复杂度:O(logC)O(\log C)O(logC),其中 CCC 是元素的数据范围空间复杂度:O(1)O(原创 2021-05-28 22:38:37 · 129 阅读 · 0 评论