习题
文章平均质量分 50
记录做过的题目,创建于 2020 年 12 月 15 日,之前做过的题目无法一一转移到这里。
SP FA
我永远喜欢洛天依
展开
-
力扣 875. 爱吃香蕉的珂珂
这是一道披着二分外衣的数学题。通过这道题学会了一个关于精度方面的小技巧:由题意可知,我们如果想算吃 piles[i]piles[i]piles[i] 所用的时间,可以通过 ⌈piles[i]mid⌉\lceil\frac{piles[i]}{mid}\rceil⌈midpiles[i]⌉ 来计算,其中 midmidmid 是二分的时候的中值。但这样在数字很大时会涉及到精度的问题,如 piles[i]=1000000000piles[i]=1000000000piles[i]=1000000000,mid原创 2022-06-07 22:42:42 · 162 阅读 · 0 评论 -
力扣 540. 有序数组中的单一元素
二分,又是二分。这里借鉴一下宫水三叶大佬的题解吧。由于给定数组有序 且 常规元素总是两两出现,因此在单一元素之前,我们有结论:成对元素中的第一个所对应的下标必然是偶数,成对元素中的第二个所对应的下标必然是奇数。而在单一元素之后,结论是相反的。由此我们可以进行二分:class Solution { public int singleNonDuplicate(int[] nums) { int n = nums.length; int l = 0, r = n -原创 2022-02-14 15:10:26 · 187 阅读 · 0 评论 -
力扣 407. 接雨水 II
题目链接首先要知道一点:这个矩阵的边缘是无法接水的,如果我们设 water[i][j]water[i][j]water[i][j] 是 (i,j)(i, j)(i,j) 点水的高度,那么对于矩阵边缘来所,water[i][j]=heightMap[i][j]water[i][j]=heightMap[i][j]water[i][j]=heightMap[i][j],接到水的体积就是 water[i][j]−heightMap[i][j]=0water[i][j]-heightMap[i][j]=0wate原创 2021-11-04 11:29:48 · 221 阅读 · 0 评论 -
力扣 4. 寻找两个正序数组的中位数
好久不做题,脑子都木了题目链接这道题需要有技巧的二分首先确认一下中位数的含义:表示在有序数列中处于中间位置的数,于是有两个性质:位于中位数左右两侧的数应该满足 数量相等 这一要求。LeftMax < RightMin,也就是左侧最大的数要小于右侧最小的数。现在我们有两个数组 AAA 和 BBB,如果我们在 AAA 数组查找到了第 iii 个数,那么为了满足 数量相等 条件,BBB 数组中的查找位置 jjj 是可以确定的,也就是 j=m+n+12−ij=\frac{m+n+1}{2}-i原创 2021-11-02 12:51:32 · 129 阅读 · 0 评论 -
洛谷【P1034】[NOIP2002 提高组] 矩形覆盖
题目链接练搜索的好题。按一般思路来说,应该是按每一个矩形搜索,分别判断它会覆盖哪些点。当所有矩形都用完,并且覆盖了所有的点时,再判断矩形之间有没有遮挡,此时就得出了一个可能的解。但这样包含了大量的无效情况,因为在大多数情况下矩形用完时不能覆盖所有的点,因此大大浪费了时间。 用这种方法会 TLE 。所以要换一个思路,想要去掉这些无效的情况,我们就需要按点进行搜索。对于某一个点,我们枚举它会被放到哪个矩形里,这样每次搜索到树根时矩形一定包含了所有的点,之后只需要判断矩形有没有互相遮挡就好了。#inc原创 2021-03-03 11:33:03 · 723 阅读 · 0 评论 -
力扣 153. 寻找旋转排序数组中的最小值
题目链接一道大水题,其实 O(n) 遍历就可以过,非常的简单。class Solution {public: int findMin(vector<int>& nums) { int ans = nums[0]; int len = nums.size(); for(int i=1;i<len;i++){ ans = min(ans, nums[i]); } }};原创 2021-02-02 11:53:49 · 145 阅读 · 0 评论 -
洛谷【P4368】[Code+#4]喵呜
题目链接我们可以把这一排樱花树看成棋盘,这样看起来好像有点像马走日,但暴力肯定会 TLE 。这时我们注意到题目要求小猫走到四个角上,而每一步移动的距离是知道的,那么我们可以考虑用数学来做这道题。首先,由于每次移动的距离是固定的,所以不能被移动距离整除的肯定不对,即:if(x%a!=0 || y%b!=0) return INF;满足这一个条件后我们再往下考虑:首先建立坐标系,我们发现小...原创 2020-01-28 00:02:22 · 160 阅读 · 0 评论 -
洛谷【P4470】[BJWC2018]售票
题目链接这道题其实很简单,数据范围也不大,直接暴力 DFS 就可以了。但是我想试一试字典树。但是要注意的是,由于每个字符串可以到达 100 个字符,最多共有50个字符串,所以变量 tot 和 u 最坏可以到达 50*100 = 5000 ,所以 trie 数组的第一维要开大一些。#include <stdio.h>#include <string.h>#inclu...原创 2020-01-25 21:11:27 · 325 阅读 · 0 评论 -
洛谷【P2781】传教
题目链接读完题后:哎线段树水题呀!再一看数据范围:好像哪里不对劲。。。其实这道题并不难,因为 m 值很小,所以可以用 O(n2)O(n^2)O(n2) 的算法直接过。对于每个 1 操作,把它记下来。对于每个 2 操作,将之前所有记录的区间与 2 操作取个交集就 ok 了。当然也可以把 2 操作也记下来,对于下一个 2 操作,只需从上一个 2 处往后依次取交集就好。 这样能优化一点时间复杂度...原创 2020-01-22 22:02:12 · 187 阅读 · 0 评论 -
洛谷【P2865】[USACO06NOV]路障Roadblocks
洛谷【P2865】[USACO06NOV]路障Roadblocks题目链接这是一道次短路模板题。作为一名 SPFA 信仰选手我决定用 SPFA 来解决这道题。首先呢,思路还算简单,整个程序就是分别从节点 1 和 n 跑一遍最短路,然后进行判断。如何判断,是本题的重点。我们可以枚举每一个点分别到 1 和 n 的最短路之和,对所有点求一个次小值(最小值就是最短路),就是次短路,即:dis1[...原创 2020-01-21 23:20:00 · 251 阅读 · 0 评论