随笔分类 -  动态规划 -- dp

摘要:link 思维题目,题目描述其实说的就是这是一个树,想到树形$dp$。若两个铁路不向交,则每个点的度都$\leq 2$。所以现在就可以搞dp了。 怎么去维护答案,容易想到设$dp(i,j,k)$为现在到达第i号节点,当前到i的距离为j满足时,节点i已经与$k$个儿子($0\leq k \leq 2$ 阅读全文
posted @ 2018-10-30 14:50 siruiyang_sry 阅读(167) 评论(0) 推荐(0)
摘要:link 其实一眼看到就能想到区间$dp$吧 设$dp(i,j)$表示从$i$到$j$的折叠次数最小,我们每次确定一个数$k$,若$i$~$k$能匹配$k+1$~$j$那么$dp(i,j)=dp(i,k)+2+s$,$s$为括号左面的数字的位数,$+2$是因为要算上括号,若不能则$dp(i,j)=d 阅读全文
posted @ 2018-10-30 13:47 siruiyang_sry 阅读(102) 评论(0) 推荐(0)
摘要:题目pdf W神爷的题解 T1:简单$dfs$ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read() { int f=1,ans 阅读全文
posted @ 2018-10-29 18:49 siruiyang_sry 阅读(164) 评论(0) 推荐(0)
摘要:link 若$k=0$时,则没有走过任何一个新建道路,所以答案为$2\times (n-1)$,因为用$dfs$可以发现每条边经过一次,回溯一次 设树的直径为$L1$ 若$k=1$时,则我们发现若连接$(u,v)$,则会产生一个环,环中每条边只经过一次,其余都经过两次,则答案是$2\times{(n 阅读全文
posted @ 2018-10-25 19:21 siruiyang_sry 阅读(200) 评论(0) 推荐(0)
摘要:无题目描述 T1: 线段二分判交,二分判一判即可,用斜率求一下,可以将除法改成乘法,分子与分母,几何题从来没对过 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std 阅读全文
posted @ 2018-10-25 13:01 siruiyang_sry 阅读(168) 评论(0) 推荐(0)
摘要:题目 W神爷的题解 高级数据结构 T1: 其实是一道easy题,$O(n^3log n)$ 也是能卡过去的,本着要的70分的心态,最后尽然A了。 如果是正解则是$O(n^3)$,当确定你要选择的列时,不断往下扩展,因为此刻是单调函数,所以可以用单调队列优化。 #include<iostream> # 阅读全文
posted @ 2018-10-22 20:58 siruiyang_sry 阅读(174) 评论(0) 推荐(0)
摘要:题目pdf T1: 考场上被读题搞蒙,最后才写,但是尽然AC了(只有一个任务点) 最后发现就是将去时的秒数加上回来的秒数除以二即可 易证 主要考的是读入优化 怎么处理掉每行后面的(+1 +2) read瞎搞搞即可 T2: 考场上脑袋抽筋想着用后缀和维护 但是并没有打完 最后弃疗 发现自己想少了 不仅 阅读全文
posted @ 2018-10-21 15:32 siruiyang_sry 阅读(194) 评论(0) 推荐(0)
摘要:This is a 玄学 exam A.年轮蛋糕 最小的最大,二分首选 断环为链,check(x),x为答案,然后将每个大于x的子区间记录下来 如果有大于3个的话,那么x就可以是答案 那么·,在优化下来,二分里套个下二分,查长度右端点 时间复杂度:O(log(10^13)^3*n) 但是AC了 #i 阅读全文
posted @ 2018-10-01 15:09 siruiyang_sry 阅读(190) 评论(0) 推荐(0)
摘要:1.LOJ 507 接竹竿 link dp[i]表示前i个的最大分数,所以dp[i]=max(dp[i-1],dp[j-1]+sum[i]-sum[j-1]) (color i ==color j&&i>j)选与不选的两种决策 但是这样跑为O(N^2),需要优化,发现dp[j-1]-sum[j-1] 阅读全文
posted @ 2018-09-18 20:50 siruiyang_sry 阅读(724) 评论(0) 推荐(0)
摘要:题目 因为三个点肯定会有一个中转点,然后从中将一棵无根树转成有根树,然后再通过乘法原理(c2表示两两的乘积,若有第三个数就可以变成3数相乘,就可以乘法原理了) 为什么要搜索每颗子树而不从从自己的根开始搜了 以为这样就有可能不是中转点了 所以这样的话时间复杂的为O(N^2),但是可以使用长链剖分优化为 阅读全文
posted @ 2018-08-22 22:35 siruiyang_sry 阅读(175) 评论(0) 推荐(0)
摘要:Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16604 Accepted: 7037 Description Consider a tree T with N (1 <= N <= 20,000) 阅读全文
posted @ 2018-08-22 22:27 siruiyang_sry 阅读(171) 评论(0) 推荐(0)
摘要:#loj 10170. 「一本通 5.4 例 1」骑士 看数据范围n<=10,所以不是搜索就是状压dp,又因为搜索会超时所以用dp dp[i][k][j]表示现已经放到第i行,前面共有k个,这一行状态为j so,dp[i][k][j]=dp[i-1][k-num[j]][t] #include<io 阅读全文
posted @ 2018-08-22 22:21 siruiyang_sry 阅读(535) 评论(0) 推荐(0)
摘要:记忆化搜索的专题 题解在代码中 Amount of Degrees[loj 10163] /* 此题可以转换成将10进制转成b进制后有k个1其他都为0的个数 所以用记忆化dfs dp[pos][sum]表示将要处理第pos位,前面已有sum个一的数量 */ #include<iostream> #i 阅读全文
posted @ 2018-08-19 21:15 siruiyang_sry 阅读(374) 评论(0) 推荐(0)
摘要:题解在代码中 二叉苹果树[loj 10153] /* 若要留q条边便是要留q+1个点 所以记忆化搜索 dp[pos][ans]=max(dp[pos][ans],dp[l[pos]][k]+dp[r[pos]][ans-k-1]+a[pos]) 0<=k<=ans-1 */ #include<ios 阅读全文
posted @ 2018-08-19 20:45 siruiyang_sry 阅读(241) 评论(0) 推荐(0)
摘要:题解在代码中 石子合并[loj 10147] /* dp[i][j]=max or min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]) i<=k<j */ #include<iostream> #include<cstdio> #include<cst 阅读全文
posted @ 2018-08-19 20:38 siruiyang_sry 阅读(285) 评论(0) 推荐(0)
摘要:题目链接:https://pan.baidu.com/s/1_vsHfMI_qO-9IDxmFLkHfg 密码: uza8 T1: 小奥的一笔画,判连通性,查奇偶点即可 #include<iostream> #include<cstdio> #include<cstring> #include<cm 阅读全文
posted @ 2018-08-11 22:30 siruiyang_sry 阅读(172) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1179 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4。每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记。 第一步,删除其中一条边。随后每一步: 选择一条边连接的两个顶点V1和V2,用边上的运算符计算V1和V2 阅读全文
posted @ 2018-08-09 22:59 siruiyang_sry 阅读(319) 评论(0) 推荐(0)