你好,对于这两题,我分享一下我的思路,不确定对不对。 第一题: 最短时间最好想:先确定最中间的那个球(如果总数是偶数,那就取中间两个球)的初始方向,那边快就朝哪边,然后其所有球初始方向不相撞就行。 最长时间:1个球(省略),2个球(左A,右B,A向右,B向左,两球发生碰撞,但是实际上等于没发生碰撞,求大值即可) 多个球(>=3)的情况: 整理思路: 第一步:设置最外侧两球A和B(左A,右B)方向,A向右,B向左。理由:如果A向左,它一定不是最长时间,也不影响最长时间(因为不会发生碰撞),B同理。 第二步:因为发生碰撞的两个球会交换运动方向,速度大小恒定,碰撞时两球在同一位置,所以等于两球是在不同平行线上的,没有发生碰撞。所以,A和B内部的任一球,均不会影响最长时间,可以删去。多球情况转化为两球,判断A和B的最长时间即可。 第二题: 黑子x,白子y,m不为0,m<n。现在轮到A拿棋子。(黑白数量可以交换) 当(x,y)=(0,m)or(m,m)时,A赢。 当(x,y)=(1,2)时,B赢。 易知:如果B取完棋子,A面对的是(1,2),B赢。 如何求解:从A输逆推,因为A面对(1,2)则输,故B赢的情况有:(1,2)+{(m,0),(0,m),(m,m)},算出B赢的所有情况(有上限)。剩下的就是A赢的情况,两种方案哪个可以实现,输出哪个。
点赞 2

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务