- 博客(493)
- 收藏
- 关注
原创 LeetCode - 9 - (整数反转、字符串转整数atoi、二进制距离、整数转罗马数字、最接近的三数之和)
class Solution {public: int reverse(int x) { if(x>INT_MAX||x<-INT_MAX) return 0; // 可能输入的数就超出范围 if(x>-10&&x<10) return x; // 个位数不用反转直接输出 string s; int flag = 0; if(x<0){ // 负数标记一下...
2022-04-24 13:45:37
328
原创 L2-006 树的遍历(中后序确定二叉树&层序遍历)
代码实现:#include<bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 1e5+10;int n, cnt;int bk[N], md[N];map<int, int> pos;struct node{ int lson, rson, val;}tree[N];int build(int la, int lb, ...
2022-04-22 23:25:18
477
原创 L2-005 集合相似度(set判重)
思路:比较水的一个题,但是想通过所有测试点还需要考虑下最大复杂度的情况。代码实现:#include<bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 100;int n, m, x, k;set<int> s[N], tmp;signed main(){ cin >> n; for(int i =...
2022-04-21 17:27:06
274
原创 L2-004 这是二叉搜索树吗?(先序输入&判断搜索二叉树&后序输出)
思路:由于时具有单调性的先序遍历,当出现单调性的结束位置便是左子树 -> 右子树(或右子树 -> 左子树)的转换。参考博客代码实现:#include<bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 1e5+10;int n, a[N], mirror;vector<int> ans;void dfs(int l...
2022-04-21 17:01:25
1040
原创 L2-001 紧急救援 (最短路Dijkstra的扩展 - 最短路径数&路径最大权值)
思路: 菜蒟只会求最短路,不会扩展/(ㄒoㄒ)/~~。参考博客代码实现:#include<bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 510;int n, m, s, d;int ans, u, v, w;int g[N][N], c[N]; //邻接矩阵存边, c[i]表示第i个城市的救援队数量int dis[N], path[...
2022-04-21 12:14:07
254
原创 L2-002 链表去重(测试点1的坑)
思路: 通过map映射先将原链表处理出来,再通过判重将其分成两部分存储输出。注意测试点1有个坑点(原链表不是一条完成的链表,数据如下:)(测试点1)输入:00001 300001 1 0000200002 2 -100003 3 00004(测试点1)输出:00001 1 0000200002 2 -1代码实现:#include<bits/stdc++.h>#define int long long#define endl '...
2022-04-21 12:13:16
1797
6
原创 LeetCode - 8 - (三数之和、Z字形变换、两数之和<链表>、盛最多水的容器、电话号码的字母组合)
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { sort(nums.begin(), nums.end()); set<vector<int>> res; //去重 int n = nums.size(); for(int i = 0; i < n; i +...
2022-04-08 14:13:40
186
原创 LeetCode - 7 - (二叉树的最近公共祖先、轮转数组、二叉树的直径、下一个排列、组合总和)
class Solution {public: TreeNode* ans; bool dfs(TreeNode* root, TreeNode* p, TreeNode* q){ if(root==NULL) return 0; bool lson = dfs(root->left, p, q); bool rson = dfs(root->right, p, q); if((lson&&am...
2022-04-08 13:24:41
205
原创 LeetCode - 6 - (字符串相乘、下一个更大元素<ⅠⅡⅢ>、k个一组翻转链表)
class Solution {public: string multiply(string num1, string num2) { if(num1=="0"||num2=="0") return "0"; int n = num1.size(), m = num2.size(); vector<int> tmp(n+m); for(int i = n-1; ~i; i--){ //相乘计算 ...
2022-04-08 10:32:16
1275
原创 LeetCode - 5 - (重复的子字符串<kmp>、最长回文子串、转置矩阵、二叉树的(左右)视图)
朴素做法:O()class Solution {public: bool repeatedSubstringPattern(string s) { int n = s.size(); for(int i = 1; i <= n/2; i ++){ if(n%i==0){ bool flag = 1; for(int j = i; j < n; j ++){...
2022-04-04 13:19:03
204
原创 LeetCode - 4 - (接雨水、无重复字符的最长子串、分发糖果、二叉树的<前中后层>序遍历)
class Solution {public: int trap(vector<int>& height) { int len = height.size(); if(!len) return 0; vector<int> lmax(len); lmax[0] = height[0]; //记录当前位置左侧最高值 for(int i = 1; i < len; i ++)...
2022-03-29 17:11:35
673
原创 LeetCode -3 - (字符串相加、最大连续1的个数<ⅠⅢ>、考试的最大困扰度、删除链表的倒数第N个结点)
class Solution {public: string addStrings(string num1, string num2) { string ans; if(num1.size()>num2.size()) swap(num1, num2); reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); int tmp...
2022-03-29 15:17:29
399
原创 LeetCode - 2 - (括号生成、最长回文串、环形链表、反转链表、两两交换链表中的节点)
class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode* dummy = new ListNode(0); //开一个动态的链表 dummy->next = head; //表头指向head ListNode* tmp = dummy; while(tmp->next&&tmp->next->next){...
2022-03-29 03:22:36
1068
2
原创 LeetCode - 1 - (树的子结构、组合、螺旋矩阵、全排列<ⅠⅢ>)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool check(TreeNode*...
2022-03-28 21:24:05
1029
原创 L1-071 前世档案 (20 分) (类似二分)
传送门题目描述:思路:照我以前可能就会傻傻的去想怎么实现二叉树…也许是现在思维成熟了点,便能看出其实这就是类似于二分原理的水题。首先能够知道结论的总数,每次"y"和"n"的选择就像二分一样对半砍的操作,所以简单模拟下就行啦!AC代码:#include<bits/stdc++.h>#define int long long#define endl '\n'using namespace std;const int N = 1e5+10;int n, m,...
2022-03-23 09:11:29
1726
3
原创 L1-064 估值一亿的AI核心代码 (20 分) 格式错误
传送门题意: 思路:· 个人思路是先处理原文串a所有空格和大小写变成串b· 再处理串b中的各种替换问题,由于在处理单词替换时虽然先考虑的“I”的替换,但是之后再不会变量到该单词,所以并未出现大家所说的测试点2(can you)的卡顿。·但是特别注意这个题的另外一个坑点,本人就是一直测试点1和测试点4格式错误,后面通过这篇博客的详细讲解才通过了本题。·测试点1:结尾没有标点符号而有多个空格·测试点4:三个空格,要求输出"AI: "即可。AC代码:#inc...
2022-03-19 16:50:46
641
原创 1005 Monopoly 同余求解(2021中国大学生程序设计竞赛CCPC-网络选拔赛重赛)
传送门题意:告诉你一个长度为n的环及每个点的权值,从起点0出发,经过一个点时精力就加上其权值;现问达到精力x需要最少走多少步。思路: ·后面才发现自己赛中的思路是错的:很明显 x = y+ k*sum (y就是一个对应的(pre[j]%sum+sum)%sum,而显然 ans = k*n+j),我是先利用 x/sum求到对应的 k,再判断是否有相应的 pre[j]存在;但是显然这种方法存在错误,因为不管怎样 j<=n 是必然的,所有我们这样求到的 k 肯定是最大k...
2021-10-29 11:20:25
274
原创 Yapi的安装与配置(转载)
在最近的flutter项目中遇到必须使用自定义接口获取数据时遇到了一些问题。这里是关于yapi工具的下载安装及配置的收藏教程,比官网教抽象的教程详细具体多了。b站视频教程 百度网盘资源 提取码:dr97...
2021-08-31 02:53:47
384
原创 1003.VC Is All You Need (思维 / 多维SVM问题)(2021“MINIEYE杯”中国大学生算法设计超级联赛5)
传送门题意:问是否始终能找到一个k-1维的空间能将k维空间中的n个点区分开,n个点只有两种颜色选择。思路:仔细分析,但凡n比k-1大2及以上都无法实现,即n-k>1都不满足。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define l.
2021-08-15 10:38:58
269
原创 1008.Smzzl with Greedy Snake (模拟贪吃蛇) (2021“MINIEYE杯”中国大学生算法设计超级联赛7)
传送门题意:给你贪吃蛇的初始位置以及依次出现的n个食物的坐标位置,'0' '1' '2' '3' 分别表示y轴顺时针表示的四个方向,当前食物被吃掉后才会出现下一食物,因此贪吃蛇必须依次吃掉这n个食物。贪吃蛇无论是向前移动一步还是顺时针/逆时针旋转90°的耗时都是一个时间单位.现需要你找到其最快吃完所有食物的移动方案。'u'表示逆时针旋转90°,'c'表示顺时针旋转90°,'f'表示前进一步。思路:点到点的模拟一下即可,只不过需要注意以下当贪吃蛇的头向和食物为反向时的路径方案最优可以少消耗一个时间..
2021-08-15 10:26:53
297
原创 1009.Singing Superstar (子串数量统计) (2021“MINIEYE杯”中国大学生算法设计超级联赛8)
传送门题意:需要寻找母串s中总共有多少个不相交的子串ai。思路:由于|s|达到1e5,且子串数量n也有1e5的大小,显然不能暴力寻找。再结合子串|ai|最多30的长度,我们可以遍历到s的每个位置时都截取1~30长度的子串,这样复杂度最多O(n*30)再加上一些函数和map的耗时2s也足够了,再利用二维数组统计每个子串的数量。最后需要注意的是,会有重复的ai,于是再利用二维数组统计时需避免重复。代码实现:#include<bits/stdc++.h>#define endl..
2021-08-15 10:14:50
267
原创 H.Happy Number (进制转换/第n个特殊数)(2021牛客暑期多校训练营9 )
传送门题意:寻找第n个只包含 ‘2’ ‘3’ 和 ‘6’的数字。思路:有点类似与二进制,只不过这里是把 n 转换为三进制数 x ,再通过 x 转换为对应的数字。特别需要注意的是 x 中为 0 的位置 其实代表需要向前借一位,再将余下的数对应为相应的数字。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#def..
2021-08-15 10:00:11
318
原创 1001.Calculus(函数收敛性判断)(2021“MINIEYE杯”中国大学生算法设计超级联赛4)
传送门题意:题目要求判断S(x)函数在正无穷是是否收敛,给出S(x)是f(x)的前缀和,而f(x)又是函数集合F中的n个子函数组合而成的,题目t组数据,每次给出f(x)函数,求S(x)的收敛性。思路:由于S(x)需要收敛,于是F集合中具有周期波动性的子函数就不可取,再者S(x)是f(x)的前缀和,于是F中无论是单调还是不单调的子函数甚至常量也是不可取的(0除外)。于是题目就变得很简单了,由于C又是非负的常量,便不会存在子函数的加减相互抵消;我们子需要通过判断是否有除0以外的常量存在即可。代码
2021-07-29 23:58:32
399
原创 1009.License Plate Recognition(思维 / 线性扫描 / 标记汉字边界)(2021“MINIEYE杯”中国大学生算法设计超级联赛4)
传送门题意: 每次给出一张30*100的矩阵,其中"#"表示车牌字迹部分,"."表示黑色背景。现需要你找到7个字的左右边界。思路:直接一列一列扫描判断边界即可,但是注意有一个坑——第一个汉字像"川"在这种方法下分别会有三个左右边界,于是在输出的时候对应找到汉字真正的左右边界即可。代码实现:#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#...
2021-07-29 23:39:38
248
原创 1002.Kanade Loves Maze Designing(路径上的边种类数 / dfs暴力搜索) (2021“MINIEYE杯”中国大学生算法设计超级联赛4)
传送门题意:一个无向树形图上每个点都有其自己的权值 c[i], 给出第 i(2<=i<=n) 个点直接相连的点 p[i],现在需要求 f(i, x)的值并分别对1e9+7和1e9+9取模输出答案。思路:建立无向图后,每次以第 i 个点为根节点进行暴搜,得到a[i][j]的值,然后再求对应的 f(i, x)即可。暴搜时复杂度为 O(n*(n-1)),结果处理时复杂度O(n^2),题目5000的数据范围是能够通过滴。代码实现:#include <cstdio>..
2021-07-29 23:27:35
223
原创 A. Alice and Bob (博弈?思维&暴力)(2021牛客暑期多校训练营1)
传送门题意:Alice先手,与Bob轮流进行拿石子操作,每次从一堆石子中拿出 k(k>0) 颗石子则从另外一堆拿出 k*s(s>=0) 颗石子。谁无法进行操作谁输掉比赛。思路:说实话是不怎么知道这个博弈该怎么写的,听说赛中许多人都是打表过的这题(就很绝)。赛后看其他大佬题解才知道这个题其实是可以暴力卡过去的。我们初始化标记 f[i][j] ==1 表示初始两堆石子为 i和j 时为必赢态,反之为必输态。然后我们枚举 i 和j,再分别枚举 k和s 处理 f[i+k][j+k*s] .
2021-07-29 11:29:39
340
原创 1007.Photoshop Layers (十六进制 / 前缀和)(2021“MINIEYE杯”中国大学生算法设计超级联赛3)
传送门题意: 有n层具有颜色涂层,其颜色由Ri, Ci,Bi三个指标对应6个长度的16进制数表的。现问你 [li, ri]区间涂层的颜色重叠在一起是什么颜色。重叠规则如下: * 若第i层的 wi==1,那么它只会显示自己的颜色(Ri,Gi,Bi)。 * 若第i层的 wi==2,那么它的颜色就是自身与先前层次的颜色和(min(Rp+Ri,255),min(Gp+Gi,255),min(Bp+Bi,255),颜色会有上限255。针对 p 次询问回答每个区间最后的颜色是什么。...
2021-07-27 18:26:32
287
原创 F. Find 3-friendly Integers (特殊数字 / 找规律) (2021牛客暑期多校训练营1)
传送门题意:将每个数看作一个字符串的话,如若其任何一个子串的十进制数对 3 取模为 0 的话,则这个数为 3-friendly 数字。现需要你找到区间 [L,R]中有多少个这样的数字。思路:通过寻找规律不难发现,当数字上升到三位数时就都是 3-friendly 数字了;因此我们只需要预处理出 [1,100] 中的非3-friendly数即可。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NU.
2021-07-24 10:52:19
631
原创 B. Ball Dropping (简单几何计算 / 相似三角形) (2021牛客暑期多校训练营1)
传送门题意: 给出如图所示的梯形柱和球的 a, b, h, r ,试问该球体是否能成功掉出柱体,若无法掉落则计算出其球星距柱体底面的距离 ?思路:简单的利用三角形的相似就能推算出来了。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int&g...
2021-07-24 10:38:56
300
原创 D. Determine the Photo Position (简单找子串)(2021牛客暑期多校训练营1)
传送门题意:在 n*n 的字符矩阵中的每一行找出能把 m 长由 '2' 组成的字符串放入的位置数('0' 的位置表示空缺可填补)。思路: 简单遍历每一行记录一下即可。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lo...
2021-07-24 09:58:12
292
原创 换根dp(啊啊啊啊啊)
传送门思路: * 首先就是常规的dfs求根节点到其他所有点的距离和。如若x为根节点,y为x的直系子节点,那么y所在子树对x的贡献为dis[y]+cnt[y],dis[y]为y到以y为根节点的所有子树节点的距离和,cnt[y]为y做根节点的所有子树节点数。 * 再进行换根dp处理。在将根节点从x移动到y的时候,dp[y] = dp[x]-cnt[y]+(n-cnt[y);其中的-cnt[y]是将以y引申出来的cnt[y]条路径都-1,而+(n-cnt[y])是将从x引申出来的不...
2021-07-09 15:04:20
253
原创 pip一直更新失败?多数是网络问题!
连接超时,在国内找个镜像服务器就解决了python-mpipinstall--upgradepip-ihttps://pypi.douban.com/simple
2021-06-03 19:54:04
577
原创 I.Jam-packed (均分/最大最小值) (2021年度训练联盟热身训练赛第五场)
传送门题意:有 n 罐果酱和无限的箱子,每个箱子最多装k罐果酱,现让你对这些果酱进行装修,试问箱子重果酱的最大最小值为多少。思路:即要保证装箱数最少的同时,尽量均分的装入。如果n罐果酱正好能装满所有箱子(即n%k==0),则答案即为k;否则必定至少需要 n/k +1个箱子,又由于果酱不能浮点化,答案即为 n/(n/k+1)。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define
2021-05-07 01:41:03
1991
1
原创 A.Binary Seating (概率) (2021年度训练联盟热身训练赛第五场)
传送门题意:n个人可以选择进或不进你负责的教室进行考试,他们考试需花的时间分别是,该教室所有人完成考试后你才能回家,现让你求回家时间的期望值。思路:先将时间序列进行降序排列;考试总时间为的概率为1/2;考试总时间为的概率为一号选手不选择该教室,二号选手选择该教室,即1/4;考试总时间为的概率为一二号选手都不选择该教室,三号选手选择该教室,即1/8;因此考试总时间为的概率为,期望即为。代码实现:#include<bits/st...
2021-05-07 00:54:56
263
原创 E.Figure Skating (字符串排序/签到) (2021年度训练联盟热身训练赛第五场 )
传送门题意:给出n个人的历史排名成绩和现在排名成绩,如果有人进步就输出进步最大的人名,否则输出"suspicious"。思路: 1.可以结构体排序写 2.也可直接标记前后排名情况,如果没有一点改变就是可疑,否则必定有进步的人,找出进步最大者即可。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long.
2021-05-07 00:16:13
320
原创 C.Ducky Debugging(简单判断/签到)(2021年度训练联盟热身训练赛第五场 )
传送门题意:这是一个简单的判断交互题,用getline()输入带空格的一整行字符串,如果最后是"?"结尾就输出“Quack!”,如果是"."结尾就输出“*Nod*”。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define l
2021-04-30 00:08:13
196
原创 B.Cutting Corners (简单几何/签到)(2021年度训练联盟热身训练赛第五场)
传送门题意:让求直角三角形两直角边的和与斜边的差值,告诉你两条直角边的值。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(x) (x &(-x))#define ls(x) x<<1#d
2021-04-30 00:00:01
278
原创 HDU 6206 Apple (计算几何_三点求圆 & 高精度浮点数 & Java大数_BigDecimal)
传送门题意:确定第四个点是否在前三个点形成的圆以外,若是输出"Accepted",否则输出"Rejected"。思路:这里应用其他大佬的证明过程(截图偏于保存,细则可移步查看)。有了圆心 (,),再带入任意一点便能求得半径值了。但是由于这个题的精度爆double,于是采取Java的大数BigDecimal来求解,这里先展示C++的代码思路结构。C++代码实现:#include<bits/stdc++.h>#define endl '\n'#def
2021-04-20 20:49:47
260
原创 A. Weird Flecks, But OK (计算几何&三维最小圆覆盖)(2021年度训练联盟热身训练赛第一场)
传送门题意:一个三维立方体中有 n 个瑕疵点,现希望能从某个平面垂直向下切一个圆能把所有瑕疵都去除,需要找到这个一次能去除所有点的最小圆直径,即找到三个维度上的最小圆覆盖。思路:比常规的最小圆覆盖多了一个维度,分三个方向求解三次取最小答案即可。代码实现1:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long
2021-04-20 00:56:09
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