自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

转载 Luogu_P4381 [IOI2008]Island 基环树

Luogu_P4381 [IOI2008]Island### 基环树题目链接题目描述的就是一个基环树森林每次必须要用船的就是两棵基环树之间转移考虑每个基环树的贡献有两种可能第一种是不在环上的一条最长的链,也就是直径第二种是经过环第一种很好处理,DP求直径第二种则在DP的时候记录\(d[i]\)表示\(i\)能到达的最远距离这样可以断环为链,\(d[i]+d[j]+d...

2019-10-08 17:40:00 201

转载 Luogu_P1084 疫情控制 树上倍增+贪心+二分

Luogu_P1084 疫情控制### 树上倍增+贪心+二分题目链接首先越到根节点越优很显然所有向上的问题就可以用树上倍增来优化而且答案具有单调性显然你ans的时间能完成ans+1也可以那么就可以二分答案ans,是最大值最小如何验证这个二分的答案???首先把所有的点都上移到1号节点的子节点上如果移动不到的话就地驻扎这时候就需要一个新的贪心就是如果一个军队的剩余时间...

2019-10-08 14:16:00 231

转载 Luogu_P1026 统计单词个数 DP+string

Luogu_P1026 统计单词个数### DP+string题目链接题面是个什么玩意选了this不能选th的原因是t被占用所以只要避开第一个字母就行字符串可以用stringstring的substr(l,len)函数表示把l之后长度为len的字符拿出来find(x)则是查询字符串x第一次出现的起始位置那么这个题就比较简单了先处理出一个数组\(sum[i][j]\)表...

2019-10-08 08:36:00 165

转载 luogu_P3953 逛公园 记忆化搜索+最短路

luogu_P3953 逛公园### 记忆化搜索+最短路题目链接边权有0而且可能有环,所以可能出0环出0环的话就有无限条路径了(因为可以绕着这个环一直转悠)所以先正着跑spfa然后反向建边记忆化搜索\(f[i][j]\)表示到\(i\)点,还有比最短路增加\(j\)的余额的方案数。真不好理解再记录一个\(vis[i][j]\)数组,\(i\),\(j\)的意义相同但...

2019-10-07 11:05:00 136

转载 Luogu_P1514 引水入城 记忆化搜索

Luogu_P1514 引水入城### 记忆化搜索题目链接题目的意思很好理解考虑记忆化搜索搜索第一行每个点能覆盖的区间\(l[x][y]\)和\(r[x][y]\)分别表示点\((x,y)\)能覆盖的左右端点转移自然是取\(\min\)和取\(\max\)最后\(dfs\)完了统计一下最后一排的覆盖来看第一问如果覆盖了就扫左右端点就行了代码如下:#include&...

2019-10-05 19:19:00 120

转载 Luogu_P4999 烦人的数学作业 数位DP 记搜

Luogu_P4999 烦人的数学作业### 数位DP题目链接明显数位DP的题目\(f[i][j]\)记为第\(i\)位,各位总和为\(j\)的数和。记忆化搜索。代码如下:#include<bits/stdc++.h>#define ll long long#define int llusing namespace std;const ll mod=1...

2019-10-03 16:56:00 138

转载 Luogu P1600 天天爱跑步 树上差分

Luogu P1600 天天爱跑步### 树上差分题目链接树上问题没看出怎么差分被观察到的条件有两个lca前一半(包括lca) \(d[S_i]-d[x]=w[x]\)\(d[i]\)表示节点深度lca后一半 \(d[S_i]+d[x]-2*d[lca(S_i,T_i)]=w[x]\)但是具体怎么实现这个公式??实现 \(d[S_i]=w[x]+d[x]\)可以转化...

2019-10-03 14:47:00 121

转载 Luogu_P4316 绿豆蛙的归宿 期望DP

