AcWing
https://www.acwing.com/
SYaoJun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AcWing. 135. 最大子序和
题目链接单调队列使用前缀和预处理使用队列维护长度为m的集合从队列中根据单调性在O(1)O(1)O(1)的时间内求得极值#include <iostream>#include <cstring>#include <algorithm>#include <climits>using namespace std;typedef long long LL;const int N = 3e5+6;int q[N];LL s[N];int原创 2021-06-11 12:12:50 · 197 阅读 · 1 评论 -
AcWing 3624. 三值字符串
题目链接双指针注意:数组初始化特殊值#include <iostream>#include <cstring>#include <algorithm>using namespace std;int n;int cnt[3];char s[200010];int main(){ scanf("%d", &n); while (n -- ){ scanf("%s", s); int原创 2021-06-11 10:26:11 · 193 阅读 · 1 评论 -
864. 二维数组区块计数
核心:主要是二维数据范围在10的6次方,所以如果直接申请二维空间,会超内存。所以要用一维数组来存,然后转换为二维数组对应的下标。由于C++栈空间默认是1M为了防止暴栈,可以用宽搜#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int...原创 2019-09-20 16:32:03 · 215 阅读 · 0 评论 -
1076. 迷宫问题
AcWing题目链接带有路径的最短路径BFS#include <iostream>#include <algorithm>#include <cstdio>#include <vector>#include <queue>using namespace std;typedef pair<int, int> PI...原创 2019-10-31 10:35:53 · 257 阅读 · 0 评论 -
1097. 池塘计数
AcWing题目链接Flood Fill经典题数据较小使用dfs,数据较大使用bfs#include <iostream>#include <cstring>#include <cstdio>#include <queue>using namespace std;const int N = 1005;char g[N][N];in...原创 2019-10-31 09:52:38 · 334 阅读 · 0 评论 -
858. Prim算法求最小生成树
AcWing题目链接#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int N=510,INF=0x3f3f3f;int n,m;bool st[N];//状态int g[N][N]; //创建图int d[N];//点之间对距离i...原创 2019-10-30 22:49:09 · 238 阅读 · 0 评论 -
859. Kruskal算法求最小生成树
AcWing题目链接Kruskal算法把所有边按照边权从小到大排序把边权最小的两个顶点使用并查集加入同一个集合#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int M = 2e5+5;int root[M];struct...原创 2019-10-30 22:47:03 · 170 阅读 · 0 评论 -
854. Floyd求最短路
Floyd三重循环,一般顶点数不超过200时间复杂度O(n3)O(n^3)O(n3)#include <iostream>#include <cstring>#include <algorithm>using namespace std;int n, m, Q;const int N = 210;const int INF = 1e9;int...原创 2019-10-30 13:43:31 · 199 阅读 · 0 评论 -
852. spfa判断负环
AcWing题目链接#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>#include <queue>#include <unordered_map>using nam...原创 2019-10-30 11:41:49 · 208 阅读 · 0 评论 -
851. spfa求最短路
SPFA使用队列来保存更新过的顶点(栈或者优先队列也可以)。只有更新过的顶点才会产生松弛操作。#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>#include <queue>#i...原创 2019-10-30 11:22:20 · 169 阅读 · 0 评论 -
853. 有边数限制的最短路
Bellman-Ford求解有负权边的单源最路径问题。时间复杂度O(nm)O(nm)O(nm)通常来说用SPFA注意备份距离数组的使用#include <iostream>#include <cstring>#include <algorithm>using namespace std;int m, n, k;const int N = 5...原创 2019-10-29 23:03:19 · 268 阅读 · 0 评论 -
860. 染色法判定二分图
AcWing题目链接染色法用染色法判断二分图如果一个图是二分图,当且仅当图中不含奇数环对每个节点进行交错染色,如果染色没有出现矛盾则是二分图。#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;co...原创 2019-10-29 21:27:19 · 210 阅读 · 0 评论 -
848. 有向图的拓扑序列
AcWing题目链接拓扑排序如果用数组模拟队列的话,可以直接输出拓扑序列注意队尾是从-1开始#include <iostream>#include <cstring>using namespace std;const int N = 1e5+5;int h[N], e[N], ne[N];int q[N], d[N]={0};int idx = 0;i...原创 2019-10-29 20:59:17 · 328 阅读 · 0 评论 -
847. 图中点的层次
AcWing题目链接BFS模板题用数组模拟队列#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int N = 1e5+5;const int M = 2e5+5;int h[N], ...原创 2019-10-29 20:28:43 · 277 阅读 · 0 评论 -
846. 树的重心
注意ne数组和e数组的大小是顶点数的两倍每个顶点遍历一遍,搜索中计算和返回。#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e5+5, M = N*2;bool st[N]={false}; int h[N],...原创 2019-10-29 20:09:09 · 219 阅读 · 0 评论 -
844. 走迷宫
AcWing题目链接BFS有个小剪枝,对于BFS第一次到达的点才操作,不然就终止。#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <queue>using namespace std;typedef pair&l...原创 2019-10-27 17:31:49 · 331 阅读 · 0 评论 -
843. n-皇后问题
AcWing题目链接DFS#include <iostream>#include <cstdio>#include <cmath>using namespace std;const int N = 20;int n;int pos[N];void dfs(int u){ if(u == n){ //8个皇后都放好了 放在前u行 for(...原创 2019-10-27 17:09:33 · 215 阅读 · 0 评论 -
835. Trie字符串统计
AcWing题目链接Trie树模板2#include <iostream>#include <string>#include <vector>#include <cctype>#include <cstdio>#include <cstring>#include <algorithm>#inclu...原创 2019-10-25 13:58:35 · 222 阅读 · 0 评论 -
874. 筛法求欧拉函数
AcWing题目链接#include <iostream>using namespace std;typedef long long LL;const int N = 1e6+5;int primes[N];bool st[N];int phi[N];int k = 0;LL get_eulers(int n){ phi[1] = 1; for(int...原创 2019-10-24 10:00:47 · 173 阅读 · 0 评论 -
868. 筛质数
AcWing题目链接埃氏筛法时间复杂度O(nloglogn)O(nloglogn)O(nloglogn)#include <iostream>using namespace std;const int N = 1e6+5;int primes[N];bool st[N];int k = 0;void get_primes(int n){ for(int i =...原创 2019-10-23 23:50:46 · 225 阅读 · 0 评论 -
873. 欧拉函数
AcWing题目链接欧拉函数ϕ(n)\phi(n)ϕ(n)表示1∼n1\sim n1∼n中与nnn互质的个数n=p1α1p2α2…pkαkn = p_1^{\alpha_1}p_2^{\alpha_2} \dots p_k^{\alpha_k}n=p1α1p2α2…pkαkϕ(n)=n(1−1p1)(1−1p2)…(1−1pk)\phi(n)= n(1-\frac{1}{p_1...原创 2019-10-23 22:55:06 · 186 阅读 · 0 评论 -
863. 国庆旅行
//a[i]+a[j]+i-j = (a[i] + i) + (a[j] - j)#include <iostream>#include <algorithm>using namespace std;const int N = 1e5+7;int arr[N];int main(){ int n; cin>>n; for(in...原创 2019-09-20 16:00:00 · 176 阅读 · 0 评论 -
1057. 股票买卖 IV
状态机注意买卖的定义#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 100010, M = 110, INF = 0x3f3f3f3f;int n, m;int w[N];int f[N][M][2];i...原创 2019-09-29 20:21:13 · 205 阅读 · 0 评论 -
1049. 大盗阿福
自动机0——> 00——>11——>0因为不许抢两个相邻商店 所以不允许从1到1#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010, INF = 0x3f3f3f3f;int n...原创 2019-09-29 19:58:54 · 159 阅读 · 0 评论 -
898. 数字三角形
xy zx位置上的最大值取决于y和z的最大值加上x本身的值,可以用一维数组从底至顶迭代。边界条件是最底层的最值就是这一行本身。#include <iostream>#include <algorithm>using namespace std;const int N = 505;int a[N][N], g[N];int main(){ int ...原创 2019-09-29 18:01:45 · 205 阅读 · 0 评论 -
面试题10:斐波那契数列
题目链接class Solution {public: int Fibonacci(int n) { int f[40]; f[0] = 0; f[1] = 1; for(int i = 2; i <= n; i++){ f[i] = f[i-1] + f[i-2]; ...原创 2019-09-27 10:43:00 · 170 阅读 · 0 评论 -
面试题9:用两个栈实现队列
题目链接class MyQueue {public: /** Initialize your data structure here. */ MyQueue() { } stack<int> stk, cache; /** Push element x to the back of queue. */ void co...原创 2019-09-27 10:41:56 · 143 阅读 · 0 评论 -
面试题8:二叉树的下一个节点
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode *father; * TreeNode(int x) : val(x), left(NULL), righ...原创 2019-09-27 10:40:53 · 120 阅读 · 0 评论 -
面试题7:重建二叉树
题目链接/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */...原创 2019-09-27 10:40:10 · 185 阅读 · 0 评论 -
面试题6:从尾到头打印链表
题目链接/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector&...原创 2019-09-27 10:38:40 · 148 阅读 · 0 评论 -
865. 字符串展开
#include <iostream>#include <string>#include <cctype>using namespace std;int u;string str;string dfs(){ string res; while(u < str.size()){ char c = str[u]; ...原创 2019-09-20 17:34:48 · 133 阅读 · 0 评论 -
794. 高精度除法
题目链接如:1234 / 7商:0176 余2去掉前面的0 但是也要至少保留1位 跟减法类似#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string a,res; int b; cin>...原创 2019-09-04 07:18:59 · 232 阅读 · 0 评论 -
AcWing 785. 快速排序
题目链接快速排序三个步骤1.选分界点2.确定左右两段3.递归处理左右两段#include <iostream>using namespace std;const int maxn = 1e5+5;int arr[maxn];void quickSort(int l, int r){ if(l >= r) return; int x = arr[l+r>...原创 2019-08-31 08:20:18 · 149 阅读 · 0 评论 -
AcWing 789. 数的范围
二分模板题题目链接两段性#include <string>#include <vector>#include <iostream>#include <algorithm> using namespace std;vector<int> nums;int main(){ int n, k, x; cin>>...原创 2019-08-31 14:04:55 · 134 阅读 · 0 评论 -
AcWing 90. 64位整数乘法
#include<iostream>using namespace std;typedef unsigned long long ULL;int main(){ ULL a, b, p; cin >> a >> b >> p; ULL res = 0; while(b){ if(b&am...原创 2019-09-02 07:10:49 · 147 阅读 · 0 评论 -
AcWing 842. 排列数字(DFS模板题)
#include <iostream>#include <vector>#include <cstring>using namespace std;vector<int> res, nums;bool vis[10];void dfs(int k, int u) { if (u == nums.size()) { res.push_...原创 2019-09-02 08:18:15 · 287 阅读 · 0 评论 -
AcWing 861. 二分图的最大匹配
AcWing题目链接匈牙利算法模板题最大匹配:边数最多的匹配完美匹配:所有顶点都匹配上了。完美匹配一定是最大匹配。时间复杂度O(mn)O(mn)O(mn),实际运行效率远小于这个值。#include <iostream>#include <string>#include <vector>#include <cstring>#inc...原创 2019-08-31 08:10:33 · 213 阅读 · 0 评论 -
875. 快速幂(模板)
题目链接#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>using namespace std;int main(){ int n, a, b, p; cin>>n; whi...原创 2019-09-02 14:56:23 · 125 阅读 · 0 评论 -
849. Dijkstra求最短路 I
题目链接朴素Dijkstra算法有自环和重边#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>using namespace std;const int N = 505;const int...原创 2019-09-02 15:57:02 · 155 阅读 · 0 评论 -
795. 前缀和
AcWing题目链接模板题#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>using namespace std;const int N = 1e5+7;int nums[N];int ...原创 2019-09-02 17:24:24 · 169 阅读 · 0 评论
分享