传送门:UVA-1591
这题理解完感觉没啥难度,公式看来看去都没啥错误,就是在满足 (sp<<a+1)>>b >= sq的情况下(这是保证存储空间不重叠,因为对q来说相邻两个元素之间的空间就是上式的左边,其实稍微变换一下上式也等价于 (n-1)*(sp<<a+1)>>b+sq>=n*sq,就是总存储空间不小于连续存储空间),求总存储空间的最小值。但是提交总是WA,后来看了这位大佬的博客(https://blog.csdn.net/a197p/article/details/42322543)才发现a,b的范围是0到31,中间数据用long long 存储,我有的地方图省事乱用移位运算符,左移最多到31位,原本的代码把移位改成pow函数就能过了。
我试了一下,如果用long long定义一个(1<<30)*3,这里30<31,而且整个数据的值也没有超过long long的范围,但是结果是-1073741824,从试验来看似乎如果一个式子里用到了移位,会转化为int型(这里我没找到相关资料,有大佬能解答下吗,这里也看了这位博主的博文https://www.jb51.net/article/85530.htm),总之这种情况以后还是少用移位为好。