12 2020 档案
摘要:先吐槽下题面。。。。。。 感觉题面完全没说明白这一堆变量是干嘛的,最后还是照着题解代码才看懂题/kk 设 $f[i]$ 表示状态为 $i$ 时吕布剩余的最大血量。 梳理一下题目要素: 两个人会一直互相攻击直到其中一个死掉,设 a1=max(1,lvatmp-emd[j]),a2=max(1,ema[
阅读全文
摘要:实在不知道错哪了。。。 对着 std 检查了好几遍了QAQ 题解见注释(不过估计题解也是错的,不然为什么写错啊QAQ #include<bits/stdc++.h> using namespace std; const int N=1<<16; int m,n,a,b; double pr[N],s
阅读全文
摘要:写了一个多小时才给它写出来...(呜呜呜 首先,因为一块砖占两个格,所以总格数是单数的话就怎么都铺不满。直接输出 $0$ 即可。 然后考虑状压 dp 。设 $f[i][j]$ 表示前 $i$ 行都放满且对第 $i+1$ 行影响为 $j$ 时的方案总数。 设数组 $f1[j],f2[j]$ 表示第 $
阅读全文
摘要:因为要考虑到原来的字符串有的字母是可以保留的,所以在按上一题的方法求过一遍之后,还需要再次决策。 设 g[i] 表示从 1 ~ i 所需的最少次数,则分为两种情况: 当 a[i] == b[i] 时,也就是说第 i 个位置就不用涂了,保留原来的颜色即可,所以 g[i]=g[i-1] 。 否则枚举分界
阅读全文
摘要:终于调出来了... 由于昨晚写了一半今天接着写的所以就没记时间/wq 分段 dp ,设 f[i][j] 表示前 i 个加油站中开设 j 个快餐店时最小的距离之和。 先预处理出在 i,j 之间只设一个快餐店时的代价(显然设在中间就好了)。 状态转移方程为 dp[i][j]=min(dp[i][j],
阅读全文
摘要:感觉还是不太明白它 std 给的那个循环边界问题呜呜呜 (但我认为我这样写似乎并没有问题...... 设 f[i][j] 表示在前 i 个数中使用 j 次乘法后的最大答案。 所以就是 f[i][j]=max(f[i][j],f[k][j-1]*(sum[i]-sum[k])); 由于要求区间的和,所
阅读全文
摘要:终于有一道一遍过的题了/kk/kk 发现前几道都很难(总之暂时没想出来)就先把这个写了。 其实这题四维 dp 好像能过,但既然写了就写正解吧... 因为路径正着走和反着走都是一样的,所以问题就是求从左上走到右下两条不重合的最大路径。 在转移途中,因为两个路径的长度都一样,所以枚举横纵坐标的和作为第一
阅读全文
摘要:想了20min然后写了10min qwq 直接把思考过程挂上来了,应该能看懂吧/wq (删去了大部分错误的过程,然后才发现正确的就这么点/kk 然而又没能一次过。查了很久发现是第三层循环那里把 i 打成了 1 。果然又是低级错误呜呜呜 #include<bits/stdc++.h> using na
阅读全文
摘要:20min写完,没过样例,然后发现循环边界弄错了/kk 区间 dp 。 设 f[i][j] 表示从 i 到 j 这个区间取走除两端外所有牌后的最小答案。 对于从 i 到 j 的区间,我们可以枚举一个分解点 k ,则答案由 f[i][k] 和 f[k][j] 转移而来。即我们可以先取走 i 到 k 之
阅读全文
摘要:想了很久没想出来,无奈之下看了题解。 如果 a[i] < a[j] ,因为要保证都是整数,所以 j - i 必须要小于 a[j] - a[i] ,才能使区间 i,j 内的所有数均可修改。 j - i < a[j] - a[i] 移项得 a[i] - i < a[j] - j。 所以 a[i] 里要存
阅读全文
摘要:思路: 先从左到右求一遍最长不下降子序列,再同样方法从右到左求一遍。 然后我们枚举分界点,则总人数就是左边一半加上右边一半的人数。 取最大值,输出答案。 见注释。 #include<bits/stdc++.h> using namespace std; int n,a[101],f1[101],f2
阅读全文
摘要:用时 10min ,一遍过。 设 f[i][j] 表示第一个字符串的前 i 位和第二个字符串的前 j 位最长公共子序列的长度。 当比较的这两个字母相同时,f[i][j] = f[i-1][j-1] + 1 。 否则 f[i][j] = max(f[i-1][j],f[i][j-1]) 。 #incl
阅读全文
摘要:题目要求硬币的数量有限制,所以可以开 b 数组记录当前该物品所取的件数。 其中 b[j] 表示要想让 f[j] = 1 ,第 i 件物品至少需要 b[j] 个。 f[i] 表示 i 能否被表示出来,能则为 1 ,否则为 0 。 总结下自己的问题: 1. b 数组要清零。 2. f 数组要赋初值。 具
阅读全文