3033. 【NOIP2012模拟10.17】石子游戏
2016-09-23 20:05
253 查看
Description 两人取一堆n个石子 先手不能全部取完 之后每人取的个数不能超过另一个人上轮取的数*K。取完最后一个石子的人获胜。给n,K判断先手必胜并求第一步。 Input 输入文件名为 stone.in。 第一行为一个正整数t(1<=t<=10),表示共t组测试数据 接下来t行,每行包括两个正整数n,k Output 输出文件名为stone.out。 共t行,第i行先输出“Case i: ”(不包括引号),接着输出结果,若先手有必胜策略则输出第一次取的石子数(答案不唯一,输出第一步最小选几),否则输出lose。 Sample Input 5 16 1 11 1 32 2 34 2 19 3 Sample Output Case 1: lose Case 2: 1 Case 3: 3 Case 4: lose Case 5: 4 Data Constraint Hint 对于10%的数据k=1; 对于30%的数据1<=k<=2; 对于100%的数据2<=n<=100000000,1<=k<=100000。
解题思路:一开始看到题目,觉得应该是有规律的,但是找不出。既然找不出规律,就可以自己创造规律来做。我们创造数列a,b。一开始a[0] = 0,b[0] = 0.
当当前第i项小于n时,我们可以执行以下操作:
1.b[i+1] = a[i] + 1;
2.我们在i前面找一项t,使得a[t] * k >=a[i]。
3.如果a[t-1]=a[i],则b[i]=a[i] + b[t];
否则因为要用最大的a[t]来构造b[i],但是没有,所以为了满足条件,b[i] = a[i];
构造完后,我们看看第i项是否是否等于n,是的话就输出lose,否则将n分解成
从第i项到第某项的和(大于n为止)。
相关文章推荐
- 高中OJ3033【NOIP2012模拟10.17】石子游戏
- 高中OJ3046. 【NOIP2012模拟10.23】游戏
- 16.10.4 C:3046. 【NOIP2012模拟10.23】游戏
- 【NOIP2012模拟11.1】骰子游戏
- JZOJ3082. 【NOIP2012模拟11.1】骰子游戏
- NOIP 2012 提高组 DAY1 T2 国王游戏
- JZOJ【3072】【NOIP2012模拟10.31】掷骰子
- [NOIP2017模拟]豆豆游戏
- NOIP 2012 国王游戏
- 【搜索】[NOIP2012]mayan游戏
- 【NOIP2012模拟10.6】填充棋盘
- 【NOIP2012】国王游戏
- 中国剩余定理模板(JZOJ 3093. 【NOIP2012模拟11.7】合唱队形)
- 【NOIP2012模拟11.8】刪數
- 【NOIP2011模拟9.17】数字生成游戏
- jzoj 3076. 【备战NOIP2012图论专项模拟试题】位图
- 高中纪中OJ3077. 【备战NOIP2012图论专项模拟试题】外星人入侵 题解
- 【NOIP2012模拟11.1】塔(加强)
- 国王游戏 2012NOIP全国联赛提高组
- 3077. 【备战NOIP2012图论专项模拟试题】外星人入侵 (Standard IO)