Luogu_P4316 绿豆蛙的归宿### 期望DP题面挺简单的概率期望DP设\(f[i]\)为\(i\)到\(n\)的期望路径的长度答案就是\(f[1]\)\(f[x]=(\dfrac{1}{d[x]})*∑(f[y]+dis)\)\(d\)是度数,\(y\)是\(x\)的儿子,\(dis\)就是距离这个式子比较显然但是这个是从后往前推的需要反着建图然后再通过拓扑排...

2019-10-02 13:51:00 97

转载 POJ3417 Network (闇の連鎖) 树上差分 lca

POJ3417 Network (闇の連鎖)### 树上差分 lcaPOJ3417闇の連鎖奇奇妙妙的树上差分主要边是树的结构附加边让树的结构出现环手画可以发现设\(xy\)为附加边,假如第一次切断了\(xy\)通过树边相连的路径也就是破坏了环那么第二次就必定要切断\(xy\)那么就可以通过边差分来解决这个问题假如\(x\)和\(y\)之间有附加边在这两个点上记\...

2019-09-29 16:06:00 89

转载 Luogu_P1099 树网的核 树的直径

Luogu_P1099 树网的核### 树的直径题目链接题面好长,都不想看又是明明显显的树的直径的题可以有很多种答案更新方法:方法一可以\(O(n^2)\)的枚举核的一端\(p\)得出\(p+s\)和离他们的最远的点方法二可以二分偏心距,\(O(nlogsum)\)方法三求出最长链,然后分别求他们的最远点的距离\(fr[i]\)\(a[i]\)存的是链的点编号然...

2019-09-29 11:54:00 88

转载 Luogu P3629 [APIO2010]巡逻【题解】树的直径

Luogu P3629 [APIO2010]巡逻### 树的直径题面链接看题就知道应该是连树的直径,也就是最长链\(ans=2(n-1)-l1+1\)但是\(k\le2\)当他是\(2\)的时候怎么处理???只好再跑一遍求树的直径我们先把之前求出的\(l1\)的所有边变为\(-1\)之后再求\(ans=2(n-1)-(l1-1)-(l2-1)\)要是有重叠也不用特殊...

2019-09-29 09:02:00 122

转载 Luogu_P2886 [USACO07NOV]牛继电器Cow Relays【题解】图论 矩阵快速幂

Luogu_P2886 [USACO07NOV]牛继电器Cow Relays### 图论 矩阵快速幂题目链接POJ3613题意就是求经过k条边的从st到ed的最短路我们假设\(a[i][j]\)为经过一条边的最短路\(a2[i][j]\)为经过两条边的。那么\(a2[i][j]=min(a[i][k]+a[k][j])\)那么其实这就是一个类似矩阵快速幂的东西只不过是把...

2019-09-28 17:48:00 120

转载 Luogu_P3302 [SDOI2013]森林【题解】主席树 lca 启发式合并

Luogu_P3302 [SDOI2013]森林### 主席树,启发式合并,lcaluogu题面求树上路径的第k大,树之间还有合并。明显是主席树再加合并。先说链上第k大,其实就是\(Tx+Ty-Tlca-Tlcafa\)\(T\)表示权值线段树。主席树维护的是从根节点到当前节点的前缀和。ask的代码如下:inline int ask(int x,int y,int lc...

2019-09-27 22:03:00 110

转载 CF1167D Bicolored RBS【题解】贪心

CF1167D Bicolored RBS### 短码贪心题目链接(洛谷)贪心题。遇见左括号分入深度浅的颜色遇见右括号分入深度深的颜色代码真的短代码如下:#include<bits/stdc++.h>using namespace std;const int maxn=2*1e5+10;int n,rs=0,bs=0;char a[maxn];int...

2019-09-27 19:39:00 180

转载 Luogu_P4766 [CERC2014]Outer space invaders【题解】区间DP

题面:https://www.luogu.org/problem/P4766非常容易就想到以时间为区间来DP。但是时间比较大,需要离散化。转移方程就是:f[l][r]=min(f[l][k-1]+p[id].d+f[k+1][r])这样转移的原因是有一些区间是没有外星人的,这些区间都是0。所以不能直接memset所有的决策点。就需要找一下这个区间是不是...

