- 博客(16)
- 收藏
- 关注
原创 带修莫队
块大小取n2/3优于取sqrt(n)的情况,总体复杂度O(n5/3)。大小为pow(n t,1/3) 时间复杂度pow(n n* n *n *t,1/3)#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N=1e4+100;int a[N];struc
2020-09-30 22:23:54 144
原创 基础莫队
sqrt(n) O(msqrt(n))sqrt(n*n/m) O(nsqrt(m))排序:奇数块从小到大 偶数块从大到小#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N=2e5+100;const int M=1e6+100;int cnt[M
2020-09-30 08:48:48 76
原创 能被整除的数(容斥原理)
给定一个整数n和m个不同的质数p1,p2,…,pm。请你求出1~n中能被p1,p2,…,pm中的至少一个数整除的整数有多少个。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define ll long longll p[110];int main(){ int n,m; scanf("%d%d",&am
2020-09-17 21:43:27 301
原创 sg函数
有向图游戏给定一个有向无环图,图中有唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿有向边进行移动,每次可以移动一步,无法移动着判负。任何一个公平组合游戏都可以转化为有向图游戏。把每个局面看成图中的一个节点,并且从每个局面沿着合法行动能够到达的下一个局面连有向边。链接:https://www.acwing.com/problem/content/895/#include<cstdio>#include<cstring>#include<iostream
2020-09-17 21:25:54 77
原创 高斯消元
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;double a[110][110];const double eps=1e-6;int n;int gauss(){ int c,r; for(c=0,r=0;c<n;c++) { int t=r;
2020-09-15 11:00:44 77
原创 扑克牌(期望dp)
链接:https://www.acwing.com/problem/content/220/一定要走他所有可能走的路。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;double dp[20][20][20][20][5][5];int A,B,C,D;double dfs(int a,int b,int c,i
2020-09-12 10:26:07 117
原创 绿豆蛙的归宿(期望dp)
链接:https://www.acwing.com/problem/content/219/期望dp和普通dp并没有啥区别。只要记住:数学期望是随机变量取值与概率的乘积之和。就可以知道该如何转移。期望dp一般起点有1个,而终点有多个。一般从终点开始往前推,这就可以用到记忆化搜索。初始化double数组是最好不要用memset#include<cstdio>#include<cstring>#include<iostream>#include<al
2020-09-10 16:59:00 85
原创 Discrete Centrifugal Jumps CodeForces - 1407D(单调栈拓展)
这道题让我对单调栈的功能有了新的认识。。。我以前还以为单调栈只能求一个数前面第一个比他大/小的数首先定义dp[i]:当前共有i栋楼表示到第i栋楼的最小步数。根据条件有如下转移:1.dp[i]=dp[i-1]+1;2.i前面有一个下标假设为j,且这个j满足(a[j]>max(a[j+1]…,a[i-1]); dp[i]=dp[j]+1;3.i前面有一个下标假设为j,且这个j满足(a[j]<min(a[j+1]…a[i-1]);dp[i]=dp[j]+1;条件1很好转移,条件2和3类似,
2020-09-09 21:46:51 158
原创 欧拉路
无向图存在欧拉路充分必要条件1.连通图2.两个或零个点的度数是奇数,其他点的度数都是偶数。无向图存在欧拉回路充分必要条件1.连通图2.点的度数都是偶数。无向图存在欧拉路充分必要条件1.连通图2.一个点的入度比出度大一,一个点的出度比入度大一,其他点的出度入度相等。或者所有点的出度入度都相等。无向图存在欧拉回路充分必要条件1.连通图2.所有点的出度入度都相等。...
2020-09-08 17:43:22 146 1
原创 铲雪车(欧拉路)
链接:https://www.acwing.com/problem/content/1125/无向图一条边要不同方向经过两次相当于两条有向图。所以个点的入度都等于出度,一定存在欧拉回路。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;double dis(double a
2020-09-08 17:38:19 123
原创 冗余路径(无向图边双联通分量)
链接:https://www.acwing.com/problem/content/397/任意两点之间至少有两条不相交的路径(点可以相交,边不能相交)变充分必要条件是该图是边双连通图。题目求将一个连通图变为边双连通图至少要加多少条边。无向图经过e-DCC缩点后会变成森林或者一棵树(联通分量内部一定不需要加边)。本题答案为(叶子节点数量+1)/2#include<cstdio>#include<cstring>#include<iostream>#incl
2020-09-08 16:47:28 234
原创 负载平衡问题
https://www.acwing.com/problem/content/2196/#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=5010,M=200010,inf=1e8;int S,T;int h[N],e[M],f[M],w[M],ne[M],idx;int q[N],d[N]
2020-09-05 15:27:01 135
原创 运输问题(费用流 )
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=5010,M=200010,inf=1e8;int S,T;int h[N],e[M],f[M],w[M],ne[M],idx;int q[N],d[N],pre[N],incf[N];bool st[N];void add(int a,i
2020-09-05 15:03:24 123
原创 Binary Tree HDU - 5573(二进制)
讲解:https://blog.csdn.net/nbl97/article/details/78305345#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;#define ll long longint N,K;int main(){ int t,h=1; scanf("%d",&t); whil
2020-09-02 10:44:56 95
原创 树的同构
同构:对于两棵树A, B,如果能通过重新标号使得两棵树完全相同,则称树A和B同构例1.Subway tree systems POJ - 1635题意:给出两棵树的表示法,判断两棵树是否同构思路:把树的表示法变成最小表示法,看两棵树最小表示法是否一样有根树同构,无非是把子树的顺序换了一下#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include&
2020-09-01 13:22:18 473
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人