- 博客(93)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 noip2008传纸条
传纸条(传送门)洛谷题目描述(样例数据自己找)此题我们分析一下,可以用dfs和动规来做此题。第一种做法是四维dp,这也是最好想的,设f[i][j][k][l]为从小渊传到小轩的纸条到达(i,j),从小轩传给小渊的纸条到达(k,l)的路径上取得的最大的好心程度和。完全可以换一个思路想,即求从给定的起点出发走到指定位置的两条最短严格不相交路线。那么特别显然,转移方程是 f[i][j][k...
2019-01-28 21:58:25
648
7
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 动态规划之01背包问题入门
01背包问题转载一篇很好的01背包问题的博客01背包问题描述:有编号分别为a,b,c,d,e的五件物品,它们占据的空间量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,每件物品数量只有一个,现在给你个空间量为10的背包,如何让背包里装入的物品具有最大的价值总和?我们先用递推的方式求解f[i][j]表示做出i号选择时还有j的空间量,我们按照动态规划的思想(i号物品放还是不放):...
2019-01-25 19:26:13
1147
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2017noip小凯的疑惑
一道比较好的数学竞赛题。。。。。看到这个题,我立马就想到了暴力算法,但是数据好像点大,于是我们可以自己模拟算一个计算公式这儿有几张图可以使用我们以3,7为例。我们把自然数按照每行a个数排列出来,设ma+nb=k,则每一个数都可以在图像中表示。则我们依次堆加b0个b则第一排的a的倍数都可以表示出来。1个b3+7m可以表示出来2个b6+7m可以完全表示....6个...
2019-01-22 21:17:17
362
原创 POJ 1390 Blocks
POJ算法:区间DPDPDP状态:f[i][j][k]f[i][j][k]f[i][j][k]表示消去i−ji-ji−j这段区间,kkk是右边可以利用的数(就是留下来准备合在一起的数)每次消去这段数有两种方法:直接消去这个数留下这个数,枚举iii,消掉i−ki-ki−k这段,然后和iii合到一起再消掉转移方程:直接消去的方式:f[l][r][x]=dfs(l,r-1,0)+n...
2019-11-06 16:05:40
176
原创 NOIP 模拟赛 染色
MZOJ先跑一遍KrusalKrusalKrusal,得出最小值,在考虑将矩形染色而由于矩形的个数很小,我们可以考虑用状压的方式0/10/10/1枚举当前这个矩形染还是不染色,然后再来跑KrusalKrusalKrusal或者PrimePrimePrime直接上代码:#include<bits/stdc++.h>#define rep(i,a,b) for(int (i)=(...
2019-11-06 15:10:32
175
原创 牛客CSP-S提高组赛前集训营4
NOWCODERT1:若只有一组数,考虑计算一组数的贡献总值eg.eg.eg.5,1,3,5,6五个数考虑重复数555,对于第一个555,右端点无论是在1,2,3,4,51,2,3,4,51,2,3,4,5(下标位置)都会增加一点贡献,对于第二个555,对它有影响的只有离他最近的555,我们看只有左端点在第一个555的位置右边一位开始才对他无影响。所以一组数可以预处理出来了rep(i,1...
2019-11-06 11:39:07
215
原创 P1196 [NOI2002]银河英雄传说
传送门(洛谷)算法:带权并查集sizesizesize代表当前集合的元素个数fafafa路径压缩后的父亲ddd路径压缩后的xxx到fa[x]fa[x]fa[x]的路径长度(也就是到父亲的距离)指令当收到 M x y \;M \;x \;y\;Mxy的指令时,合并两个集合,更新所有节点信息当收到 C x y \;C \;x \;y\;Cxy的指令时,分别找出所属集...
2019-10-31 11:39:53
166
原创 340. 通信线路
AcWing算法:spfa的分层图和拯救大兵瑞恩差不多(我的另一篇分层图的博客)dis[u][i]dis[u][i]dis[u][i]表示到uuu这个节点已经用了iii次免费机会了可以考虑动归的思考方式(vvv是uuu的下一个点)如果这条路不免费dis[v][i]=max(dis[u][i],e[i].w)dis[v][i]=max(dis[u][i],e[i].w)dis[v][i]...
2019-10-27 20:56:06
141
原创 P1351 联合权值
传送门(洛谷)一道树上操作题分两种情况操作,设当前节点为uuu,儿子为vvv,父亲为fafafavvv与fafafa可以组成一对联合权值,也就是一条链的情况vvv与uuu的其他儿子可以组成一对联合权值用一个tottottot数组存储uuu除去vvv的其他儿子的权值,再用乘法分配律乘起来就行,即ans2=tot∗w[v]ans2=tot*w[v]ans2=tot∗w[v]。Code...
2019-10-24 17:40:14
151
原创 Balancing Act
题目 Balancing Act找树的重心树重心的性质:一颗树一定有一个重心。当且仅当图的节点数n为偶数且有一条边连接两个大小均为n/2n/2n/2的子树时,树有两个重心,即是这条边的两个端点。每个子树大小都不大于n/2n/2n/2重心到所有点的距离和最小维护两个数组:size,fsize,fsize,f,一个是存储节点个数,一个维护父亲节点如果当前这个节点的节点数大于2n\f...
2019-10-24 11:22:04
223
原创 P4302 [SCOI2003]字符串折叠
传送门(洛谷)算法:区间动态规划f[i][j]f[i][j]f[i][j]表示处理i到ji到ji到j这段区间所需要的最小代价两种转移方法:一.标准的区间dpdpdp的转移f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);f[i][j]=min(f[i][j],f[i][k]+f[k+...
2019-10-22 17:06:44
123
原创 NOIP 模拟赛 10.21
传送门(MZOJ)T1(日程表):模拟题,直接每次模拟删除和加入就好。注意两个点:1.答案开long longlong\;longlonglong2.visvisvis数组要5e75e75e7Code#include<bits/stdc++.h>#define ll long long#define mod 1000000007#define rep(i,a,b)...
2019-10-21 22:05:46
150
原创 271. 杨老师的照相排列
传送门(Acwing)算法:动态规划我们可以思考,先从最大的开始放,则对于每一排第i−1i-1i−1个数一定是大于iii个数的,这就保障了从左向右递减。而我们再来考虑每一列的问题,要从后到前是递减的,而对于第jjj列和j−1j-1j−1列的第iii个位置,如果第jjj列的第iii个位置有人了而j−1j-1j−1的第iii个位置没有人,则一定也是满足递减的,因为我们是从身高最大的开始放的Cod...
2019-10-20 21:04:33
181
原创 P2758 编辑距离
传送门(洛谷)f[i][j]f[i][j]f[i][j]表示aaa串的前iii个数转化为bbb串的前jjj个数的最小代价若a[i]==b[j]a[i]==b[j]a[i]==b[j]f[i][j]=min(f[i−1][j−1],min(f[i−1][j]+1,f[i][j−1]+1))f[i][j]=min(f[i-1][j-1],min(f[i-1][j]+1,f[i][j-1]+1))...
2019-10-18 16:31:32
100
原创 P1772 [ZJOI2006]物流运输
传送门(洛谷)算法:最短路与动态规划结合c1[id][j]c1[id][j]c1[id][j]表示ididid号港口在jjj天的时候是否是正常运行co[i][j]co[i][j]co[i][j]表示从iii到jjj天走同一条路线的最小花费f[i]f[i]f[i]表示前iii天的最小花费转移方程:f[i]=min(f[i],f[j]+co[j+1][i]∗(i−j)+delta)f...
2019-10-15 11:24:39
245
原创 P1450 [HAOI2008]硬币购物
传送门(洛谷)完全背包和容斥原理的结合可以看一个区间相减的(其实是错的,但是好理解求[2,3][2,3][2,3]转换为求 [2,+∞)−(3,+∞)⇒[2,3]\begin{aligned}& \;\;[2,+\infty)-(3,+\infty) \\&\Rightarrow[2,3]\end{aligned} [2,+∞)−(3,+∞)⇒[2,3...
2019-10-14 20:12:58
110
原创 P2024 [NOI2001]食物链
传送门(洛谷)此题和 \;\;P1525 关押罪犯 \;\;差不多,都是维护一个自己的反面。我们开一个三倍的并查集xxx表示它自己x+nx+nx+n表示它的天敌x+2∗nx+2*nx+2∗n表示它的食物如果x,x+2∗n,x+nx,x+2*n,x+nx,x+2∗n,x+n任意两个在一个集合中都是不合法情况#include<bits/stdc++.h>#defi...
2019-10-08 21:41:48
110
1
原创 Day2
P1525 关押罪犯贪心+并查集维护先进性排序,将怨气值最大的一对拆开,分别找出每一个人的“死敌”,然后和自己的“死敌”分离开(用并查集维护就可以),最后只需要找出第一个两个人必须在一个监狱的情况(也就是在同一个并查集中),就是最后的答案。举个例子:先贪心按照权值大小进行排序,在枚举到两个人u,vu,vu,v时u,vu,vu,v对应的死敌分别是u′,v′u',v'u′,v′。则u,v′u...
2019-10-08 19:43:42
94
原创 P1525 关押罪犯
传送门(洛谷)贪心+并查集维护先进性排序,将怨气值最大的一对拆开,分别找出每一个人的“死敌”,然后和自己的“死敌”分离开(用并查集维护就可以),最后只需要找出第一个两个人必须在一个监狱的情况(也就是在同一个并查集中),就是最后的答案。举个例子:先贪心按照权值大小进行排序,在枚举到两个人u,vu,vu,v时u,vu,vu,v对应的死敌分别是u′,v′u',v'u′,v′。则u,v′u,v'...
2019-10-08 19:43:00
99
原创 P4322 [JSOI2016]最佳团体
P4322 [JSOI2016]最佳团体010101分数规划与树形dpdpdp结合题意:求∑pi∑si\frac{\sum{p_i}}{\sum{s_i}}∑si∑pi的最大值,我们可以二分一个vvv,则我们只需要求∑pi>∑si∗v ==> ∑pi−∑si∗v>0 \sum{p_i}>\sum{s_i}*v~==>~\sum...
2019-10-07 22:00:47
92
原创 Day3
P4322 [JSOI2016]最佳团体010101分数规划与树形dpdpdp结合题意:求∑pi∑si\frac{\sum{p_i}}{\sum{s_i}}∑si∑pi的最大值,我们可以二分一个vvv,则我们只需要求∑pi>∑si∗v ==> ∑pi−∑si∗v>0 \sum{p_i}>\sum{s_i}*v~==>~\sum...
2019-10-07 21:49:44
98
原创 P1272 重建道路
传送门(洛谷)正解:树形动规dp[u][i]dp[u][i]dp[u][i]表示以uuu为根节点保留iii个节点,且与父节点不相连(也就是iii与iii的父亲不相连)的最小代价为什么这样设:因为最后求得是一个独立的子树(也就是一个独立的连通块)初始化:dp[u][1]=co[u];co[i]co[i]co[i]表示iii号点的度数。转移方程:dp[u][j]=min(dp[u]...
2019-09-29 10:36:27
115
原创 P1991 无线通讯网
传送门(洛谷)此题…很水数据范围很小,我们把每一个点到其他点的距离算出来后就跑一遍KrusalKrusalKrusal,随便记录下每次加边的加的边的权值,然后由于要给某些哨兵所开bugbugbug,所以我们就给最大加边的两个哨所开bugbugbug就好了#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) ...
2019-09-27 17:04:04
98
原创 P2661 信息传递
传送门(洛谷)并查集求最小环对于两个点A,BA,BA,B,如果A指向BA指向BA指向B,则将A,BA,BA,B两点连一条边,且将两点放入一个集合中,更新权值,每条边的初始权值就是1,就是步数inline int find(int x) { if(fa[x]!=x) { int last=fa[x]; fa[x]=find(fa[x]); dis[x]+=dis[last]; ...
2019-09-27 15:45:53
94
原创 172. 立体推箱子
传送门此题是一道比较明显但又麻烦的广搜题,经典的走迷宫求最少步骤的题由于这个题的状态有些麻烦,我们建立一个三元组结构体(x,y,lie)(x,y,lie)(x,y,lie),x,yx,yx,y表示坐标,lielielie表示现在是立着的还是横着躺或是竖着躺lie=0lie=0lie=0,表示立着,且坐标为x,yx,yx,ylie=1lie=1lie=1,表示横着躺,且左半部分为x,yx,y...
2019-09-24 15:27:42
155
原创 P4147 玉蟾宫
传送门(洛谷)此题和浙江那道 棋盘制作一模一样思路方法都是一个样子,代码都没怎么改,吐槽参见我另一篇博客给出代码#include<bits/stdc++.h>#define rep(i,a,b) for(register int i=(a);i<=(b);i++)#define don(i,a,b) for(register int i=(a);i>=(b...
2019-09-18 11:45:47
82
原创 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
传送门(洛谷)算法:记忆化搜索dis[x]dis[x]dis[x]表示走到xxx号点的时候需要的步数ans[x]ans[x]ans[x]存的是最后xxx的牛的答案void dfs(int x,int num) { dis[x]=num; if(ans[a[x]]) {//下一个有值了,说明从下一个点出发的距离已经算出来了 ans[x]=ans[a[x]]+1;//等于自己到下个点的...
2019-09-18 11:09:28
86
原创 P1169 [ZJOI2007]棋盘制作
传送门(洛谷)算法:动态规划相似例子:(洛谷)玉蟾宫,(洛谷)最大正方形l[i][j]l[i][j]l[i][j]表示从mapp[i][j]mapp[i][j]mapp[i][j]向左最大可延伸多少的点r[i][j]r[i][j]r[i][j]表示从mapp[i][j]mapp[i][j]mapp[i][j]向右最大可以延伸的点up[i][j]up[i][j]up[i][j]表示从map...
2019-09-17 22:08:23
87
原创 P3609 [USACO17JAN]Hoof, Paper, Scissor
传送门(洛谷)记忆化搜索形式的动归状态:f[i][j][k]f[i][j][k]f[i][j][k]表示当前是第iii轮,用了jjj次换的机会且当前出的是k,1<=k<=3。kk,1<=k<=3。kk,1<=k<=3。k是剪刀石头布分为变还是不变两种状态,搜就行了Code#include<bits/stdc++.h>#define re...
2019-09-17 17:13:48
136
原创 P3205 [HNOI2010]合唱队
传送门(洛谷)区间动归,分为从左侧插入和从右侧插入转移方程rep(len,2,n) { rep(i,1,n-len+1) { int j=i+len-1; if(a[i]<a[j]) f[i][j][0]+=f[i+1][j][1];//从左端插入两种情况 if(a[i]<a[i+1]) f[i][j][0]+=f[i+1][j][0];//因为要从左...
2019-09-16 21:15:10
108
原创 P4170 [CQOI2007]涂色
传送门(洛谷)算法:区间动归f[i][j]f[i][j]f[i][j]表示区间iii到jjj完成时需要的最小代价当i!=j  && a[i]==a[j]i!=j \;\&\&\ a[i]==a[j]i!=j&& a[i]==a[j]时 f[i...
2019-09-16 15:49:40
118
原创 NOIP模拟赛 遗失的二叉树
MZOJ类似于区间动归中序遍历:先遍历左儿子,再遍历根节点,最后遍历右儿子盗用百科一张图中序遍历的结果:D−B−E−A−C−FD-B-E-A-C-FD−B−E−A−C−F本题思路:如能够构成一棵中序遍历的树,则在序列中一定存在一个iii的前面数是iii的左儿子,iii后面的数构成iii的右儿子举例:在上述D−B−E−A−C−FD-B-E-A-C-FD−B−E−A−C−F中,若AA...
2019-09-15 21:13:05
109
原创 NOIP 模拟赛 Candy
MZOJ很巧妙的一道题,先发现规律以233为例233对应的b1…b3分别是:233,332,323,他们的和为888而888正好是111*(2+3+3)所以我们对任意一个数都可以写成11...11∗(∑i1<=i<=lena[i])11...11*(\sum _{i}^{1<=i<=len}a[i])11...11∗(∑i1<...
2019-09-15 17:31:23
173
原创 #10157. 「一本通 5.2 例 5」皇宫看守
传送门(LOJ)树形动规f[u][0]f[u][0]f[u][0]表示iii的父亲节点放了一个守卫,以iii为根的子树最小需要的代价f[u][1]f[u][1]f[u][1]表示iii的子节点放一个守卫,以…(同上)f[u][2]f[u][2]f[u][2]表示iii自身放一个守卫,以…(同上)本题与战略游戏最大的区别,战略游戏是求树的最大独立集最大独立集,选取每一个节点的代价是一样的...
2019-09-05 22:03:31
261
原创 NOIP2015 P2680 运输计划
传送门(洛谷)算法:树链剖分,最近公共祖先,差分,二分答案算法:树链剖分,最近公共祖先,差分,二分答案算法:树链剖分,最近公共祖先,差分,二分答案解题思路:树剖剖出每一个点到根的距离用dis[u]dis[u]dis[u]表示uuu到根距离。找到每对点的LCA,并算出距离,用d[i]d[i]d[i]表示第iii组数据中两点距离二分答案midmidmid作为最大边长,找出有多少个d[i]d[...
2019-09-05 16:14:53
91
原创 P3178 [HAOI2015]树上操作
传送门(洛谷)树链剖分模板题单点修改:update(1,n,1,id[x],id[x],delta)update(1,n,1,id[x],id[x],delta)update(1,n,1,id[x],id[x],delta)区间修改:update(1,n,1,id[x],id[y],delta)update(1,n,1,id[x],id[y],delta)update(1,n,1,id[x]...
2019-09-05 09:27:39
110
4
原创 NOIP 模拟题 行动!行动!
MZOJ分层图,考虑两个变量dis[u][k]dis[u][k]dis[u][k]走到了uuu号点用了kkk个血包丢掉的最小的生命由于受NOI2018NOI2018NOI2018的影响此题也卡住了SpfaSpfaSpfa三组,故考虑DijkstraDijkstraDijkstraCode#include<bits/stdc++.h>#include<queue>...
2019-09-04 20:51:28
162
原创 #10076. 「一本通 3.2 练习 2」Roadblocks
传送门题意很明确:找到第二短路考虑Dijkstra和SpfaDijkstra和SpfaDijkstra和Spfa算法,维护两个标记dis1[u]dis1[u]dis1[u]和dis2[u]dis2[u]dis2[u],dis1[u]dis1[u]dis1[u]表示最短路dis2[u]dis2[u]dis2[u]表示第二短路Dijkstra算法Dijkstra算法Dijkstra算法#in...
2019-09-04 19:52:18
263
原创 noip2015神奇的幻方
传送门(洛谷)大模拟,按照他这么来就行了Code#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) for(register int (i)=(a);(i)<=(b);(i)++)#define don(i,a,b) for(register int (i)=(a);(i)>=(b);(i)...
2019-09-04 15:27:25
136
原创 NOIP 模拟题 小象涂色
MZOJ概率dpf[i][j]f[i][j]f[i][j]表示一个点被刷了iii次最后为jjj的颜色的概率转移方程式f[i+1][j]+=f[i][j]∗0.5    f[i+1][j]+=f[i][j]*0.5\;\;f[i+1][j]+=f[i][j]∗0.5应为iii在第i+1i+1i+1之后有12\frac{1}{2}21的...
2019-09-04 11:46:53
135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人