2019-09-27 10:19:00 165

转载 Luogu_P2161[SHOI2009]会场预约【题解】set

题面:https://www.luogu.org/problem/P2161可以用set水。先把 l , r 存在结构体里面。重定义小于号。struct node{ int l,r; node(){} node(int _l,int _r){l=_l,r=_r;} inline bool operator < (const...

2019-09-27 09:06:00 113

转载 Luogu_P2519 [HAOI2011]problem a【题解】DP

题面:https://www.luogu.org/problem/P2519题面真简单。设这个人的名次为他前面的人数加1。那么我们可以知道n-bi-ai就是并列的人数。设l为ai+1设r为n-bi。那么并列人数就是r-l+1。那么自然就是求若干的不相交的段,使他们的价值和最大。设fi为到i的最大的价值和。f[i]=max(f[i-1],f[now]+v[i...

2019-09-26 09:47:00 110

转载 CF600E Lomsat gelral【题解】线段树合并

Luogu题目:https://www.luogu.com.cn/problem/CF600E值域线段树加合并。基本上就是裸的。代码如下:#include<bits/stdc++.h>#define int long longusing namespace std;const int maxn=1e5+10;int c[maxn],n,cn...

2019-09-18 19:25:00 231

转载 Luogu_P4556 雨天的尾巴【题解】树上差分 线段树合并

题面:https://www.luogu.com.cn/problem/P4556对于在一条(x,y)路径上将z加1。就可以树上差分。x和y都是加1。lca是减1,lca的father也是减1。但是由于又有很多种不一样的种类。还需要每个点维护一个线段树。合并的时候求哪个种类是max。最后统计答案dfs。思路简单,主要是代码长。代码如下:#pr...

2019-09-18 17:41:00 183

转载 CF242E XOR on Segment【题解】线段树按位维护

题面:https://www.luogu.org/problem/CF242E因为XOR的lazy tag不可以叠加。所以就弄得比较麻烦。需要把每个数二进制拆分。也把lazy tag二进制拆分。0异或一个数还是那个数,1异或一个数就是取反。所以遇见tag的第i位为1的时候就用总数减去现在的这位为1的个数。然后所有都用线段树维护就行了。代码如下:#i...

2019-09-17 21:55:00 142

转载 CF311B Cats Transport【题解】斜率优化

题面:http://codeforces.com/contest/311/problem/BLuogu题面:https://www.luogu.com.cn/problem/CF311B斜率优化DP我们设t[i]=小猫结束时间-从1到它所在的地点的距离和。也就是从什么时候开始出发可以让猫不等待。为了最优那么我们一趟绝对要让一个不等待。把他排序,那么就是可以接到上个...

2019-09-16 07:29:00 168

转载 CF1156E Special Segments of Permutation【题解】瞎搞 单调栈

题面:http://codeforces.com/contest/1156/problem/ELuogu翻译:https://www.luogu.com.cn/problem/CF1156E话说Luogu要改域名了。大意:给定一个长度为n的排列p,求有多少区间[l,r]满足,p[l]+p[r]=max{p[i]},其中l<=i<=r据说可以笛卡尔树。...

2019-09-15 09:12:00 273

转载 POJ1187 陨石的秘密 【题解】 线性DP

题面:http://poj.org/problem?id=1187很自然想到设f[i][j][k][d]为i个小括号,j个中括号,k个大括号,深度小于等于d的解。那么答案自然就是f[i][j][k][d] - f[i][j][k][d-1]。但是最关键的不是在这里,而是如何转移。我们可以假设加上小于号。那么自然(res是加上的数)res=(res+f[a][b]...

2019-09-12 09:52:00 119

转载 Luogu_1436 棋盘分割【题解】 DP

