摘要: 原题链接 考察:线性dp 思路: 二分求最长上升子序列板子题,我们可以发现二分求得的最长上升队列中,保存的就是当前长度最小的数字,因此我们只需要每覆盖一个存储它们前面一个,最后递归输出. ##Code #include <iostream> #include <cstring> #include < 阅读全文
posted @ 2021-06-04 19:18 acmloser 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线性dp 思路: 其实递推方程超简单,只是我蠢. if(s[i]>s[j]) dp[i]+=dp[j] else if(s[i]==s[j]) dp[i]-=dp[j]; 如果s[i]==s[j],那么dp[i]从前面<s[i]获得的子序列都要减去,因为与s[j]构成了重复. ##C 阅读全文
posted @ 2021-06-04 12:11 acmloser 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:二分+思维 思路: 杨辉三角有一半重复,所以我们只需要看一半.可以发现每条红线遍历处都是由内向外递增,中间红线是${i \choose 2i}\(,是每一个斜线的开头.n一定在某一条斜线上,我们可以枚举斜线再二分找位置.这里斜线最多16条(\){17 \choose 34}>10^9 阅读全文
posted @ 2021-06-04 01:56 acmloser 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:背包dp yxc:没做出来本题的反思自己有没有认真听基础课 我:菜狗不配() 思路: dfs写的,当时觉得铁TLE,但是没有想到别的做法(.) f[i][j]表示前i个物品重量为j是否能实现. dp方程: f[i][j] = f[i-1][j] f[i][j] = f[i-1][j+ 阅读全文
posted @ 2021-06-04 00:00 acmloser 阅读(47) 评论(0) 推荐(0) 编辑