首页 > TAG信息列表 > 0x3f
prim
朴素prim #include<bits/stdc++.h> using namespace std; const int N = 550, INF = 0x3f3f3f3f; int n, m, dis[N], g[N][N]; bool vis[N]; int prim() { memset(dis, 0x3f, sizeof dis); int res = 0; for(int i = 0; i < n; i ++ ) { inmemset函数的常规用法
memset函数对数组中的每一个元素的每个字节进行初始化,所以一般的int数组中每个元素有四个字节,所以memset(a,0x3f,sizeof(a))其实是把每个元素置成0x3f3f3f3f 对于一般的int数组,在使用memset进行初始化时,有以下几种常见情况 1.置0 memset(a, 0, sizeof(a)); 2.取最大值 memset(a,memset时为什么是0x3f和0x3f3f3f3f??
在一些图论算法中经常可以看到,对数组进行初始化成无穷大时,使用memset函数,常常会看到有0x3f,0x3f3f3f3f的出现, const int INF=0x3f3f3f3f; //或者 int a[5]; memset(a,0x3f,sizeof(a)); 0x3f3f3f3f是最大值吗?有什么含义?这样写是为什么? 首先我们需要回顾一下memset函数的用法:acwing349 黑暗城堡 (最短路径生成树)
求出最短树,用乘法原理统计答案就行了(模拟prim过程)。 不知道说什么了,直接上代码: 1 #include<cstring> 2 #include<iostream> 3 #include<algorithm> 4 #define ll long long 5 using namespace std; 6 const int N=1006; 7 const ll P=(1ll<<31)-1; 8 int n,m,a[N][N],d[NCH340 RTS DTR引脚编程驱动OLED
提到CH340想必大家都不会陌生 尤其是玩单片机的朋友们,他是沁恒微电子推出的一款USB转串口芯片 今天咱们不玩串口通信,拿ch340搞点事情。CH340除了RXD TXD用于串口通信外,还有两个特殊的引脚,RTS和DTR 。 是不是有点眼熟,没错,51单片机的免冷启动下载器,esp82Dijkstra求最短路 I(朴素算法)
这道题目又是一个新算法,名叫Dijkstra 主要思路是:输入+dist和vis初始化(都初始化为0x3f)+输入g(邻接矩阵)+Dijkstra函数 Dijkstra函数:先将dist[1]设为1(起点到起点当然0代价),然后将每个点都更新一遍。在循环里面我们先找出最小但没更行新的点然后用这个点更新一遍所有数acwing 91. 最短Hamilton路径
状压dp,模板 f[i][j]表示以i为当前状态,j为终点的路径长度,属性:min #include<bits/stdc++.h> using namespace std; const int N = 21,M = 1<<20; int f[M][N],weight[N][N]; int main(){ int n; cin>>n; for(int i=0;i<n;i++) for(int j=0;j<n;j+算法模板
1.最短路 int dijkstra() { // chushihua memset(dist, 0x3f, sizeof dist); dist[1] = 0; for (int i = 1; i < n; i++) { int t = -1; for (int j = 1; j < n; j++) if (!found[j] && (t == -1 || dist[j] &lAcWing 11. 背包问题求方案数
#include <iostream> #include <algorithm> #include <string> using namespace std; #define gdb(x) cout<<x<<endl; const int mod = 1e9 + 7; const int N = 1010; int f[N],g[N]; int main() { int n,m; cin >> n >> m【总结】背包问题的至多/恰好/至少
零、前导知识 0x3f3f3f3f数值大于1e9,且满足无穷大 + 无穷大 = 无穷大(不会溢出int) memset(f, 0xcf, sizeof f) -> -808464433 memset(f, -0x3f, sizeof f) -> -1044266559 memset(f, 0x3f, sizeof f) -> 1061109567 对于一维背包问题,注意区分该问题的下面这三种情况,即至多/ASCIALL字符
Asciall 字符表 完整Asciall字符表 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 使用取模软件生成的数据 const unsigned char F8X16[]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0floyd(只有代码)
Floyd #include<bits/stdc++.h> using namespace std; #define MAXN 1010 /* 图中最短路 f[i][j] = gragh[i][j] = min{f[i][k] + f[k][j], f[i][j]} */ int n = 0; int gragh[MAXN][MAXN] = { 0 }; int f[MAXN][MAXN] = { 0 }; void floyd(){Dijkstra求最短路(朴素Dijkstra算法)
朴素Dijkstra算法 集合S:存当前已经确定最短距离的点 一、初始化dist[1] = 0, 其余 dist[i] = 0x3f 二、for i : 0 ~~~ n, 有n个点,每循环一次就确定一轮最短距离 1、找到集合s以外的距离最近的点t 2、把t存入s中 3、用t来更新其他距离的点 dist[x] = dist[t] + w(边权) 849. DijkstDijkstra算法
朴素版Dijkstra算法 一.适用范围: 单源最短路,所有边权都是正数,(朴素版Dijkstra 时间复杂度O(n的平方) ),稠密图(边数大于点数) 二.算法思路: 1.初始化距离 各个顶点到源点的距离为正无穷(memset(dist,0x3f,dist)源点本身到源点的距离为0(dist[1]=0); 2.循环遍历 s:当基础算法学习---dijkstar算法
适用范围 单源正权边最短路 时间复杂度O(n^2) 模板 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 510; int d[N][N]; //两点之间的距离 int dist[N]; //点到1之间的距离 bool st[N]; //点是否为确定最共阳和共阴数码管详细段码(带图)
今天带大家了解数码管的详细段码,数码管主要分共阳数码管和共阴数码管。区别在于其公共端是接电源还是接地。这里我们讲解共阴(共阳)数码管的0-F不带小数点段码和0-F带小数点段码。 共阴数码管 1.共阴不带小数点0-F段码为:{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,最短哈密顿路径 最短Hamilton路径
链接传送门 状压dp 我对状态压缩的理解:把当前的情况,转化为一个二进制数(或许有其他形式?暂时还没见到),用二进制的0和1来代表当前的情况 AC代码 #include <bits/stdc++.h> using namespace std; const int N = 20, M = 1 << N; int dp[M][N]; //一维代表的是当前的状态,二维ACwing 1018. 最低通行费
添加链接描述 #include<bits/stdc++.h> using namespace std; const int N=110; int arr[N][N],dp[N][N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>arr[i][j];2021-06-09
#include<bits/stdc++.h> using namespace std; int n,m,s,d; const int N=1010; const int M=10010; int mp[N][N]; int dis[N]; int vis[N];//标记是否已经求得该点的最短路 int i,j; void dij(int s){ //s为起点 memset(dis,0x3f,sizeof dis); for(int i=1;i<=n;i+[ABC143E] Travel by Car
有关Floyd的有趣的图论题。 传送门 解答 \(O(n^3)\)想到Floyd-Warshall算法。 然后就想偏到倍增预处理可达性了……\(O((Q+n)n^2\log n)\) 实际上,第一次floyd()之后可以建出来一个边长为\(1\)的新图,表示可以“一口气”走到。 那么,我们实际上相当于求新图上两个点的最短路,用BFS或再1047. 糖果
01背包裸题。 状态表示: \(f(i,j)\)从前\(i\)个数中选,总和模\(K\)的余数为\(j\)的情况下的和的最大值。 状态转移: \[f(i,j) = f(i-1,j),f(i-1,(j-w[i])\mod k)+w[i] \]const int N=110; int f[N][N]; int w[N]; int n,k; int get(int x) { return (x%k+k)%k; } int main() {AcWing 587. 吃蛋糕
原题链接 考察:完全背包dp 人傻了,本来还想先用二维,结果没写出来,一脸懵逼看了题解.题解全是一维,最后发现是我f[i][j] = min(f[i-1][j],f[i][j-i*i]+1)的第二个i写成了i-1,板子背错了= = 这道题的物品体积是i*i,价值是1.这样才能算出个数来 1 #include <iostream> 2 #include洛谷题单——【图论2-3】最小生成树
P3366 【模板】最小生成树 一道模板题,prim算法就可以过,krustal算法也是可以的嗷 这里只给出prim的结法 #include <bits/stdc++.h> using namespace std; const int N = 5010; const int INF = 0x3f3f3f3f; int n, m; int g[N][N]; int dist[N]; bool st[N]; int prim() {jquery.qrcode中文乱码的解决终极办法
使用前一定先转码 function utf16to8(str) { var out, i, len, c; out = ""; len = str.length; for (i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) {朴素版dijkstra和朴素版prim算法比较
1.dijkstra 时间复杂度:O(n^2) n次迭代,每次找到距离集合S最短的点 每次迭代要用找到的点t来更新其他点到S的最短距离。 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N=510; int g[N][N]; int dis[N],n,m;//dis[i]表示节点i到初始