摘要: 原题链接 考察:数位dp 思路: 预处理的思路就是像背包dp那样不超过体积V的方案数,这里V对应f(a). #include <iostream> #include <cstring> #include <vector> using namespace std; typedef long long 阅读全文
posted @ 2021-05-29 22:53 acmloser 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:数位dp 这个用循环没想出来怎么写,反倒是dfs写法很容易理解(.),菜是原罪,如果有循环预处理写法请告诉本蒟蒻QAQ. 思路: 参考数位dp记搜模板.dfs带四个变量: LL dfs(int pos,int sum,int mid,bool limit) /*分别是枚举到第几位,平 阅读全文
posted @ 2021-05-29 20:57 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:数位dp 思路: 入门题(然后做了一个小时) 这里预处理方案数是用组合数.如果我们直接套模板会发现答案不对,因为我们不同数字的二进制位数不同,前导零不应该被计入. 先算出n有的二进制位数符合条件个数,然后再计算二进制位数比n小的即可. ##Code #include <iostrea 阅读全文
posted @ 2021-05-29 15:23 acmloser 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:数位dp 思路: 只从看了那道CF55D题我数位dp越写越懵(.) 这道题用容斥原理写的,有正常的循环写法: GO 要注意求的数不同,最后判断条件也不同. Code #include <iostream> #include <cstring> #include <vector> us 阅读全文
posted @ 2021-05-29 13:58 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:数位dp 思路: 应该是入门题,但我WA了两次....这道题直接求连续的49反而不大好求,我们反过来求不连续49的个数,然后再减去即可. ##Code #include <iostream> #include <cstring> #include <vector> using nam 阅读全文
posted @ 2021-05-29 11:47 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:贪心+思维 思路: 将所有数字化为k*p+b,每次优先队列更新最大值,都会将最大值的k压为次大值的k.我们从大到小遍历,求解k次操作后,最大值的k,已经确定最大值所在位置idx. 求完之后,k可能有多.需要将idxn 之间的数再均摊k.但是注意它们只能均摊idxn长度的k.剩下的k, 阅读全文
posted @ 2021-05-29 09:15 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:贪心 这题不难,但是本蒟蒻是fw.主要是没分析出点的性质,发现了点的个数很少后没啥反应(.) 思路: 注意到点的坐标是倍增增长的,根据起始坐标的范围,最大能运动到(2*1016,2*1016)处.a最小是2,因此最多是60个点. 接下来就没想到了,因为点坐标是倍增增大的,因此1~i的 阅读全文
posted @ 2021-05-29 03:05 acmloser 阅读(32) 评论(0) 推荐(0) 编辑