- 博客(136)
- 收藏
- 关注
原创 最小生成树习题
最短网络#include<iostream>#include<cstring>using namespace std;const int N=110;int g[N][N];int dist[N];int n;bool st[N];int prim(){ int res=0; memset(dist,0x3f,sizeof dist); dist[1]=0; for(int i=1;i<=n;i++){ int
2022-05-18 16:37:43 163
原创 好题456
空调#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;int n;int a[N];int main(){ scanf("%d", &n); for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]); for (in
2022-05-17 17:27:23 113
原创 树状数组与线段树
1.树状数组树状数组支持动态维护一个数组,支持单点修改,区间求和,区间修改本文只给出例题与参考资料树状数组经典图片参考博客参考视频楼兰图腾#include<bits/stdc++.h>#define int long longusing namespace std;const int N=200009;int high[N],low[N];int n;int a[N];int tr[N];signed lowbit(int x){ return x&
2022-05-02 15:37:27 485
原创 提高课二刷疑难杂题
方格取数#include<bits/stdc++.h>using namespace std;const int N=11;int g[N][N];int f[2*N][N][N]; // 假设有两个小朋友在同时从A走向B,g[k][i1][i2]=w,表示第一个小朋友//走到第(i1,k-i1),第二个小朋友走到(i2,k-i2)时的最小值为wint main(){ int n; cin >> n; int a,b,c; while(c
2022-04-22 21:37:50 319
原创 最短路习题
热浪#include<bits/stdc++.h>using namespace std;const int N=20000;int e[N],ne[N],w[N],idx,h[N/2];int n,m,ts,te;int dist[N/2];bool st[N/2];void add(int a,int b,int c){ e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++;}int spfa(){ memset(dist,0
2022-03-31 23:03:52 244
原创 双指针算法
双指针算法一般的时间复杂带为o(n),一般先想出暴力算法,暴力算法一般是两重循环o(n^2)的,我们寻找某些单调性优化掉第二重循环,即为双指针算法最长连续不重复子序列//暴力 for (int i = 0; i < n; i++) for (int j = 0; j <= i; j++) if (check(v1,j, i) == 0)//检查 i 和 j 之间是否有重复的数字 res = max(res, i
2022-03-28 22:29:41 402
原创 数据结构 并查集
并查集用于合并两个集合o(1),查询两个元素是否在一个集合里面o(1)合并集合#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int f[N];int n,m;int find(int x){ if(f[x]!=x) f[x]=find(f[x]); return f[x];}int main(){ cin >> n >> m; for(int i
2022-03-24 19:01:32 4972
原创 BFS 算法提高课
池塘计数#include<bits/stdc++.h>using namespace std;const int N=1010;char g[N][N];bool st[N][N];int n,m;int cnt;int dist[N][N];int dx[]={0,0,-1,1,1,1,-1,-1},dy[]={-1,1,0,0,1,-1,-1,1};void bfs(int x,int y){ queue<pair<int,int>>q;
2022-03-19 22:55:05 117
原创 状态压缩DP
小国王#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N=12,M=1<<10,K=110;LL f[N][K][M]; //f[i][k][j]=x,表示前i行放了k个国王且当前状态时j的所有方案数int cnt[M]; // cnt[i]=j , 表示状态i的1的个数为j个vector<int>state; // state[i]=j // i单纯表示下
2022-03-15 22:01:39 248
原创 质数与约数
1.试触发判定质数 o(根号N)如果a*b=n ,那么一定有a<n且b>n或者同时等于n,如果a存在则b一定存在,如果b存在那么a一定存在,我们不必枚举到n,所以我们只需要枚举到根号n即可#include<bits/stdc++.h>using namespace std;int t,n;int main(){ cin >> t; while(t--){ cin >> n; if(n==1){
2022-03-13 23:23:41 790
原创 树形行dp
树的重心#include<bits/stdc++.h>using namespace std;const int N=1e5+10;const int M=2*N;//以有向图的格式存储无向图,所以每个节点至多对应2n-2条边int st[M];int n;int h[M],idx,e[M],ne[M]; //链式向前星int ans=0x3f3f3f;void add(int a,int b){ //头插法把b插到a的头节点的后面 e[idx]=b; ne
2022-03-09 00:07:00 275
原创 区间Dp问题
石子合并#include<bits/stdc++.h>using namespace std;const int N=310;int n;int f[N][N];int a[N];int main(){ cin >> n; memset(f,0x3f,sizeof f); for(int i=1;i<=n;i++){ cin >> a[i]; a[i]+=a[i-1]; f[i][
2022-03-06 18:43:21 143
原创 背包类题型
宠物小精灵之收服//二维费用的01背包,值得注意的是 我们平常做题时,费用可以为0,即是范围为0~v//,本题限制了费用不能为0,即范围是1~v那么我们只需要改变一下范围就好了即//变为 0~v-1 就可以直接套用模板了#include<bits/stdc++.h>using namespace std;int n,m,k;int use[1010],hurt[1010];int f[1010][510];int main(){ cin >> m >
2022-02-13 22:28:16 486
原创 最长上升子序列模型题目
友好城市//轻量级思维题目 将题目转化为最长上升子序列问题 #include<bits/stdc++.h>using namespace std;const int N=1e4+10;pair<int,int>p[N];int n;int f[N];int main(){ cin >> n ; for(int i=1;i<=n;i++){ cin >> p[i].first >> p[i].s
2022-02-13 10:10:10 478
转载 dp算法.
01背包有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51
2022-01-20 10:20:51 102
原创 洛谷 二分搜索算法官方题单 个人题解 持续更新
第一题 查找#include<bits/stdc++.h>using namespace std;const int N=1e6+10;int a[N];int main(){ int n,m; cin >> n >> m; for(int i=0;i<n;i++){ cin >> a[i]; } while(m--){ int q; cin >>
2021-11-23 20:47:15 843
转载 由数据范围反推算法复杂度以及算法内容
一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 107∼108107∼108 为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:n≤30n≤30, 指数级别, dfs+剪枝,状态压缩dpn≤100n≤100 => O(n3)O(n3),floyd,dp,高斯消元n≤1000n≤1000 => O(n2)O(n2),O(n2logn)O(n2logn),dp,二分,朴素版Dijkstra、朴素版Prim、Bellman-Ford
2021-11-03 22:41:33 88
原创 计算机组成原理 第三章 存储系统
本章总览一个字节为8位二进制位位,字节,字是计算机数据存储的单位,位是最小的存储单位,为一个位存储一个1位的二进制码,一个字节由八位组成,字通常为16,32,或64个位组成位 :bit字节:Byte字:word即1B=8b。主存储器的基本模型一行存储元就是一个存储单元这样的模型是有限制的,一次只能使一行控制信息有效片选线就是整个芯片的开关,比如有什么低电平有效,高电平有效n个地址线就是n为地址,地址线数对应MAR 位数,同理数据线数对应MDR位数,存储字长是存储单元每一行具有的
2021-10-14 11:29:08 602
转载 飞行员兄弟 开关问题
飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个 4×4 的矩阵,您可以改变任何一个位置 [i,j] 上把手的状态。但是,这也会使得第 i 行和第 j 列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式输入一共包含四行,每行包含四个把手的初始状态。符号 + 表示把手处于闭合状态,而符号 - 表示把手处于打开状态。至少一个手柄
2021-09-22 21:25:56 83
原创 linux第一课
一些基本概念根目录是 / ,根目录下有很多文件夹他们分别存有很多不同的内容,比如lib文件存一些头文件。绝对路径 的开头一定是 / 代表根目录。这是绝对路径与相对路径的区别。俩个点表示上级目录 . 表示当前目录~/ 表示家目录也就是home目录(记笔记可以集中注意力)文件常用指令小tips:所有前面带.的文件是隐藏文件cd -返回上次目录...
2021-08-24 15:52:55 66
原创 计算机组成原理 第二章 数据的表示和运算
本章探讨的两大主题2.1.1 进位计数制基于八进制的加法运算 逢8进1每几位为一组时,如果不够,则最前面的或者最后面的补0即可(251.5)8 括号中的数每一个数用三个二进制数表示即可正号用 0 表示,负号用1表示...
2021-07-27 22:47:40 87
原创 计算机组成原理 第一章
1.0 你好,我是计算机组成原理低电压就是低电平,高电压就是高电平1.1 计算机的发展计算机组成原理主要探究硬件逻辑元件:用来处理电信号的基本单元
2021-07-24 22:16:42 325 3
原创 MySQL 事务
事务给我们提供了一个返回的机会=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=–=-=-=-=-------------------------事务的一些特征
2021-06-20 16:31:11 62
原创 MySQL查询学习
制造数据查询练习desc降序,asc升序like 模糊查询 having 分组条件多表查询子查询group by 和having配合使用,having相当于where
2021-06-20 15:47:11 95
原创 Mysql 三大范式
p16有总结数据库的三大设计范式第一范式1NF数据表中的所有字段都是不可分割的原子值字段值还可以继续拆分的,就不满足第一范式第二范式2NF第三范式3NF
2021-06-19 19:58:46 65
原创 java 泛型
tips:object 可以代表所有引用类型泛型类泛型就是可以表示多种类型,如int,string,bool泛型方法泛型接口 p253
2021-06-18 09:24:06 41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人