【考试总结】2022-08-05

毒假强

二分答案,统计 n 的有多少个 c=10k1 的倍数的十进制表示下不含有 9

c 的倍数的条件是将 x 从低到高每 k 位分成一段(最后一段不够就当高位是 0)得到的每一段的和是 c 的倍数。由于段数非常有限,于是可以枚举倍数(每段数值之和)的值。

由于最终每段的总和为定值,于是数位 DP。按照常规操作枚举 LCP 并钦定之后的一位小于 n 的对应位。设 fi,b 表示考虑长度为 K 的段的前 i 位,之前的位对这位及以后造成的进位大小为 b 的方案数。

fi,fi+1, 的转移可以枚举每个段中这一位选择的数值记录到进位中,被限制的位不能自由选数。枚举完每位的选择之后 fi, 要向 fi+1, 统一转移,只能转移十进制下尾数和 总和 的当前位相同的那些状态

赌徒

能作为硬币的某一面出现的数字一定是出现过的数字或者 1。每一面朝上时能给 A 带来的收益是固定的,可以将每个硬币拆成两个,每个都带 xi 的收益。将数字从小到大排序之后做前缀和

剩下的工作是最大化 sx+syvxvy,斜率优化。

零和

大样例告诉我们选择的正数集合可以固定。甚至可以直接把大样例给出的正数集合拖到 Submission 上。剩下的选负数,尝试每个为零子集都只有一个负数,也就是说每个负数都是 [a2,a] 中的数字

背包计算 [0,a] 每个数字能被多少子集凑成。再背包计算使用最少负数使得为零子集数量为 i[0,106] 的方案(记录转移路径)

题解说任选一个长度为 22ai[1,5] 的正数序列都可以凑出合法方案,不会证明。

posted @   没学完四大礼包不改名  阅读(141)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示