随笔分类 - 数据结构与算法
摘要:在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。 在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。 接下来看程序: 输入格式 输入的第一行包含2个正整数n和s,表示图中共有n个顶点,且源
阅读全文
摘要:时间复杂度为 O(n)! #include<bits/stdc++.h> using namespace std; const int N = 10e6 + 10; int primes[N]; bool book[N]; void get_primes(){ int cnt = 0; for(in
阅读全文
摘要:一个简单的整数问题 给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一: C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。 Q l r,表示询问数列中第 l∼r 个数的和。 对于每个询问,输出一个整数表示答案。 输入格式 第一行两个整数 N,M。
阅读全文
摘要:175. 电路维修 电路板的整体结构是一个 R 行 C 列的网格(R,C≤500),如下图所示。 她准备通过计算,旋转最少数量的元件,使电源与发动装置通过若干条短缆相连。 注意:只能走斜向的线段,水平和竖直线段不能走。 输入格式 输入文件包含多组测试数据。 第一行包含一个整数 T,表示测试数据的数目
阅读全文
摘要:< 1 > vector(变长数组) : 头文件: #include<vector> 定义: vector<int> name; vector<int> vi; 二维:vector<int> vi[i]; vector<double> name; vector<char> name; vector<
阅读全文
摘要:刷了这么多题发现,二分法经常出现,而且运用范围特别广,就像木棒切割问题,矩阵划分等问题。。所以说二分法是必须熟练掌握的,再看几遍未尝不可; 二分查找高效之处在于每一步都可以去除当前区间中的一半元素,因此其时间复杂度为O(log n)。 木棒切割问题: 给出N根木棒,长度均已知,现在希望通过切割他们来
阅读全文
摘要:#include "stdio.h" /* 5 5 2 3 2 1 2 -3 1 5 5 4 5 2 3 4 3 0 -3 2 -1 2 4 */ int main() { int a[10][10],dis[10],book[10], u[10], v[10], w[10] ,n, m; int
阅读全文
摘要:并查集 - 擒贼先擒王 #include "stdio.h" int f[1005], n, m; void init(){ int i; for(i = 1; i <= n; i++){ f[i] = i; } } int find(int x){ if(f[x] == x)return x; e
阅读全文
摘要:#include <stdio.h> #define Max(x, y) x > y ? x : y; #define Min(x, y) x > y ? y : x; int n, m, ans = -99999; int a[405][405], sum[405][405]; int main(
阅读全文
摘要:求 n 的 m 次幂,然后对mod取模。 #include "stdio.h" int n, m, mod; long long quick_power(long long x, long long y){ long long sum = 1; while(y){ if(y & 1){//相当于 y
阅读全文
摘要:快速排序: void quicksort(int l, int r){ if (l >= r) return ; int x = a[l + r >> 1], i = l - 1, j = r + 1; while (i < j) { while (a[++ i] < x); while (a[--
阅读全文
摘要:炸弹人(DFS与BFS入门) 做出二维数组: # 表示墙壁; G表示敌人 ;. 表示可以安放炸弹的位置; 问题关键:不是所有地点你都可以达到,注意路径问题(比如说(1,11)点是消灭敌人最多的点,但是不一定是炸弹可放置的点); 一、DFS求解 代码如下(示例): void dfs(int x,int
阅读全文

浙公网安备 33010602011771号