- 博客(73)
- 收藏
- 关注
原创 十四天算法快速入门第十四天之「位运算」
运用异或的性质即可。举例:2^3^4^2^3 等价于 2^2^3^3^4 等价于 0^0^4,结果为4。设置从右往左截取n的每一位(32次)再加入到i中即可。
2022-10-31 18:54:43
301
原创 十四天算法快速入门第十三天之「位运算」
目录题目一:231. 2 的幂 题目描述:题目分析:题解代码:题目二:191. 位1的个数题目描述:题目分析:题解代码: 题目二:191. 位1的个数题目描述:
2022-10-14 12:49:57
344
原创 十四天算法快速入门第十一天之「递归 / 回溯」
目录题目一:77. 组合 题目描述:题目分析:题解代码:题目二:46. 全排列 题目描述:题目分析: 题解代码:题目三:784. 字母大小写全排列 题目描述: 题目分析:题解代码: 题目二:46. 全排列 题目描述:题目三:784. 字母大小写全排列 题目描述:
2022-10-04 23:40:18
159
原创 十四天算法快速入门第十天之「递归 / 回溯」
目录题目一:21. 合并两个有序链表 题目描述:题目分析:题解代码: 题目二:206. 反转链表题目描述:题目分析: 题解代码: 题目二:206. 反转链表题目描述:
2022-10-02 18:40:45
358
原创 十四天算法快速入门第九天之「广度优先搜索 / 深度优先搜索」
时,也就是当前位置在ret内记录的距离大于上一步的位置在ret内记录的距离时,,保证为最短距离,每一个位置拓展完后再出队即可。ret数组记录mat数组里每个数到0的最短距离。,以此类推,最后再判断有无新鲜的橘子即可。这题运用BFS可以求解,我们可以先创建一个。取上一步的位置在ret内记录的距离再+1。对mat中的每一个0依次入队。经典BFS问题,先将所有。(不小于m*n),接着。,再逐一将其上下左右。
2022-09-29 11:22:16
453
原创 [力扣]34. 在排序数组中查找元素的第一个和最后一个位置
先运用二分找到元素的位置,若没找到返回{-1,-1},找到后再判断这个元素存在 1 个还是 2 个,若为 2 个,再判断刚刚所找到的元素是在左边的元素还是在右边的元素即可。
2022-09-21 13:36:06
192
原创 十四天算法快速入门第八天之「广度优先搜索 / 深度优先搜索」
首先是判断两种指向NULL的情况,树为空或者节点无孩子。其次再进行孩子节点next指针的连接,详细过程见代码注释。这里我们将一棵二叉树合并到另一棵上即可,详细过程见代码注释。
2022-09-17 12:43:14
256
原创 十四天算法快速入门第七天之「广度优先搜索 / 深度优先搜索」
这题使用深度优先遍历的方法,先考虑边界等问题,再进行遍历并记录遍历过的岛屿,最后求岛屿的最大面积即可。这题运用深度优先遍历(广度也可)即可求解,先判断停止遍历的情况,再进行深度优先遍历即可。
2022-09-14 13:56:38
295
原创 十四天算法快速入门第六天之「滑动窗口」
即可,对于会有连续的字符串相同但字符顺序不同的情况,使用。1 位,使得 j - i + 1 (即当前。这题的方法是运用双指针滑动窗口,先用一个。这题我们使用 s1 的字符串在 s2 里。记录字符串每个字符的出现次数。...
2022-08-29 11:03:34
239
原创 十四天算法快速入门第五天之「双指针」
目录题目一:876. 链表的中间结点 题目描述:题目分析:题解代码:题目二:19. 删除链表的倒数第 N 个结点 题目描述:题目分析:题解代码: 题目二:19. 删除链表的倒数第 N 个结点 题目描述:...
2022-07-05 12:14:30
179
1
原创 十四天算法快速入门第三天之「双指针」
目录题目一:283. 移动零 题目描述:题目分析:题解代码:题目二:167. 两数之和 II - 输入有序数组 题目描述:题目分析:题解代码: 题目二:167. 两数之和 II - 输入有序数组 题目描述:
2022-06-16 18:54:29
220
原创 十四天算法快速入门第二天之「双指针」
文章目录题目一:977. 有序数组的平方题目描述: 题目分析:题解代码:题目二:189. 轮转数组题目描述:题目分析:题解代码:题目二:189. 轮转数组题目描述:我们用示例1为例子来展现这个方法:...
2022-06-10 18:07:19
273
原创 十四天算法快速入门第一天之「二分查找」
写在前面:本文题单均来自力扣的算法刷题计划,开这个系列主要是以题目与题解的形式对一些常见、常用算法进行归类和总结,希望在促进自己学习的同时也能帮助到看到这篇文章的大家。另外,本文并非一天一更~...
2022-06-04 11:44:05
409
5
原创 [洛谷]P1910 L国的战斗之间谍
题目信息:题目分析:这题是二维背包,由题意知我们选出的所有间谍的伪装能力值不能超过m,且我们手头上的钱有限,即我们选出的所有间谍的工资和不能超过我们的钱数x,于是便可以推出状态转移方程:d [ j ] [ k ] = max ( d [ j ] [ k ] , d [ j - b [ i ] ] [ k - c [i ] ] + a [ i] )也就是拿到的资料的最大值题解代码:#include<bits/stdc++.h>using namespace s...
2022-05-30 19:44:01
241
原创 经典贪心问题之圣诞老人的礼物
目录题目信息:题目分析:题解代码:题目信息: 注:4指一共有四箱糖果,15指雪橇共能带走的最大重量为15,接下来输出4行,每行两个数据,第一个数据指这箱糖果的价值,第二个数据指这箱糖果的重量。题目分析:这是一道很典型的贪心问题,因为要带走的糖果价值总和最大,且注意可以拆分成散装带走,也就是说当装了整箱糖果后,若剩下的空间不足以再装下一整箱糖果,可以拆分来装,固这题我们首先要求的就是每箱糖果价值与重量的比值,最大的先装,以此类推,到最后装不满一箱时再拆分。...
2022-05-27 21:22:24
849
原创 [洛谷]P1097 [NOIP2007 提高组] 统计数字
这题需要注意100%的数据最大可能达到200000,所以我们创建一个数组 a[200005] 来存它们,由于每个数占一个位置,所以直接用sort排序后相同的数便连续地存在数组里了,接着只需要用一个循环来判断数组里的第i项与第i-1项是否相等即可,若是相等的,数量加1;若不相等,则输出这个数和此时的数量,再让数量归1即可。由于最后输出的是第n-1项,最后再输出第n项即可。代码如下:#include <bits/stdc++.h>using namespace std;typed...
2022-05-24 15:04:51
486
原创 [洛谷]P2525 Uim的情人节礼物·其之壱
这题我们只需要判断当前这个序列是否存在上一个字典序即可,这里可以用到一个叫做prev_permutation(a,a+n)的一个函数,它可以用来输出上一个序列,所以只需要用它判断一下是否存在上一个字典序即可,存在就输出它,否则输出ERROR。代码如下:#include <bits/stdc++.h>using namespace std;int main(){ int n,a[10000]; cin>>n; for(int i=0;i<n;i++) ..
2022-05-21 13:52:21
158
原创 一篇文带你了解BFS迷宫问题
假如有这么一个迷宫,1代表可走的路,1以外的数字代表墙,这里墙就是2,那么我们从左上的星星标志出发,要走到右下方的星星标志处,最短要走多少步?这种类型的题目便可以使用BFS来解决,步骤共分三步,首先我们创建一个队列并让起点入队(此时起点便为队首元素);第一步:从队首元素处向它下一步能到达的上下左右四个方向拓展;第二步:将能走的地方分别入队(走过的便不再走);第三步:让队首元素出队(这时队列的第二个元素便成了队首元素);接下来重复一二三步即可,直到队列为空或者走到了终点便结束,此时记录
2022-05-18 17:07:40
633
6
原创 [洛谷]P4702 取石子
由于每次就取走一个石子,仔细想想其实就是看这堆石子是奇数还是偶数,是奇数就是Alice赢,否则是Bob赢,然后在判断奇数、偶数的问题上可以使用位运算,让这个数&1,看结果是0还是1,是1则说明这个数的最后一位也是1,这个数就是奇数,否则是偶数,不太会位运算的可以看看深入理解计算机系统这本书,里面有详细解释,使用位运算的原因呢也是因为它速度快,在快速幂模板中有同样的运用。所以很快得出代码:#include <bits/stdc++.h>using namespace std..
2022-05-16 10:21:04
394
原创 [洛谷]P3353 在你窗外闪耀的星星
这题使用前缀和即可求解,毕竟是求某个数组的某个固定范围内和的最大值,但值得注意的是,某个位置可能会有多个星星叠加,所以亮度也是要累计的,且这里的长度1应该是指1这个位置所占的长度,比如窗的宽度是3,即可包含1,2,3三个数字,而不是算它们的间隔。代码如下:#include <bits/stdc++.h>using namespace std;int main(){ int n,w,x,b; int a[100005]={0},aa[100005]={0},maxo=0,...
2022-05-15 15:15:29
299
原创 [洛谷]P1095 [NOIP2007 普及组] 守望者的逃离
这题只需要规定时间t内移动的距离大于或等于到出口的距离s即可成功,否则失败。所以我们按秒来,每一秒跑步和瞬移都一起进行:在每一秒中,跑步的当然不会一直跑而不使用瞬移,所以当这一秒里瞬移后的距离大于了跑步的距离,我们便将跑步的换成瞬移的距离,表明魔法值够先瞬移;瞬移的则是魔法值够10点,就进行一次瞬移,若不够10点,则在这一秒钟待在原地恢复;若在规定时间内有一种方法的移动距离大于或等于到出口的距离s即可输出Yes和当前时间i,否则输出No和最远距离(由于经过替换,最远距离始终是跑步的距离,直接输出跑...
2022-05-12 11:22:41
356
原创 [洛谷]P3951 [NOIP2017 提高组] 小凯的疑惑 / [蓝桥杯 2013 省] 买不到的数目
题解不好说。#include <bits/stdc++.h>using namespace std;int main(){ long long a,b; cin>>a>>b; cout<<a*b-a-b<<endl; return 0;}
2022-05-10 22:25:16
183
原创 [洛谷]P1403 [AHOI2005]约数研究
先按照题目意思暴力了一波,跟预想一样直接超时,只有30分。#include <bits/stdc++.h>using namespace std;int main(){ int n,sum=0; cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { if(i%j==0) { sum++; } } } cout<<sum<<e...
2022-05-08 11:22:13
567
原创 [洛谷]P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
做这题需要明白一个概念!两个数的积等于它们最大公约数和最小公倍数的积,比如4和6的最大公约数是2,最小公倍数是12,4*6=2*12;所以,我们可以先读入x,y的积,将其设为z,再通过遍历去找能被z整除的一个数,如果这个数的最大公约数仍是x,(由于乘积关系,那么最小公倍数必然是y,则无需再去考虑)便找到了满足要求的一组数了。代码如下:#include <bits/stdc++.h>using namespace std;int gcd(int a,int b) //找a,b(a&
2022-05-07 16:10:05
518
原创 [AcWing]4414. 子序列
线性DP,首先要清楚:偶数=偶数+偶数,偶数=奇数+奇数,奇数=奇数+偶数,具体思路在注释。#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int a[N],f[N][2];//这里设f[n][0]是前n项的最大奇数和,f[n][1]是前n项的最大偶数和int main(){ int n,maxone=-1e8; cin>>n; for(int i=1;i<=n;..
2022-04-30 21:24:54
431
原创 [洛谷]P1843 奶牛晒衣服
这题思路是若衣服的湿度能在自然干的条件下用mid天可以晾干,则不需要使用烘干机,否则就使用烘干机,若使用烘干机还需要考虑使用的烘干机的天数会不会超过mid天,若不超过,则可以缩小mid,看更少的天数是否能够烘干衣服,若超过了,就增大mid,换用更长的天数。#include<bits/stdc++.h>#define int long longusing namespace std;int n,a,b;int s[500005];bool check(int mid){ i..
2022-04-29 17:22:23
900
2
原创 经典BFS问题之抓住那头牛(POJ3278)
运用BFS找出最优解即可。#include<iostream>#include<cstring>#include<queue>using namespace std;int n,k;const int maxn=100000;int visited[maxn+10]; //标记走过的路,去重struct step{ int x; //记录位置 int steps; //到x有多少步 step(int xx,int s):x(xx),...
2022-04-24 18:39:05
208
原创 [洛谷]P1226 【模板】快速幂||取余运算
解法都在这里了快速幂解法:数的幂次(c++)_kano_s的博客-优快云博客#include<bits/stdc++.h>using namespace std;typedef long long ll;ll mi(ll n,ll m,ll p){ ll result=1; ll base=n; while(m>0) { if(m&1) { result=result*base%p; } m=m>>1; base=ba.
2022-04-24 17:08:12
327
原创 [洛谷]P1008 [NOIP1998 普及组] 三连击
使用全排列函数把所有不重复的三位数找出来后,用结构体处理排序输出的问题即可。#include<bits/stdc++.h>using namespace std;struct node { int min,mid,max;//符合条件的三个数字 }aa[20];bool cmp(node x,node y){ return x.min<y.min;//每一组数字(3个三位数)每组数字以每组的第一个三位数为基准从小到大排}int main(){ int a..
2022-04-20 19:07:27
669
1
原创 Web前端入门之CSS基础笔记
001-HTML中嵌入CSS样式的第一种方式<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>HTML中嵌入CSS样式的第一种方式:内联定义</title> </head> <body> <!-- 内联定义语法格式? <标签 style="样式名 : 样式值; 样式名
2022-04-18 22:44:30
478
2
原创 Web前端入门之HTML基础笔记
目录1.我的第一个HTML页面2.基本标签3.实体符号4.表格5.表格-单元格的合并6.表格-th标签7.表格-thead tbody tfoot8.背景颜色和背景图片9.图片10.超链接11.列表12. 表单0113.表单0214.表单0315. 下拉列表多选16.file控件17.hidden控件18.readonly和disabled19.maxlength属性20.HTML元素的id属性21.d...
2022-04-14 22:28:27
687
26
原创 [洛谷]P4913 【深基16.例3】二叉树深度
关于求二叉树最深节点的题,用DFS即可。#include<bits/stdc++.h>using namespace std;struct node{ int l,r; //记录左右节点}a[1005000];int n;int maxone=-1; //最大深度void dfs(int root,int step){ if(root==0) //节点为0 返回 { return ; } maxone=max(maxone,step); //找最大..
2022-04-13 16:23:27
1175
原创 [洛谷]P1551 亲戚
并查集的模板题,什么都不用改,一模一样的,就不解释了,毕竟并查集的解释太多了,我肯定说不详细。#include<bits/stdc++.h>using namespace std;int pre[5010];int n;void init(){ for(int i=1;i<=n;i++) { pre[i]=i; }}int find(int x){ if(pre[x]!=x) { return (pre[x]=find(pre[x])); .
2022-04-11 21:23:04
569
4
原创 [洛谷]P1996 约瑟夫问题
这题用队列解决非常方便,且很好理解,详情请看下方代码以及注释。#include<iostream>#include<queue>using namespace std; int main(){ int n,outnum,nownum = 1; //隔outnum个数出队一次,nownum现在隔的数字个数 queue<int>q; cin>>n>>outnum; for(int i=1;i...
2022-04-11 21:18:36
332
1
原创 [洛谷]P1577 切绳子
这题使用二分来写,先找满足条件能让绳子分成K段及以上的长度,再用二分查找找出那个最大的长度即可。#include<bits/stdc++.h>using namespace std; int a[20000];int max_duan=0;//最长的那段绳子长度int N,K; int tongji(int mid){ int sum=0; for(int j=1;j<=N;j++) { sum += a[j]/mid; //这里求每根绳子除...
2022-04-11 21:04:54
553
原创 [洛谷]约瑟夫问题
#include<iostream>#include<queue>using namespace std; int main(){ int n,outnum,nownum = 1; queue<int>q; cin>>n>>outnum; for(int i=1;i<=n;i++)//初始化队列 q.push(i); wh...
2022-04-07 20:23:58
411
原创 Floyd算法解决蓝桥公园问题
#include<bits/stdc++.h>#define int long longusing namespace std;const int N = 550;int dis[N][N];void Floyd(int n){ for(int k = 1 ; k <= n ; k ++) { for(int i = 1 ; i <= n ; i ++) { for(int j = 1 ; j <= n ; j ++) dis[i...
2022-04-06 18:32:11
381
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人