- 博客(170)
- 收藏
- 关注
原创 [AtCoder Beginner Contest 396] E - Min of Restricted Sum
【代码】[AtCoder Beginner Contest 396] E - Min of Restricted Sum。
2025-03-09 15:41:18
186
原创 [AtCoder Beginner Contest 396] F - Rotated Inversions
【代码】[AtCoder Beginner Contest 396] F - Rotated Inversions。
2025-03-09 13:33:55
210
原创 倍增的常见应用(求区间最大值)
给定一个长度为N的数组a,并做M次区间查询,询问区间[L, R]的最大值,并且a[i](1 <= i <= N)的值在此过程中不会发生改变,使用倍增的方法可以提供 O(NlogN) 的预处理时间复杂度、O(1) 的查询时间复杂度。- 1] 的最大值,f[i + (1 << j - 1)][j - 1] 表示的是区间 [i + 2。- 1]的最大值,再将两个区间的最大值取一个最大值,即可得到区间[i, i + 2。事实上f[i][j - 1]表示的是区间 [i, i + 2。
2025-01-22 11:13:15
760
原创 树状数组常见应用
数组a的前缀和: S = a。2、求出某区间每一个数的和。1、将某区间每一个数加上x。1、将某区间每一个数加上x。2、求出某区间每一个数的和。则在代码中S可表示为(1、将某一个数加上x。2、求出某一个数的值。
2025-01-14 08:00:47
850
原创 AtCoder Beginner Contest 357 C - Sierpinski carpet
【代码】AtCoder Beginner Contest 357 C - Sierpinski carpet。
2024-06-13 23:59:02
529
原创 AtCoder Beginner Contest 146 C - Buy an Integer
Time Limit: 2 sec / Memory Limit: 1024 MBScore : 300 pointsTakahashi has come to an integer shop to buy an integer.The shop sells the integers from 1 through 10910^9109. The integer N is sold for A×N+B×d(N) yen (the currency of Japan), where d(N) is the nu
2024-04-24 01:39:30
1065
1
原创 6266. 使用质因数之和替换后可以取到的最小值
注意,如果 n 能够被某个质因数多次整除,则在求和时,应当包含这个质因数同样次数。8 = 2 * 2 * 2 ,所以 n 替换为 2 + 2 + 2 = 6。15 = 3 * 5 ,所以 n 替换为 3 + 5 = 8。6 = 2 * 3 ,所以 n 替换为 2 + 3 = 5。请你将 n 的值替换为 n 的 质因数 之和,重复这一过程。解释:最开始,n = 15。5 是 n 可以取到的最小值。3 是 n 可以取到的最小值。返回 n 可以取到的最小值。解释:最开始,n = 3。
2022-12-18 21:00:01
628
原创 2022 CCF CSP-J2 解密
给定一个正整数 k,有 k 次询问,每次给定三个正整数。第一行一个正整数 k,表示有 k 次询问。接下来 k行,第 i 行三个正整数。为使输出统一,你应当保证。
2022-11-09 02:13:42
747
原创 AcWing 4612. 去掉0
我们希望字符串中的所有 1 能够形成一个连续的子串,例如,字符串 0、1、00111、01111100 均满足此条件,而字符串 0101、100001、11111111111101 均不满足此条件。你可以从字符串中删除一些(也可以不删)0,使得字符串满足上述条件。每组数据输出一行结果,一个整数,表示必须删除的最小 0 数量。给定一个字符串 s,其中的每个字符要么是 1,要么是 0。所有测试点满足 1≤T≤100,1≤|s|≤100。请问,你必须删除的最小 0 数量是多少。
2022-09-15 23:40:54
233
原创 2047. 句子中的有效单词数
如果一个token同时满足下述条件,则认为这个token是一个有效单词仅由小写字母、连字符和/或标点(不含数字)组成。至多一个连字符‘-’。如果存在,连字符两侧应当都存在小写字母(“a-b”是一个有效单词,但“-ab”和“ab-”不是有效单词)。至多一个标点符号。如果存在,标点符号应当位于token的末尾。这里给出几个有效单词的例子”和“!”。给你一个字符串sentence,请你找出并返回sentence中有效单词的数目。......
2022-07-16 18:52:53
194
原创 5219. 每个小孩最多能分到多少糖果
题目描述给你一个 下标从 0 开始 的整数数组 candies 。数组中的每个元素表示大小为 candies[i] 的一堆糖果。你可以将每堆糖果分成任意数量的 子堆 ,但 无法 再将两堆合并到一起。另给你一个整数 k 。你需要将这些糖果分配给 k 个小孩,使每个小孩分到 相同 数量的糖果。每个小孩可以拿走 至多一堆 糖果,有些糖果可能会不被分配。返回每个小孩可以拿走的 最大糖果数目 。示例 1:输入:candies = [5,8,6], k = 3输出:5解释:可以将 candies[1] 分
2022-04-03 15:27:17
230
原创 蓝桥杯A组 迷宫
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。下图给出了一个迷宫的平面图,其中标记为 11 的为障碍,标记为 00 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按 DRRURRDDDR 的顺序通过迷宫, 一共 1010 步。其中 D、U、L、RD、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的
2022-03-31 01:34:26
158
原创 C - Collision 2
题目描述题目链接C++代码#include<bits/stdc++.h>using namespace std;#define fi first#define se second#define pb push_backtypedef long long LL;typedef pair<int, int> PII;unordered_map<int, vector<pair<int, char>>> point;int
2022-03-15 21:13:31
552
原创 两整数之和
题目描述给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5提示:-1000 <= a, b <= 1000C++代码class Solution {public: int getSum(int a, int b) { if(! a) return b; int sum = (a ^ b), ca
2022-03-11 20:08:20
1315
1
原创 C - 1111gal password
题目描述题目链接C++代码#include<bits/stdc++.h>using namespace std;const int N = 1e6 + 10;const int mod = 998244353;int f[N][11];int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; for(int j = 1; j <= 9; j ++
2022-03-06 20:29:39
1567
原创 713. 乘积小于K的子数组
给定一个正整数数组 nums和整数 k 。请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。示例 2:输入: nums = [1,2,3], k = 0输出: 0提示:1 <= nums.leng
2022-03-04 20:24:39
312
原创 560. 和为 K 的子数组
题目描述给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数。示例 1:输入:nums = [1,1,1], k = 2输出:2示例 2:输入:nums = [1,2,3], k = 3输出:2提示:1 <= nums.length <= 2 * 10410^4104-1000 <= nums[i] <= 1000-10710^7107 <= k <= 10710^7107C++代码class Solu
2022-03-04 19:28:56
342
原创 D - Sequence Query
题目描述题目链接思路Online Solution使用STL中的multisetC++代码#include<bits/stdc++.h>using namespace std;using LL = long long;multiset<LL> S;int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int tt; cin >> tt; while(tt --){ i
2022-02-28 13:42:54
254
原创 LeetCode 318. 最大单词长度乘积
给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。示例 1:输入:words = [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]输出:16解释:这两个单词为 “abcw”, “xtfn”。示例 2:输入:words = [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“abcd”]输出:4解释:这
2022-02-23 16:05:20
242
原创 AtCoder C - Jumping Takahashi
题目描述题目链接C++代码#include<bits/stdc++.h>#define pb push_back#define rep(i, a, b) for(int i = a; i < b; i ++)#define REP(i, a, b) for(int i = a; i <= b; i ++)#define fi first#define se second#define mp make_pair#define SZ(x) ((int)(x).size
2022-02-21 00:08:47
711
原创 802. 找到最终的安全状态
题目描述题目链接C++代码#define pb push_backclass Solution {public: vector<int> eventualSafeNodes(vector<vector<int>>& graph) { int n = graph.size(); vector<vector<int>> g(n); vector<int> d(n);/
2022-02-20 14:40:46
255
原创 112. 路径总和
题目描述题目链接C++代码class Solution {public: bool hasPathSum(TreeNode* root, int sum) { if(! root) return false; if(! root -> left && ! root -> right) return root -> val == sum; if(root -> left && hasPat
2022-02-20 10:52:33
369
原创 C. digitnum
题目描述题目链接C++代码#include<bits/stdc++.h>using namespace std;using LL = long long;const int mod = 998244353;LL Pow(LL n, int k){ LL res = 1; while(k){ if(k & 1) res *= n; k >>= 1; n *= n; } return res;}void solve(LL n){ str
2022-02-20 03:19:31
428
原创 E - Subtree K-th Max
题目描述题目链接C++代码#include<bits/stdc++.h>#define pb push_backusing namespace std;const int N = 1e5 + 10;vector<int> e[N], ans[N]; vector<int> X(N);void dfs(int u, int fa){ vector<int> order; order.pb(X[u]); for(auto it : e[
2022-02-20 00:35:34
496
原创 2165. 重排数字的最小值
给你一个整数 num 。重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零。返回不含前导零且值最小的重排数字。注意,重排各位数字后,num 的符号不会改变。示例 1:输入: num = 310输出: 103解释: 310 中各位数字的可行排列有:013、031、103、130、301、310 。不含任何前导零且值最小的重排数字是 103 。示例 2:输入:num = -7605输出:-7650解释:-7605 中各位数字的部分可行排列为:-7650、-6705、-
2022-02-17 15:22:09
451
原创 红与黑(BFS解法)
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入格式输入包括多个数据集合。每个数据集合的第一行是两个整数 W 和 H,分别表示 x 方向和 y 方向瓷砖的数量。在接下来的 H 行中,每行包括 W 个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:红色的瓷砖;3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合
2022-02-13 16:35:15
192
原创 1716. 计算力扣银行的钱
Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。示例 1:输入:n = 4输出:10解释:第 4 天后,总额为 1 + 2 + 3 + 4 = 10 。示例 2:输入:n = 10输出:37解释:第 10 天后,总额为 (1 + 2 + 3 + 4 + 5
2022-02-13 11:15:32
242
原创 1863. 找出所有子集的异或总和再求和
一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 = 1 。给你一个数组 nums ,请你求出 nums 中每个 子集 的 异或总和 ,计算并返回这些值相加之 和 。注意:在本题中,元素 相同 的不同子集应 多次 计数。数组 a 是数组 b 的一个 子集 的前提条件是:从 b 删除几个(也可能不删除)元素能够得到 a 。示例 1:输入:nums = [1,3]输出:6
2022-02-08 15:10:26
822
原创 1518. 换酒问题
小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。示例 1:输入:numBottles = 9, numExchange = 3输出:13解释:你可以用 3 个空酒瓶兑换 1 瓶酒。所以最多能喝到 9 + 3 + 1 = 13 瓶酒。示例 2:输入:numBottles = 15, numExchange = 4输出:19解释:你可以用 4 个空酒瓶
2022-02-08 12:47:13
481
原创 1544. 整理字符串
给你一个由大小写英文字母组成的字符串 s 。一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件:若 s[i] 是小写字符,则 s[i+1] 不可以是相同的大写字符。若 s[i] 是大写字符,则 s[i+1] 不可以是相同的小写字符。请你将字符串整理好,每次你都可以从字符串中选出满足上述条件的 两个相邻 字符并删除,直到字符串整理好为止。请返回整理好的 字符串 。题目保证在给出的约束条件下,测试样例对应的答案是唯
2022-02-04 13:08:25
114
原创 1588. 所有奇数长度子数组的和
题目描述给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[1,4,2,5,3] = 15我们将所有值求和得到 1 + 4 + 2 +
2022-01-12 14:48:31
331
原创 A. Robot Cleaner
Problem StatementA robot cleaner is placed on the floor of a rectangle room, surrounded by walls. The floor consists of n rows and m columns. The rows of the floor are numbered from 1 to n from top to bottom, and columns of the floor are numbered from 1 t
2022-01-11 22:28:06
472
转载 1854.人口最多的年份(LeetCode)
题目描述给你一个二维整数数组 logs ,其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足:x 在闭区间 [birthi, deathi - 1] 内。注意,人不应当计入他们死亡当年的人口中。返回 人口最多 且 最早 的年份。示例1:输入:logs = [[1993,1999],[2000,2010]]输出:1993解释:人口最多为 1 ,而 1993
2022-01-08 01:20:40
3746
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人