SRM 481 div2

 

       虽然比较失败 , 但是总结还是要写的 .

       第一题 CircleMarket 比较简单 , 遍历一遍得到最终的关门时间 endTime , 然后单纯的模拟就行了 , 从时间 0 开始到 endTime, 累加移动的时间 , 判断一下 , endTime 的时候就得到买了多少东西了 .

       第二题 ChickenOracle 想了好久还是不得要领 , 最终参考了各大牛的代码 , 但是逻辑依然乱的很 . 最终用下图表示终于清晰了 . 整个的 n 个人可以分为如下的 4 部分 . 如果设第三部分的人数为 x 的话 , 则第一部分就是 lieCount-x, 第二部分则是 n+x-lieCount-liarCount, 第四部分则是 liarCount-x.

       这样就比较清晰了,柯南说过,真像只有一个,那么最终说出的真像的个数(并不是真实真像的个数)就是第二部分和第三部分的和。然后假设一个真像,是鸡或者是蛋,然后各部分的数值均 >=0 即可。

       比如说,先有蛋是真像,那么 eggCount=x+(n+x-lieCount-liarCount); 那么用这个式子可以得出 x=(eggCount-n+lieCount+liarCount)/2, 如果 eggCount-n+lieCount+liarCount 2 的倍数,同时, 4 个部分均 >=0 ,即 x>=0 && lieCount>=0 && n+x-lieCount-liarCount>=0 && liarCount-x>=0 ,那么我们可以说,这样的 x 是存在的,即先有蛋是可能的。

       现有鸡的做法也一样,只不过公式变为 n-eggCount=x+(n+x-lieCount-liarCount); 后面的推理类似。

 

1 未知真相

说真话

2 知真相

说真话

3 未知真相

说假话

4 知真相

说假话

       第三题 BatchSystem 也很简单,就是操作系统中的短作业优先,贪心算法,需要注意的就是 int 的精度不够处理中间的的计算过程,即每个人的总的作业耗时。还有就是注意输出的格式,是要字典序的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值