题目 思路 全都是位运算,考虑按照二进制拆分进行dp。f[i][j]表示前i个数,二进制的第j位为1的概率。对于为0的概率,直接用(1 f[i][j])即可。 然后就是转移,其实这个题转移蛮好想的,只要一点一点慢慢推就可以了。 PS:注意题目中的$c_i$表示的是第i个运算"不"进行的概率。某位大( ...
分类:
其他好文 时间:
2018-10-16 17:41:51
阅读次数:
94
用位运算将幂指数转化成二进制,幂指数二进制展开,再将幂运算按指数的二进制拆分开来计算,这样便减少了运算的次数。(我TM在说什么) ...
分类:
其他好文 时间:
2018-09-04 19:11:56
阅读次数:
169
题目传送门:https://arc102.contest.atcoder.jp/tasks/arc102_b 这道题有点毒瘤啊,罚时上天。。 显然若$ l=2^n $那么就可以直接二进制拆分,但是如果不满足这个要求就有点难办了。。。 但是我们可以按照数位dp的那个树形结构一样,把整个区间$ [0,l ...
分类:
其他好文 时间:
2018-09-02 00:08:33
阅读次数:
201
题目链接:https://vjudge.net/problem/POJ-1276 题意:有现今cash,和n种钱币,每种钱币有ni个,价值为di,求各种钱币组成的不超过cash的最大钱数....... 思路:二进制拆分转化为01背包,或者转化为完全背包都是可以的 完全背包: ...
分类:
系统相关 时间:
2018-06-07 19:18:02
阅读次数:
224
1.倍增LCA 通过记录f[i][j],每个点第2的j次方个父亲的编号,来找LCA 代码中,先要处理出每个点的深度,和father(f[i][0]),然后倍增求出所有的祖先。 work的时候,利用二进制拆分的思想,先把两个节点向上翻到同一个深度,再同时向上翻,直到到了lca的儿子位置,再返回f[x] ...
分类:
其他好文 时间:
2018-05-13 13:45:16
阅读次数:
164
介绍一种解决最近公共祖先的在线算法,倍增,它是建立在任意整数的二进制拆分之上。 代码: ...
分类:
编程语言 时间:
2018-05-06 20:08:59
阅读次数:
228
【题解】 显然是个多重背包。但直接写背包会超时。所以我们试着优化。 怎么优化?我们发现,每个物品的个数$ai$可以拆分成几个数的和,用这些数中的某几个之和可以表示出$1~ai$的数,并且不会超过$ai$ 这样我们可以把ai个相同的物品拆分成若干个互相独立的物品,然后跑01背包。 那么如何对$ai$进 ...
分类:
其他好文 时间:
2018-01-22 21:16:27
阅读次数:
141
自定义Base16加密原理 Base16加密跟Base64加密原理上有点不同,当然前面转换是一样的,都是是将输入的字符串根据默认编码转换成一个字节序列,而这个字节序列里面其实就是存的ASCII码,其次,将每个ASCII码转换成8位二进制,每个八位二进制拆分成4位一组的二进制,然后将每4位一组的二进制 ...
分类:
其他好文 时间:
2017-11-10 16:57:12
阅读次数:
140
期望得分:100+100+40=240 实际得分:100+0+40=140 二进制拆分、二进制前缀和 #include<cstdio> #include<iostream> using namespace std; typedef long long LL; #define N 100001 int ...
分类:
其他好文 时间:
2017-10-10 00:11:01
阅读次数:
247
A. Apple 按题意模拟即可。 B. Bar charts 关于序列的前缀和建立差分约束系统,SPFA判断是否存在负环。 C. Construction sets 二分答案,二进制拆分背包+bitset检验。 D. Dinner party $f[i][j]$表示面积和为$i$的矩形,周长和为$ ...
分类:
其他好文 时间:
2017-09-15 10:15:46
阅读次数:
200