
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 · 152 阅读 · 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 · 155 阅读 · 1 评论 -
864. 二维数组区块计数
核心:主要是二维数据范围在10的6次方,所以如果直接申请二维空间,会超内存。所以要用一维数组来存,然后转换为二维数组对应的下标。由于C++栈空间默认是1M为了防止暴栈,可以用宽搜#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int...原创 2019-09-20 16:32:03 · 186 阅读 · 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 · 226 阅读 · 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 · 300 阅读 · 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 · 205 阅读 · 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 · 131 阅读 · 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 · 161 阅读 · 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 · 180 阅读 · 0 评论 -
851. spfa求最短路
SPFA使用队列来保存更新过的顶点(栈或者优先队列也可以)。只有更新过的顶点才会产生松弛操作。#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>#include <queue>#i...原创 2019-10-30 11:22:20 · 144 阅读 · 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 · 230 阅读 · 0 评论 -
860. 染色法判定二分图
AcWing题目链接染色法用染色法判断二分图如果一个图是二分图,当且仅当图中不含奇数环对每个节点进行交错染色,如果染色没有出现矛盾则是二分图。#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;co...原创 2019-10-29 21:27:19 · 169 阅读 · 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 · 292 阅读 · 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 · 244 阅读 · 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 · 176 阅读 · 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 · 293 阅读 · 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 · 182 阅读 · 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 · 190 阅读 · 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 · 139 阅读 · 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 · 191 阅读 · 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 · 144 阅读 · 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 · 84 阅读 · 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 · 152 阅读 · 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 · 114 阅读 · 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 · 120 阅读 · 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 · 100 阅读 · 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 · 141 阅读 · 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 · 155 阅读 · 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 · 130 阅读 · 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 · 164 阅读 · 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 · 104 阅读 · 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 · 139 阅读 · 0 评论 -
793. 高精度乘法
题目链接其实是高精度与低精度乘法#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string a,res; int b; cin>>a>>b; reverse(a.be...原创 2019-09-03 20:56:15 · 161 阅读 · 0 评论 -
792. 高精度减法
题目链接#include <iostream>#include <string>#include <algorithm>using namespace std;bool cmp(string u, string v){ if(u.size() < v.size()) return true; if(u.size() > v....原创 2019-09-03 20:03:00 · 138 阅读 · 0 评论 -
791. 高精度加法
题目链接#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string a, b, res; cin>>a>>b; reverse(a.begin(), a.end()); ...原创 2019-09-03 19:53:47 · 122 阅读 · 0 评论 -
801. 二进制中1的个数
题目链接#include<iostream>using namespace std;int main(){ int n, x; cin>>n; for(int i = 0;i < n; i++){ cin>>x; int res = 0; while(x){ ...原创 2019-09-03 19:44:59 · 165 阅读 · 0 评论 -
800. 数组元素的目标和
双指针题目链接#include <iostream>using namespace std;const int N = 1e5+7;int A[N], B[N];int main(){ int n, m, x; cin>>n>>m>>x; for(int i = 0; i < n; i++) cin>&...原创 2019-09-03 19:39:51 · 170 阅读 · 0 评论 -
799. 最长连续不重复子序列
双指针模板题题目链接#include <cstdio>#include <iostream>#include <string>using namespace std;const int N = 1e5+7;int a[N], s[N]; int main(){ int n, res = 0; cin>>n; for(int ...原创 2019-09-03 19:12:30 · 449 阅读 · 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 · 134 阅读 · 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 · 94 阅读 · 0 评论