自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Nowed

醉后不知天在水,满船清梦压星河。

  • 博客(47)
  • 收藏
  • 关注

原创 #cdq分治# [luogu P3810] 【模板】三维偏序(陌上花开)

Title [luogu P3810] 【模板】三维偏序(陌上花开)Solution第一维sortsortsort第二维cdqcdqcdq分治,类似归并排序第三维树状数组Code#include<cstdio>#include<algorithm>#include<string>#define rep(i,x,y) for(int i=x;i<=y;++i)using namespace std; const int maxn=2e5

2020-08-30 22:37:54 166

原创 #0/1分数规划+spfa负环# [luogu P2868] [USACO07DEC]Sightseeing Cows G

TitleP2868 [USACO07DEC]Sightseeing Cows GSolution∑i=1tF[i]∑i=1tA[i]=ans\frac{\sum_{i=1}^{t}F[i]}{\sum_{i=1}^{t}A[i]}=ans∑i=1t​A[i]∑i=1t​F[i]​=ans我们可以二分ansansans∑i=1tF[i]−∑i=1tA[i]∗mid>0\sum_{i=1}^{t}F[i]-\sum_{i=1}^{t}A[i]*mid>0i=1∑t​F[i]−i=1∑t

2020-08-20 08:20:35 228 2

原创 #Tarjan+lca# [poj 3694] Network

Titlepoj 3694 NetworkSolution可以用TarjanTarjanTarjan求出图中的桥注意有重边,这里用的是朴素的方法。对于x,yx,yx,y,假如他们同在一个点里,对桥无减少的贡献,否则同时枚举到lcalcalca的路径,将桥标志为falsefalsefalse,并减少桥的数量Code#include<cstdio> #include<cstring>#include<algorithm>#define rep(i,

2020-08-19 21:28:53 171

原创 #分组背包,模拟# [luogu CF148E] Porcelain &[luogu CF135B] Rectangle and Square

TitleCF148E PorcelainCF135B Rectangle and SquareSolution权且当作放一下程序Code(Porcelain)#include<cstdio>#include<cstring>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=305;

2020-08-19 20:23:53 139

原创 #倍增优化Floyd# [luogu CF148E] Porcelain

