会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
百度一下
尹昱钦
OI,再见 ACM,你好
博客园
首页
新随笔
联系
管理
上一页
1
···
15
16
17
18
19
20
21
22
23
···
27
下一页
2020年10月23日
洛谷 P2656 采蘑菇(Tarjan缩点,dp)
摘要: 传送门 解题思路 对于每一条路,很显然只有两种情况,一种是走一次,一种是走无限次,而第二种情况的条件是这条边在一个环中。 所以先用Tarjan缩点,每个点的权值更新为这个环上所有边一直摘的蘑菇数的和。 然后跑一边既有边权也有点权的DAG上的dp即可。 //数据有锅,后四个点答案有误,用double存
阅读全文
posted @ 2020-10-23 21:06 尹昱钦
阅读(188)
评论(0)
推荐(0)
2020年10月22日
洛谷 P3387 【模板】缩点(Tarjan,DAG上的dp)
摘要: 传送门 缩点 在一个有向图上缩点就是指把有向图上的环变成一个点。 具体实现用Tarjan。 先求强联通分量,每次遇到新点是把这个点进栈,最后若dfn[i]==low[i]则i这个点一定在环上,而且栈中i之后进入的元素也在这个环上(证明略)。 即一直出栈,知道出栈元素等于i。在出栈过程中维护信息即可。
阅读全文
posted @ 2020-10-22 23:28 尹昱钦
阅读(152)
评论(0)
推荐(1)
2020年10月20日
洛谷 P1613 跑路(Floyd,倍增)&& 【模板】 Floyd
摘要: 传送门 解题思路 g[i][j][k]表示i到j这个点有没有长度为2^k的路径,若有为1,若没有为0。答案可以由g[i][x][k-1]&&g[x][j][k-1]更新(Floyd传递闭包)。 倍增求一遍后,把所有g[i][j][k] = 1 的 i j之间连一条长度为1的边(因为可以一步到达)。
阅读全文
posted @ 2020-10-20 23:31 尹昱钦
阅读(148)
评论(0)
推荐(0)
2020年10月19日
洛谷 P2015 二叉苹果树(树形dp)
摘要: 传送门 解题思路 很显然的树形dp,设dp[i][j]表示在子树i上保留j条边的最大苹果树,从儿子节点转移过来即可,注意若某个儿子不选,则以此儿子为根的子树都不能选。 还有就是因为是二叉树,可以提前遍历一遍求出每个点的两个或零个儿子,就不用在求dp时倒序枚举了,算是一个小技巧趴。 AC代码 1 #i
阅读全文
posted @ 2020-10-19 23:51 尹昱钦
阅读(134)
评论(0)
推荐(0)
洛谷 CF607B Zuma(区间dp)
摘要: 传送门 解题思路 显然是区间dp,判断a[i]是否等于a[j],然后再枚举中间节点k即可。 关键是玄学错误: 一份代码提交后间接性AC? (就是一会显示AC,一会再提交就WA掉,一会又AC?) 莫非是因为用了班主任名字当变量? AC记录 WA记录 感谢 @rcxkk 解答并提供hack数据。 32行
阅读全文
posted @ 2020-10-19 00:23 尹昱钦
阅读(106)
评论(0)
推荐(0)
2020年10月18日
洛谷 P1005 矩阵取数游戏 & [NOIP2007提高组](区间dp,高精度)
摘要: 传送门 解题思路 每行互不影响,所以分开处理,对于每一行,很显然是个区间dp,我们用dp[i][j]表示区间[i..j]的得分和的最大值,注意每次加一个数的顺序是先加上数再集体乘2。 恶心的地方在于需要写高精(学校比赛懒得写,所以只拿了60分),需要一个高精度+int,一个高精度*2,一个高精度+高
阅读全文
posted @ 2020-10-18 23:24 尹昱钦
阅读(146)
评论(0)
推荐(0)
洛谷 P5858 「SWTR-03」Golden Sword(单调队列优化dp)
摘要: 传送门 解题思路 很显然是dp(因为标签是dp)。 设dp[i][j]表示放到第i个原料,放完后的原料数量为j个最大的耐久度。 可以用dp[i-1][k]转移而来,其中k:j-1<=k<=min(w,j+s-1)。 你发现了什么,可以用单调队列优化! 即维护一个长度为s的单调队列。 //把这个题当做
阅读全文
posted @ 2020-10-18 00:05 尹昱钦
阅读(244)
评论(0)
推荐(1)
2020年10月17日
洛谷 P4942 小凯的数字(数论,逆元)
摘要: 传送门 解题思路 因为可以大整数分解为l*10k+(l+1)*10k-1+(l+2)*10k-3+……+r*100,而10k%9=1,所以原整数在模9意义下等于l+(l+1)+(l+2)+(l+3)+……+r=(l+r)*(r-l+1)/2。 因为有除法,所以我们算出2在%9意义下的逆元为5,即可解
阅读全文
posted @ 2020-10-17 21:42 尹昱钦
阅读(149)
评论(0)
推荐(0)
洛谷 P4933 大师(dp)
摘要: 传送门 解题思路 设dp[i][j]表示选出了第i个电塔,上一个选出的是第j个电塔的方案数。 枚举i,j,转移方程为: 找一个k,使得h[k],h[j],h[i]构成等差数列,并且k<j。 dp[i][j]+=dp[j][k]; 对于确定的i,j,h[k]是确定的,所以我们可以用vector a[i
阅读全文
posted @ 2020-10-17 00:28 尹昱钦
阅读(103)
评论(0)
推荐(0)
2020年10月16日
洛谷 P1091 合唱队形 & [NOIP2004提高组](LIS)
摘要: 传送门 解题思路 先说我的思路:枚举中间的那个人,然后在左边序列、右边序列分别做一次LIS,时间复杂度为n^3。 看题解后才发现有更优的做法,我们可以先预处理出正向和反向的LIS,然后枚举i统计答案即可,时间复杂度为n^2。 AC代码 1 #include<iostream> 2 #include<
阅读全文
posted @ 2020-10-16 23:33 尹昱钦
阅读(159)
评论(0)
推荐(0)
洛谷 P1233 木棍加工(LIS,狄尔沃斯定理)
摘要: 传送门 解题思路 先按照l为第一关键字,w为第二关键字从大到小排序,保证前面的l一定比后面的大于等于,这样就能排除一维影响。 然后问题就变成了在排好序的序列中找最长不上升子序列的个数,根据狄尔沃斯定理(导弹拦截定理),我们得知最长不上升子序列的个数就等于最长上升子序列的长度。 所以这里O(n^2)求
阅读全文
posted @ 2020-10-16 23:17 尹昱钦
阅读(161)
评论(0)
推荐(0)
洛谷 P1280 尼克的任务(dp)
摘要: 传送门 解题思路 因为正序不好推,所以我们倒序: dp[i]表示从时间i到最终时刻n的最大休息时间,所以我们可以推出以下的状态转移方程: 若i时刻无任务,则dp[i]=dp[i+1]+1; 若i时刻有至少一个任务,则枚举这些任务k,dp[i]=dp[a[k]+b[k]];(a,b为题目中读入的每个任
阅读全文
posted @ 2020-10-16 22:46 尹昱钦
阅读(122)
评论(0)
推荐(0)
洛谷 P1020 导弹拦截 & [NOIP1999提高组](LIS,dp)
摘要: 传送门 解题思路 很显然的LIS板子题,找一个最长不上升子序列和最长上升子序列即可。 关于LIS(O(n^2)和O(nlogn)) AC代码 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstdio>
阅读全文
posted @ 2020-10-16 00:02 尹昱钦
阅读(249)
评论(0)
推荐(0)
2020年10月15日
洛谷 P1802 5倍经验日(dp)
摘要: 传送门 解题思路 很显然的一道类似01背包的dp,每个人选择打或不打。 状态转移方程为 dp[i][j]=max(dp[i-1][j]+lose[i],dp[i-1][j-num[i]]+win[i]) 但这个题还是比较细节的,要注意一下几点: 数组要用long long,否则最后一个点会炸(因为答
阅读全文
posted @ 2020-10-15 22:50 尹昱钦
阅读(153)
评论(0)
推荐(0)
洛谷 P4017 最大食物链计数(DAG上的dp)
摘要: 传送门 解题思路 显然的用到类似树形dp的思想,在一个有向无环图上做dp。 状态转移方程就是dp[v]加起来。 AC代码 //其实不用long long也可以 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #includ
阅读全文
posted @ 2020-10-15 00:07 尹昱钦
阅读(185)
评论(0)
推荐(0)
上一页
1
···
15
16
17
18
19
20
21
22
23
···
27
下一页
公告