UVA - 1591 Data Mining

传送门: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),总之这种情况以后还是少用移位为好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值