
算法与题
文章平均质量分 64
废柴成长中——
如果大雨落下,那我就成为海洋
展开
-
矩阵快速幂 笔记加理解
矩阵快速幂原创 2022-11-30 11:11:34 · 569 阅读 · 0 评论 -
每日一题 蚂蚁感冒
蚂蚁感冒原创 2022-11-25 11:28:40 · 215 阅读 · 0 评论 -
2022 蓝桥杯C++A组——选数异或
蓝桥杯选数异或原创 2022-07-08 11:01:21 · 7357 阅读 · 20 评论 -
无重复字符的最长子串-力扣 12ms
看到这题第一眼,想到了求最长连续序列的题,解法不一样,但是巧用辅助数组记录的思想相当好用。思路就是,从字符串第二个开始遍历到最后一个。然后看它前面的字符有没有和它相等的。举个例子吧。例子:dvdf首先拿p来记录每次遍历的起点。最开始p=0。用r[50005]来记录每个字符能凑成的无重复字符的最长子串的长度。初始化r[0]=1dvdf第一次遍历,拿v和它前面的d作比较,不相等,r[1]=r[0]+1=2第二次遍历,拿d和它前面的dv分别作比较,和d相等,那么无重复字符的最长子串要么不包含第..原创 2022-04-14 15:15:35 · 122 阅读 · 0 评论 -
蓝桥杯危险系数以及深搜笔记
#include<iostream>using namespace std;int n,m,u,v;//站点个数,通路个数,起点,终点int map[1005][1005]={0};//邻接矩阵int r[1005]={0};//记录是否走过该点int num[1005]={0};//记录每个点在所有通路中出现次数int ans=0;//记录通路条数int main(){ void dfs(int x); cin>>n>>m; for(int i=1.原创 2022-03-31 13:08:54 · 208 阅读 · 0 评论 -
地宫取宝,只需动态规划巨快
第一行是网上普遍说的dfs+动态规划第二行是只用动态规划解显然,无论是时间还是代码长度,只用动态规划完胜啊兄弟们!当然,我只想出部分,没写出来。于是看大佬题解,参悟甚多,然,大佬不重笔墨,把最关键的写了就走了,我在此为c语言网Nspyia大佬的题解写篇题解注。如被Nspyia大佬看见这篇文章或者其它兄弟看见有不足之处。殷盼斧正。正篇开始动态规划无所谓两步:找到递推数组,找到递推公式。如何找到递推数组我一开始看到这题,就觉得它像洛谷的过河卒,就是那种对走路方向有规定的,走不回去的走法。这.原创 2022-03-28 23:03:09 · 462 阅读 · 2 评论 -
2022.3.7.(1)函数里返回指针
char * convertToBase7(int num){ char *p=(char*)malloc(sizeof(char)*100); int t,k=0; int flg=0; if(num<0)flg=1; num=abs(num); do { t=num%7; p[k++]=t+'0'; num/=7; }while(num); if(flg)p[k++]='-';.原创 2022-03-07 11:20:50 · 107 阅读 · 0 评论 -
AcWing01背包问题(娓娓道来版讲解)
#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;int v[MAXN]; // 体积int w[MAXN]; // 价值 int f[MAXN][MAXN]; // f[i][j], j体积下前i个物品的最大价值 int main() { int n, m; cin >> n >> m; for(int i = 1; i &l.原创 2022-02-03 22:16:22 · 1004 阅读 · 0 评论 -
埃氏筛法,线性筛
线性筛的思路:从1开始到n,从头依次找素数,用已经找到的素数去标记后面的合数(素数乘以素数等于合数),记录已经找到的素数,排除后面的合数。这句话埃氏筛法也可以这么说。线性筛和埃氏筛的区别就是:每个数只会被标记一次。首先来看下埃氏筛法吧:埃氏算法的思路:找到一个素数,就把这个素数的所有倍数都标记(素数的倍数自然是合数)。比如找到素数2,那就把后面的4,6,8,10,12…都标记上。#include<stdio.h>int check[100000]={0};void f(int原创 2021-12-14 22:01:00 · 2028 阅读 · 7 评论 -
kmp算法原理及代码解释,通俗易懂
kmp算法我以前写过一篇数学推导原理的文章,但是很难让人看下去。最近想到了另一种解释,原理超级简单。如图:主串和模式串一直到主串的k才和模式串不匹配。看图可知:因为: x1y1x2y2又:y1y2所以: x2y1所以下一次模式串匹配就可以直接拿模式串的y1段和主串的x2段对齐,然后比较之后的字符串了。这就省掉了暴力算法的很多步。所以kmp算法要去寻找模式串和主串匹配成功的子串的...原创 2021-12-05 17:26:46 · 1460 阅读 · 1 评论 -
树状数组总结
树状数组看了很久,因为看到的文章几乎都是告诉我是什么,而没有告诉我为什么。这篇文章集合我看过的所有资料加上我自己的思考。先讲知识点再讲理论逻辑吧,不然脑袋里没图,云里雾里。先来讲个函数:lowbit(n)它的作用就是获得非负整数n在二进制表示下最低位1及其后面的0构成的数值如,二进制为101100的44,lowbit(44)就获得二进制数100,也就是十进制的4lowbit(n)=n&(~n+1)=n&(-n)然后,看两个操作:①将数组中的第x个数加上k②输出区间[x,y]内原创 2021-11-28 18:13:07 · 330 阅读 · 0 评论 -
李白喝酒问题
题目话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。思路可以看到,每次相遇,无论是遇到店子还是遇到花,它的下一次相遇还是花或原创 2021-11-16 10:31:37 · 1202 阅读 · 0 评论