摘要: 2020 CSP-J 题目整理 B-直播获奖 思路梳理 题目中说“如有选手成绩相同,则所有成绩并列的选手都能获奖,因此实际获奖人数可能比计划中多”,这是一个坑点,因为即使有分数相同的人,他的分数也是和位于第 \(n*w\%\) 人的分数相同的,而题目只让输出分数,所以不用在意。先来考虑暴力算法,没加 阅读全文
posted @ 2024-09-23 22:26 SDFZ_GuoSN 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 区间DP 定义 区间\(DP\)求解时,往往与区间的合并有很大关系,通常是由小区间合并为大区间。 转移方程 \[f[i][j]=max(f[i][k]+f[k+1][j]+cost) \]其中\(i,j\)为区间的左右端点,\(k\)位断点。 求解 区间\(DP\)在求解时,通常是由小区间合并位大区 阅读全文
posted @ 2024-09-23 22:24 SDFZ_GuoSN 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 绿豆蛙的归宿 如果正着求 , 需要记录从起点到当前点的概率 ,这个概率是会传递的。所以考虑倒着求 ,则 \[f[x]=(val(x,y)+f[y])/k \]爬树的甲壳虫 期望DP,多倒序求解。 这一题如果正着求会掉到0所以考虑倒序。 \[f[n]=0\\ f[i]=1+p[i+1]∗f[0]+(1 阅读全文
posted @ 2024-09-17 14:11 SDFZ_GuoSN 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 扩展欧几里得算法(exgcd) 简介 扩展欧几里得算法基于辗转相除法构建,主要用于求方程 \[ax+by=c \]最小正整数解 步骤 1.求方程\(ax+by=gcd(a,b)\)的解 我们构造两个方程 \[\begin{cases} ax+by=gcd(a,b)\\ bx'+(a\%b)y'=gc 阅读全文
posted @ 2024-09-17 14:03 SDFZ_GuoSN 阅读(4) 评论(0) 推荐(1) 编辑
摘要: 欧拉线性筛 简介 欧拉线性筛主要用于求\(n\)以内的所有素数,时间复杂度为\(O(n)\) 算法实现 欧拉线性筛的原理是保证\(n\)以内的所有素数只被他所含有的最小质因子筛过,这样就使得每个素数只被筛过了一次。 我们设一个数组\(prime[i]\)表示第\(i\)个素数是多少,\(is\_pr 阅读全文
posted @ 2024-09-17 13:59 SDFZ_GuoSN 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 数位DP 适用条件 此类题目一般要求在\([l,r]\)区间内满足条件的数的个数,答案一般与数的大小无关,而与数各位的组成有关。题目中给出的数的范围一般较大,往往在\(10^9\)以上因此无法暴力枚举,只能使用动态规划 代码实现 使用记忆化搜索更简单易于理解。 从数的高位向低位搜索,每一位可以为\( 阅读全文
posted @ 2024-09-17 11:15 SDFZ_GuoSN 阅读(11) 评论(0) 推荐(1) 编辑
摘要: 状态压缩DP 对于一个集合,他一有\(2^n\)个子集,而状态压缩就是枚举这些子集,每一个状态就是一个由\(01\)构成的集合,如果为\(0\)就表示不选当前的元素,否则就表示选。因为状态压缩将每一个状态压缩成了一个用二进制表示的数,所以不光可以节省空间,还可以节省时间。 因为是枚举子集,所以时间复 阅读全文
posted @ 2024-09-12 19:25 SDFZ_GuoSN 阅读(28) 评论(0) 推荐(0) 编辑