2019 ICPC 徐州站 部分题解

A题

1-1e18的数
给一个LR区间还有一个S,找一个区间使得区间内的所有数的抑或小于等于S,求这个区间的最大长度。
LR都是超大的数,不可能遍历啊,只能找规律。
列了前面一些,发现偶数和相邻的一个奇数的抑或等于1,那么以任意偶数开头的四个相邻的数抑或起来就是0,也就是可以忽略了。
如果R是奇数,那么直接从R开始往前删掉4k个数,然后剩下的数暴力枚举。
如果R是偶数,那么从R-1的位置开始往前删掉4k个数,然后剩下的数和最后一个R放在一起暴力枚举。
如果区间长度小于5直接暴力枚举。

代码:(下次再补)

C题

也是1-1e18的数
给定一个区间,然后判断这个区间里素数的个数是不是小于区间长度的三分之一。
首先需要推出一个结论。一个常识就是素数越往后是越来越分散的。那么打表出来发现前100个数就只有不到30个素数,那么也就是所区间长度大于100的直接判断就行了。然后区间长度小于100的可以用区间筛筛出素数暴力判断。为 了保险起见还把100改成了10000。最后是一发过了。判断条件为100的没有提交。

代码(下次再补)

F题:

给定一个X,找到一个- 5000 <= a,b,c <= 5000 使得,a3+b3+c3 = x
首先先暴力枚举a,b a从0-5000,b从-5000 - 5000,计算a3+b3,并用结构体存起来,a,b的值也存起来。然后按值排序。
最后枚举c从-5000到5000,然后去二分查找这个值又没有枚举到,有就输出,否则impossible。
但是这题坑的是,结构体排序的时候就已经超时了,所以代码不可能通过的,但是,题目输入只有200个。可以打表先把所有的答案找出来,然后提交O(1)的
代码。

代码:(以后再补)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值