题面:https://www.luogu.org/problem/P1436设f[k][i][j][x][y]为切了k次从(i,j)到(x,y)矩形的最大解。那么DP方程就很好写出来了。f[k][i][j][x][y]=min(f[k][i][j][x][y],min(f[1][i][j][a][y]+f[k-1][a+1][j][x][y],f[k-1][i][j][a...

2019-09-11 20:07:00 74

转载 UVA12983 The Battle of Chibi【题解】数据结构优化DP

题面:https://www.luogu.org/problem/UVA12983求数列有多少个长度为m的严格上升子序列。暴力很好打,牛客网竟然过了。f[i][j]表示到第j位匹配了长度为i的严格上升子序列。代码如下:#include<bits/stdc++.h>#define ll long longusing namespace std;...

2019-09-11 17:14:00 162

转载 Luogu_4644 Cleaning Shifts【题解】最短路代替DP

题面:https://www.luogu.org/problem/P4644和上一篇题解背景基本一样,就是改成了求最小的花费。本来应该是通过DP和数据结构优化的。但是最小花费好像可以用最短路。将每个时间段用自己的价值连边。再把每个时间向前一个时间连为0的边。这样可以保证最多可以跑N个时间段的边,且合法。那么最后假如没有到终点就是失败。代码如下:#i...

2019-09-11 14:48:00 135

转载 POJ 2376 Cleaning Shifts【题解】贪心

题面:http://poj.org/problem?id=2376和luogu的题面有不同,并不是询问最小的代价。而是询问最小点数。那么就可以用贪心解决了。代码如下:#include<cstdio>#include<algorithm>#define int long long#define ll long longusin...

2019-09-11 11:43:00 67

转载 Luogu_2704 炮兵阵地【题解】 状压DP

题目链接:https://www.luogu.org/problem/P2704蓝书状压DP例题。读入时把山全部改为1,平地0。还是先考虑预处理。把所有单行合法的点记录下来,也就是1的左右两格都是0。设f[i][j][k],表示在i行从i-1的j转移到k的最多的炮兵数。那么肯定j和k所代表的状态按位与为0,j和k和原图的按位与也为0。代码如下:#inc...

2019-09-10 09:47:00 99

转载 POJ 2411【题解】Mondriaan's Dream 状压DP

题目链接:http://poj.org/problem?id=2411把每一行当作一个二进制状态。1表示是一个竖着的1*2的方格。0表示其他状态。那么显然当i-1的状态k能转移到i的j:  1.j 和 k 的按位与为0。(有1必须要0,0也可以有1)  2.j 和 k 按位或每一段0都有偶数个。(表示横着的长方形)那么就可以预处理一下合格的点。然后状压DP...

2019-09-09 21:42:00 145

转载 Luogu_1502 窗口的星星【题解】扫描线

题目链接:https://www.luogu.org/problem/P1502其实一眼看不出扫描线。我们可以把每一个点都变成一个长宽为w和h的矩形。左边的边是+w,右边的边是-w。线段树维护区间max和lazy tag。然后扫描线求max。代码如下:#include<bits/stdc++.h>#define ll long long...

2019-09-09 19:21:00 152

转载 学习笔记 扫描线(面积并)

模板题:https://www.luogu.org/problem/P5490这个是用于求面积并的扫描线。显然只有矩形的两边会使答案发生变化。所以对每一个边做出一个四元组(x,yl,yh,1/-1)x就是x坐标 yl,yh是这条线的纵坐标,1为左端点,-1为右端点。然后就可以用线段树模拟线去扫描。在线段树里维护两个信息cnt,len。cnt表示有多少个点覆盖...

2019-09-09 15:22:00 156

转载 区间gcd (带修) 线段树

题目链接:https://ac.nowcoder.com/acm/contest/1033/B再次吐槽CH区间gcd再加区间修改。一般求gcd的时候辗转相除法。gcd(x,y)=gcd(x,y-x)那么可以把这个公式推到3个项。gcd(x,y,z)=gcd(x,y-x,z-y)可以看出来这是一个差分数列。原数列为a[],差分数列为b[]。这样就可以用线...