TitleCF147B Smile HouseSolution设d[s][i][j]d[s][i][j]d[s][i][j]为ddd步从iii到jjj的距离,d[s][i][j]=max(d[s][i][j],d[s−1][i][k]+d[1][k][j])d[s][i][j]=max(d[s][i][j],d[s-1][i][k]+d[1][k][j])d[s][i][j]=max(d[s][i][j],d[s−1][i][k]+d[1][k][j]),若d[k][i][i]>0d[k][i

2020-08-19 20:19:13 143

原创 #tarjan+Topology# [luogu P3387] 【模板】缩点

TitleP3387 【模板】缩点Code#include<cstdio>#include<algorithm>#include<queue>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=1e4+15; struct node{int x,y,next;}a[10*N],b[10*N]; int n,m,low[N],dfn[

2020-08-18 21:20:49 111

原创 #圆方树# [ssloj1492] [bzoj 2125]迷宫花坛(garden)

TitleSolution注意会有重边,求disdisdis的时候注意要取最小值此题数据较大,需要快读和快输,不然会TLETLETLECode#include<cstdio>#define rr register #define ll long long #define rep(i,x,y) for(register ll i=x;i<=y;i++)using namespace std; const ll N=200011; const ll M=5000

2020-08-18 18:57:10 131

原创 [gdkoi 阶乘(fact)][noip2015普及组 求和(sum)]

TitleP2671 求和Code(fact)#include<cstdio>#include<algorithm>#include<cmath>#define ll long long#define rep(i,x,y) for(register ll i=x;i<=y;i++)using namespace std; const ll N=1e6+10; ll T,n,base,q,w,tot,a[N],b[N],prime[N],m,

2020-08-17 22:05:34 191

原创 #圆方树+树剖+tarjan# [luoguP5236] 【模板】静态仙人掌

Titlehttps://www.luogu.com.cn/problem/P5236Solution在一棵树上,两点的距离等于dis[u]+dis[v]−2∗dis[lca(u,v)]dis[u]+dis[v]-2*dis[lca(u,v)]dis[u]+dis[v]−2∗dis[lca(u,v)]然后对于仙人掌,把一个简单环改成一个方点(所有环上的点连向新点形成一个菊花图),顺便求出环里面的距离,剩下的点为圆点,建成一棵新的树。lcalcalca的话,可以用树剖做。Code#inclu

2020-08-17 21:59:00 200

原创 #并查集# [ssloj 1486] 旅游 [jzoj travel]

TitleSolution将边权和询问排序,然后用指针扫描,对于新增的点,考虑累计贡献Code#include<cstdio>#include<cstring>#include<algorithm>#define ll long long#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=2e5+10; struct node{

2020-08-15 12:34:35 145 3

原创 #Catalan数# [ssloj 1481]最大前缀和

TitleSolution+1,−1+1,-1+1,−1可以看作在平面直角坐标系中向网格中的斜上方和斜下方走一格。我们可以枚举我们的最大前缀和iii的值,那么我们要强制网格中的折线不能超过y=i+1y=i+1y=i+1这条直线那么我们可以用(0,0)(0,0)(0,0)到(n+m,n−m)(n+m,n-m)(n+m,n−m)的总方案数-(0,2∗i)(0,2*i)(0,2∗i)到(n+m,n−m)(n+m,n-m)(n+m,n−m)的方案数-之前的枚举的iii的方案数总和(因为前面的$i$都是表

2020-08-14 22:31:00 147

原创 #LIS# [ssloj 1480].双端队列xLIS问题

TitleSolution对于iii,我们可以求iii往后的最长上升子序列和最长下降子序列,比较l[i]+r[i]−1l[i]+r[i]-1l[i]+r[i]−1得到最大值。因为最长下降子序列可以放在双端队列的前面,与原来的最长上升子序列形成一个更长的子序列。Code#include<cstdio>#include<cstring>#include<algorithm>#define rep(i,x,y) for(register int i=x;i

2020-08-14 19:33:25 129

原创 #欧氏筛+并查集# [ssloj 1470]X

TitleSolutionCode#include<cstdio>#include<cstring>#include<algorithm>#define ll long long #define rep(i,x,y) for(register ll i=x;i<=y;i++)using namespace std; const ll mod=1e9+7; const ll N=1e5+10; const ll M=1e6; ll T

2020-08-14 14:21:34 122

原创 #dp# [ssloj 1479] 不知道该叫啥

TitleSolution设f[i][j]f[i][j]f[i][j]前iii位已经填好而且第iii位填jjj时的方案数f[i][j]=∑j=1M/jf[i−1][j]f[i][j]=\sum_{j=1}^{M/j}f[i-1][j]f[i][j]=j=1∑M/j​f[i−1][j]fff可以改成一维的,然后∑\sum∑可以用前缀和f[j]=s[M/j]f[j]=s[M/j]f[j]=s[M/j]时间复杂度O(nq)O(nq)O(nq)然后我们发现M/jM/jM/j是单调递减的。于是我们

2020-08-14 12:52:01 138

原创 #树状数组#[ssloj 1474] 简单计算题 [jzoj] Tiny Counting

TitleSolution假如a,b,c,da,b,c,da,b,c,d可以相等,那么ansansans是顺序对和逆序对的乘积。可以减去不合法的的方案数。ls,lb,rs,rbls,lb,rs,rbls,lb,rs,rb指的是比分别左边比iii小的,大的,右边比iii小的,大的的数量。排除以下四种情况:a=ca=ca=cSd<Sa=c<SbS_d<S_{a=c}<S_bSd​<Sa=c​<Sb​(a=c)<b,d(a=c)<b,d(a=c)

2020-08-13 21:40:40 148

原创 #组合数#[ssloj 1473] 奶牛编号

TitleSolution·········要善于推规律和完善代码习惯。Code#include<cstdio>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; int c[5001][35],n,k,q; int main(){ scanf("%d%d",&n,&k); rep(i,0,5000) c[i

2020-08-13 20:01:07 159

原创 #dp# [ssloj1475] 俄罗斯套娃

TitleSolution设f[i][j]f[i][j]f[i][j]表示前iii位逆序对为jjj的方案数。f[i][j]=∑k=j−i+1jf[i−1][k]f[i][j]=\sum_{k=j-i+1}^{j}f[i-1][k]f[i][j]=k=j−i+1∑j​f[i−1][k]因为可能爆空间,所以第一维可以滚动掉,然后第二维可以用前缀和。Code#include<cstdio> #include<algorithm>#define ll long long

2020-08-13 19:53:18 127

原创 #树形DP# [ssloj 1469] W

TitleSolution转载于:https://www.cnblogs.com/butterflydew/p/9776076.htmlCode#include<cstdio> #include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int inf=1e9; const int N=1e5+10; struct nod

2020-08-12 22:19:14 119

原创 #dp# [ssloj] [luogu P2051] [AHOI2009]中国象棋

Title [luogu P2051] [AHOI2009]中国象棋Solution设f[i][j][k]f[i][j][k]f[i][j][k]表示前iii行放了一个棋子的有jjj列,放了两个棋子的有kkk列。初始化f[0][0][0]=1f[0][0][0]=1f[0][0][0]=1这一行什么棋子都不放的时候f[i][j][k]=f[i−1][j][k]f[i][j][k]=f[i-1][j][k]f[i][j][k]=f[i−1][j][k]放一个棋子让原本有一个棋子的一列变成有

2020-08-12 16:52:23 122

原创 #二维差分# [ssloj 1467] U

TitleSolution我们先差分二维直角三角形的斜边上的起始(+s)(+s)(+s)和终止点(−s)(-s)(−s),然后向xxx轴不断传递,因为这样会算多一个长方形的区域加,所以在平行于xxx轴的的直角边的起始(−s)(-s)(−s)和终止点(+s)(+s)(+s)。时间复杂度O(n2)O(n^2)O(n2)Code#include<cstdio> #include<algorithm>#define ll long long#define rep(i

2020-08-12 15:22:06 196

原创 #二分答案+spfa# [luogu P1948] [USACO08JAN]Telephone Lines S

TitleP1948 [USACO08JAN]Telephone Lines SSolution二分需要花费的路径的长度ggg,然后判定的时候,将所有小于等于ggg的路径赋值为0,否则为1。然后求111到nnn的最短路,如果距离小于等于kkk则缩小二分右端点,否则扩大二分范围。Code#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#define

2020-08-12 13:32:55 136

原创 #扫描线+线段树# [ssloj 1459] 空间简单度

TitleSolution[jzoj 6276] 【noip提高组模拟1】树 {扫描线+线段树}Code#include<cstdio>#include<stdlib.h>#include<cmath>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=300100; struc

2020-08-12 08:03:19 122

原创 #bfs# [ssloj1460] 逛机房

TitleCode#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<cstring>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; queue<int>q,qq; int a[101],len,ans,last; boo

2020-08-11 21:18:52 108

原创 #容斥# [ssloj 1458] HR 的疑惑

TitleSolution我们枚举指数,为了保证不算重,指数枚举质数。222的情况可以拎出来算,而且不算出现重复的情况,即ans=nans=\sqrt nans=n​然后对于后面的,需要判断是否在222中被算过。Code#include<cstdio>#include<algorithm>#include<cmath>#include<map>#define ll long long using namespace std; co

2020-08-11 21:16:51 96

原创 #kruskal#[luogu P1550] [USACO08OCT]Watering Hole G

Titlehttps://www.luogu.com.cn/problem/P1550Solution建立一个超级源点,连接所有点,权值为修建水库的费用。Code#include<cstdio>#include<queue>#include<algorithm>using namespace std; struct node{ int x,y,z; }a[100001];int n,t[1010],tot,f[1010]; long long

2020-08-11 16:07:11 123

原创 #k短路+堆维护#[ssloj 1463] 旅行

TitleSolution这是在一棵树上求k短路首先,根据题目定义的奇怪路径,求u,vu,vu,v的路径长度,跟根节点到uuu和根节点到vvv的路径和是相等的,以为根节点到lca(u,v)lca(u,v)lca(u,v)的路径会因为一正一负而被抵消掉。dis[i]dis[i]dis[i]可以在dfsdfsdfs中求出来。然后根据深度,将奇数深度的放到aaa,偶数的放到bbb,将其分别排序,因为奇数+偶数一定等于奇数。 然后将其两两配对,用一个堆来维护。Code#include<cs

2020-08-11 15:42:47 140

原创 #咕咕# [ssloj1461]异或

TitleSolution假定i≥ji\geq ji≥jgcd(i,j)≤i−jgcd(i,j)\leq i-jgcd(i,j)≤i−ji xor j≥i−ji\ xor\ j\geq i-ji xor j≥i−jgcd(i,j)=(i−j)=i xor jgcd(i,j)=(i-j)=i\ xor \ jgcd(i,j)=(i−j)=i xor jCode#include<cstdio>#in

2020-08-11 12:50:31 144

原创 #数学期望+lca#[ssloj 1457] 树(tree)

Title题目描述梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地 选择一条走过去, 为了确保第二天能够准时到校, 你要求出每个梦期望经过多少条边才能苏 醒. 为了避免精度误差, 你要输出答案模10^9 + 7的结果.输入第一行两个整数分别代表 N 和 Q. 接下来 N-1 行, 每行两个整数 u, v 代表树中的一条边. 接下来 Q 行, 每行两个整数代表询问的

2020-08-10 22:24:55 188

原创 #图论/并查集# 美团2018年CodeM大赛C-Traffic

Titlehttps://ac.nowcoder.com/acm/contest/162/CSolutionCode#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=6010; in

2020-08-10 22:22:49 89

原创 #排列/逆元# [ssloj 1452] 排行榜

Titlehttps://www.luogu.com.cn/problem/AT2000SolutionCode#include<cstdio>#include<algorithm>#define ll long long#define mod 998244353#define rep(i,x,y) for(register ll i=x;i<=y;i++)#define fu_mod(x,y) (x+y<0?((x+y)%mod+mod)%mod:

2020-08-10 22:21:27 91

原创 #树链剖分+线段树#[luogu P3178] [HAOI2015]树上操作

Titlehttps://www.luogu.com.cn/problem/P3178Code#include<cstdio>#define rr register #define ll long long using namespace std; const ll N=100011; const ll M=400011;ll n,m,Summ,R; ll seg[N],rev[M],size[N],son[N],top[N],dep[N]; ll num[N],fat

2020-08-09 19:45:35 141

原创 #树链剖分+线段树# [luogu P3384] 【模板】轻重链剖分

Titlehttps://www.luogu.com.cn/problem/P3384Solution改了我好久啊,可能是我太菜了大致思路就是树链剖分后打个懒标记的线段树,在线段树上区间查询,区间加。但是细节这种东西,真的难受,注意一下喽。为了防止seg,rev,topseg,rev,topseg,rev,top等树链剖分中初始值的东西出锅,直接用下面的dfs2dfs2dfs2的做法,直接省去一半的细节了。根据xjqxjqxjq的提醒,和经验告诉我们,线段树通常有两种打法,记住一种就

2020-08-07 15:54:59 214 1

原创 [luogu P5788] 【模板】单调栈

Titlehttps://www.luogu.com.cn/problem/P5788Solution昨天调了我一个晚上的树链剖分,很不爽。所以特地来水一篇博客。Code#include<cstdio>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=3e6+5; int n,a[N],f[N],t,sta[N]; int main(){ scanf

2020-08-07 15:11:33 136

原创 #Graham算法+决策单调性#[luogu P4166] [SCOI2007]最大土地面积

TitleSolution

2020-08-05 21:56:52 136

原创 #spfa# [luogu P3385] 【模板】负环

Titlehttps://www.luogu.com.cn/problem/P3385SolutionCode#include<cstdio>#include<queue>#include<cstring>using namespace std;const int inn=100001; struct node{ int y,w,next; }a[inn];int n,m,T,len,t[inn],f[inn],last[inn]; bool b

2020-08-05 16:35:28 161

原创 #Graham+旋转卡壳# [luogu P1452] [poj 2187] Beauty Contest G /【模板】旋转卡壳

Title洛谷pojSolution这道题我调了好久,一直卡在了我的三点求叉积中的三点顺序。////本来按习惯写成p0,p1,p2inline int sdcj(point p1,point p0,point p2){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); }因为在洛谷上这道题目数据比较水,其实可以求完凸包后暴力枚举点过的。时间复杂度为O(nlog2n+n)O(nlog_2n+n)O(nlog2​n+n)

2020-08-05 15:24:23 118

原创 #Graham算法/凸包# [poj 3348] cows

Titlehttp://poj.org/problem?id=3348Solution改了很久的原因竟然因为忘记了取绝对值(因为之前洛谷的求多边形面积的模板不取绝对值也可以过)JarivsJarivsJarivs时间复杂度要O(nm)O(nm)O(nm)#Jarivs算法# [luogu P2742] [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包GrahamGrahamGraham优秀一些,时间复杂度要O(nlog2n)O(nlog_{2}n)O(

2020-08-05 10:15:41 124

原创 #GarsiaWachs算法# [luoguP5569] [SDOI2008]石子合并

Titlehttps://www.luogu.com.cn/problem/P5569Solution(最优树问题)O(N3)O(N^3)O(N3) n≤200\quad n\le 200n≤200的规模O(N2)O(N^2)O(N2) 用四边形不等式优化下面这个DPDPDP状态转移方程F[l,r]=minl≤k<r{F[l,k]+F[k+1,r]}+∑i=lrAi\large F[l,r]=min_{l\le k <r} \{F[l,k]+F[k+1,r]\}+\sum_{i=

2020-08-04 20:23:05 243

原创 #Jarivs算法# [luogu P2742] [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包

Titlehttps://www.luogu.com.cn/problem/P2742SolutionJarivsJarivsJarivs算法主要步骤:找到最左边的点核心部分PROC1PROC1PROC1,顺时针进行凸包。枚举两点,用叉积计算夹角,选择最左的解,如果三点共线,选择最远的点。Code#include<cstdio>#include<algorithm>#include<cmath>#include<iostream>

2020-08-04 11:56:03 198 3

原创 [luoguP5490] 【模板】扫描线

Title

2020-08-02 21:57:17 94

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除