金融信创如何推动金融服务效率与安全的全面提升
709
2022-11-09
algorithm 题集二 (16.04.30)
继上一篇博文讲,有一类题不像上一篇博文的题那样简单但接触后感觉不难,这类题单独做了一个题集二。
POJ 2229 Sumsets
大意:求解一个数字分解成2的幂的方案数 7: 1) 1+1+1+1+1+1+1 2) 1+1+1+1+1+2 3) 1+1+1+2+2 4) 1+1+1+4 5) 1+2+2+2 6) 1+2+4 分析:注意看第一列,容易知道6和7的分解数一样,即奇数和小于它的最大偶数的一样。 再看第四行,看出来前四种方案都是4或者说5的分解,再将 5) 1+2+2+2 6) 1+2+4 看成 5) 1+1+1 6) 1+2 即3或者说2的分解。 前四种分解是n-2的分解 后两种是n>>1的分解 所以dp[n]=dp[n-2]+dp[n>>1]
#include
nefu 355 合成陨石
nefu 355 合成陨石 fz大学化学系的学生们最近发现了一种奇怪的陨石,这些陨石通过化学反应合成,会放出惊人的破坏力量。为了储存方便,化学系的学生们决定把这些陨石碎块合成一个大的陨石块。每一次合并,可以把两个陨石合成一个,放出的破坏能量是两个陨石的质量之和,而新产生的陨石质量是这两个陨石的质量之和。 为了将这次试验的破坏效果减少到最低,他们想请你帮忙,计算一下可以达到的最小破坏能量值。 分析:优先队列
#include nefu 831 统计good 给你一些英文单词,你能统计出good有多少个吗? sample_input 2 i am a good boy! goof good good dood good sample_output 1 3 分析:借助强大的C++字符流string, stringstream。 #include nyist 412 Same binary weight 大意:给出一个数字,其权重是二进制表示的1的个数。求解最小的数字,它大于给定的数字,且权重相同。 分析:使用STL的bitset解决二进制问题很便利。为保证权重不变,只需把原来的1变化位置,即进位和退位。比如:12 —— 1100 ——> 10001 45 —— 101101 ——>110011 #include POJ 3748 位操作 大意:假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其他位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。 #include POj 1284 Primitive Roots 大意:求出N内的原根的个数。 关于原根: gimod p≠gjmod p, 其中i≠j且i,j在1至(p-1)之间,则g为p的原根。 分析: 相关定理: 1)所有的奇素数都是有原根的 2)一个数n有原根,那么他有phi(phi(n))个模n不同余的原根(n是否是素数都可用) 3)一个素数有原根,则有phi(n-1)个原根 第二条就是解决问题的关键 nyist 19 擅长排列的小明 大意:求出n个数字中m个数字的组合的全排列情况 例如: 4 2 12 13 14 21 23 24 31 32 34 41 42 43 分析:使用C++里的next_permutation()写出所有的全排列情况,输出前m数字即可。 #include 51nod 1266 蚂蚁 只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬 回去。对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。 关键: 1和2相遇,掉头后,2看做1,1看做2,这样继续前进了。 51nod 1279 扔盘子 6 4 3 6 2 3 盘子:2 3 5 2 4 最终有4个盘子落在井内。 分析:dp,追踪最小值 #include poj 2773 Happy 2006 寻找第K个和M互质的数字: 分析:容斥原理+二分查找 #include CF 248B Chilly Willy 大意:求出最小能被2,3,5,7整除的N位数。 分析:四个质数的最小公倍数是210。于是N位数 210×10n−3 但是他不是最小的,最小数可以表示成:210×10n−3−210k 进一步处理成: (100+110)×10n−3−210k=10n−1+11×10n−2%210 nefu 887 循环小数化分数 分析: 对于一个循环小数,如 0.29(34)100x=29.3410000x=2934.349900x=2934−29=2905x=29059900 故求解循环部分和非循环部分的值及10^n后,按以上做差思路消除循环部分。得到X的分子和分母,化简即可。纯循环小数按上诉过程推导得到 value99⋯9n 非循环小数就不说了。 #include UVA 10025 The ? 1 ? 2 ? … ? n = k problem 大意:?1?2?3……?n=k,?可以取+或-,求解最小的n 分析:设非负数的和是s1,负数的和是s2,那么有 S1+S2=kS1−S2=(n+1)n2⟶2S1=k+n(n+1)22S2=k−n(n+1)2 所以,k−n(n+1)2≤0 , 且为偶数
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~