2019-09-09 08:57:00 624

转载 楼兰图腾 【题解】 树状数组 逆序对

题目链接:https://ac.nowcoder.com/acm/contest/1032/A(话说CH挂了,可以在牛客上面交)因为x是按顺序的,那么就是求一个逆序对。考虑树状数组求逆序对。两个数组,lt[ ],rt[ ]。lt[i]表示 a[i] 前面有几个数比它小。rt[i]表示 a[i] 后面有几个数比它小,也就是逆序对。那么" ^ "的数量就是所有 l...

2019-09-07 15:49:00 152

转载 Luogu_P1892 [BOI2003]团伙【题解】 并查集

题面:https://www.luogu.org/problem/P1892朋友就是普通并查集,普通合并。敌人的敌人就是朋友怎么实现。设a和b是敌人那么将a和b+n合并,a+n和b合并。这样的话就可以实现敌人的敌人就是朋友了。设b和c是敌人。c和b+n合并之后,就相当于和a合并到一个集合里了。所以这样是正确的。代码如下:#include<...

2019-09-06 17:31:00 252

转载 Luogu_P2461 [SDOI2008]递归数列 【题解】 矩阵乘法

题面:https://www.luogu.org/problem/P2461拿到题面,矩阵快速幂裸题。开始推矩阵。推出的矩阵是这个样子:右边是ans矩阵,左边是base矩阵。具体的可以看代码。就可以开心的快速幂了!但是由于求的是m到n之间的。需要两次。而且注意判断是不是小于K。但是!!!最最最重要的!!!!!!!!!!不要忘了统计答案时候!!!...

2019-09-04 22:37:00 150

转载 Luogu_P2243 电路维修【题解】 双端队列bfs

题面:https://www.luogu.org/problem/P2243建边。对角线有相连路的边权为0,没有的为1。然后双端队列bfs求最短路。将边权为0的到的点从队头入队。边权为1到的点从队尾入队。这样可以保证最优。代码如下:#include<bits/stdc++.h>#define int long longusing n...

2019-09-04 17:31:00 176

转载 Luogu_ P2962 [USACO09NOV] 灯 【题解】 双向搜索

题面:https://www.luogu.org/problem/P2962标签有高斯消元。但是并没有发现怎么用。于是搜索。2的35次方必然不可以接受。双向搜索。但是这个题不是从起始和终点搜。而是起始和中点有点怪这样就可以降低复杂度了。代码和注释如下:#include<bits/stdc++.h>#define ll lo...

2019-09-04 14:20:00 125

转载 luogu_P2044【题解】 随机数生成器 矩阵乘法

题面:https://www.luogu.org/problem/P2044矩阵乘法裸题。关键在于base和ans矩阵。经过计算待定系数可以得到。ans = { (x0,1) , (0,0) }base = { (a,0) , (c,1) }如代码所示。然后就可以快乐的矩阵乘法了!但是还有一个事。大数据不要忘了龟速乘!不然会爆炸成5...

2019-09-03 20:29:00 104

转载 luogu_P2054 bzoj 1965 洗牌 【题解】 快速幂 快速乘

题目链接:  Luogu:https://www.luogu.org/problem/P2054  bzoj:https://www.lydsy.com/JudgeOnline/problem.php?id=1965找到规律:  上一次在x位置,下一次就会在 x*2%(n+1) 位置那么就是要求:  x * (2^m) = L(mod n+1)第一反应exgc...

2019-09-01 16:05:00 157

转载 Luogu_P1516【题解】青蛙的约会 exgcd

题目链接:https://www.luogu.org/problem/P1516由题目可以得出:  x+k*m=y+k*n(mod l)将mod l放入公式:  (x-y)=(n-m)*k+l*t设n-m为w 设x-y为c则  k*w + l*t = c那么就可以用exgcd来求解了。先解出  k*w + l*t = d = gcd(w,l)...

2019-09-01 15:09:00 90

空空如也

空空如也

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

TA关注的人

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