- 博客(14)
- 收藏
- 关注
原创 区间合并——贪心
803. 区间合并 - AcWing题库#include<iostream>#include<algorithm>using namespace std;const int N=100010;struct node{ int l,r; bool operator < (const node &w)const { return l<w.l; }}q[N];int main(){ int n
2022-03-12 21:09:37 95
原创 区间合并——贪心
#include<iostream>#include<algorithm>using namespace std;const int N=100010;struct node{ int l,r; bool operator < (const node &w)const { return l<w.l; }}q[N];int main(){ int n; scanf("%d",&...
2022-03-12 21:06:56 87
原创 区间和——离散化
AcWing 802. 区间和 - AcWing#include <iostream>#include <vector>#include <algorithm>using namespace std;typedef pair<int, int> PII;const int N = 300010;int n, m;int a[N], s[N];vector<int> alls;vector<PII.
2022-03-12 21:05:19 206
原创 数的范围——二分
789. 数的范围 - AcWing题库#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;int a[N];int n,m;int main(){ cin>>n>>m; for(int i=0;i<n;i++) cin>>a[..
2022-03-12 21:03:38 201
原创 高精度加法
791. 高精度加法 - AcWing题库#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;vector <int>c;vector<int>a,b;void f(vector<int>&a,vector<int>&b){ i..
2022-03-09 21:51:57 68
原创 bellman-ford求最短路算法
853. 有边数限制的最短路 - AcWing题库#include<iostream>#include<cstring>using namespace std;const int N=510,M=10010;int dist[N],p[N];int n,m,k;struct Node{ int a,b,w;}node[M];void bellman_ford(){ memset(dist,0x3f,sizeof dist); dist[
2022-03-09 21:49:45 121
原创 树与图的广度优先遍历—图中点的层次
847. 图中点的层次 - AcWing题库#include<iostream>#include<cstring>#include<queue>using namespace std;const int N=100010;int h[N], e[N], ne[N], idx;int d[N],m,n;void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}int bfs()...
2022-03-08 21:52:47 578
原创 有向图的拓扑排列
848. 有向图的拓扑序列 - AcWing题库#include<iostream>#include<cstring>using namespace std;const int N=100010;int h[N],idx,e[N],ne[N],d[N],m,n,q[N];void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}bool tpsort(){ int hh=0,tt=-1
2022-03-08 21:49:39 122
原创 Dijkstra求最短路 I
849. Dijkstra求最短路 I - AcWing题库#include<iostream>#include<cstring>using namespace std;const int N=510;int dist[N],g[N][N];bool st[N];int n,m;int dijkstra(){ memset(dist,0x3f,sizeof dist); dist[1]=0; for(int i=0;i<n;i+
2022-03-08 21:43:20 57
原创 最大乘积——贪心高精度
P1249 最大乘积 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)非常容易理解的0101背包做法。互不相同这个条件可以改为从1,2,……,n这n个数中选出一些数,使得它们的和为。但是,0101背包只能处理从aa个物品中选出总共bb空间的物品,使得它们的价值和最大,可是我们要求乘积呀?在数学里,对数有一个很好的性质:\ln a+\ln b=\ln(a\times b)lna+lnb=ln(a×b)假如我们要选出一些数使得它们的乘积最大,就等价于这些数的对数之和最大。
2022-03-07 23:56:20 208
原创 堆排序__
838. 堆排序 - AcWing题库#include<iostream>#include<algorithm>using namespace std;const int N = 100010;int h[N], mySize;int n, m;void down(int u){ int t = u; if (2 * u <= mySize && h[t] > h[2 * u]) t = ...
2022-03-06 12:39:34 621
原创 连通块中点的数量——并查集
837. 连通块中点的数量 - AcWing题库并查集模板#include<iostream>using namespace std;const int N=100010;int cnt[N],p[N];int find (int x){ if(x!=p[x])p[x]=find(p[x]); return p[x];}int main(){ int n,m; cin>>n>>m; for(int i=1;i&...
2022-03-06 12:37:17 140
原创 合并集合—并查集
题目描述如何理解find函数中的寻找根结点和路径压缩?解答原模板:int find (int x){ if(x != p[x]) p[x] = find(p[x]); return p[x];}可以把y总的模板拆分一下,会方便理解些int find (int x){ if(x != p[x]) { int t = find(p[x]); //寻找根结点,找到后回溯 p[x] = t; //路径压缩 } r...
2022-03-06 12:34:21 158
原创 数学知识-容斥原理
题目链接:890. 能被整除的数 - AcWing题库解题思路1-n中能整除p的个数为n/p;二进制的巧妙转化。如题目的样例2,3。则答案为10/2+10/3-10/(2*3)=7;#include<iostream>using namespace std;typedef long long ll;int p[20];int main(){ int n,m; cin>>n>>m; for(int i=0;i<m;i+
2022-03-02 23:19:13 152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人