您的位置:首页 > 其它

HDU 2486 A simple stone game (K 倍动态减法博弈游戏,还未理解)

2015-05-01 23:42 204 查看
大神博客:http://www.cnblogs.com/jianglangcaijin/archive/2012/12/19/2825539.html
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int a[2100000];
int b[2100000];
int main()
{
int t;
cin >> t;
int icase = 1;
while (t--)
{
int n, m;
scanf("%d%d", &n, &m);
a[0] = b[0] = 1;
int i = 0;
int j = 0;
while (a[i] < n)
{
a[i + 1] = b[i] + 1;
while (a[j+1] * m < a[i + 1])j++;
if (a[j] * m < a[i + 1])b[i + 1] = b[j] + a[i + 1];
else
b[i+1] = a[i+1];
i++;
}
printf("Case %d: ", icase++);
if (n == a[i])
puts("lose");
else
{
int ans = 0;
while (n)
{
if (n >= a[i])n -= a[i], ans = a[i];
i--;
}
printf("%d\n", ans);
}
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: