题目:http://acm.hdu.edu.cn/showproblem.php?pid=2580


#include <iostream>
#include <string.h>
#include <stdio.h> using namespace std;
const int N = 2000005; int a[N],b[N]; int main()
{
int T,tt=1;
int n,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
a[0] = b[0] = 1;
int i = 0;
int j = 0;
while(a[i] < n)
{
i++;
a[i] = b[i-1] + 1;
while(a[j+1] * k < a[i]) j++;
if(a[j] * k < a[i]) b[i] = a[i] + b[j];
else b[i] = a[i];
}
printf("Case %d: ",tt++);
if(a[i] == n) puts("lose");
else
{
int ans = 0;
while(n)
{
if(n >= a[i])
{
n -= a[i];
ans = a[i];
}
i--;
}
printf("%d\n",ans);
}
}
return 0;
}

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3599

#include <iostream>
#include <string.h>
#include <stdio.h> using namespace std;
typedef long long LL;
const LL N = 3000005; LL a[N],b[N]; int main()
{
LL T;
LL n,k;
scanf("%lld",&T);
while(T--)
{
scanf("%lld%lld",&k,&n);
a[0] = b[0] = 1;
LL i = 0;
LL j = 0;
while(a[i] < n)
{
i++;
a[i] = b[i-1] + 1;
while(a[j+1] * k < a[i]) j++;
if(a[j] * k < a[i]) b[i] = a[i] + b[j];
else b[i] = a[i];
}
LL ans = 0;
if(a[i] == n) ans = n - i - 1;
else ans = n - i;
printf("%lld\n",ans);
}
return 0;
}

K倍动态减法游戏的更多相关文章

  1. ZOJ 3599 K倍动态减法游戏

    下面的文字辅助理解来自http://blog.csdn.net/tbl_123/article/details/24884861 博弈论中的 K倍动态减法游戏,难度较大,参看了好多资料才懵懂! 此题可 ...

  2. uva 1567 - A simple stone game(K倍动态减法游戏)

    option=com_onlinejudge&Itemid=8&page=show_problem&problem=4342">题目链接:uva 1567 - ...

  3. Poj-3922 A simple stone game(k倍动态减法)

    题意: 游戏是这样的:两个玩家以一堆n个石头开始游戏.他们轮流从石堆里取石头,每次至少取一块.先走的人第一步最多可以拿n-1块石头.从那时起,一个玩家最多可以拿k倍于他的对手上次拿的石头.例如,如果一 ...

  4. k倍区间(解题报告)前缀和简单应用

    测评地址 问题 1882: [蓝桥杯][2017年第八届真题]k倍区间 时间限制: 1Sec 内存限制: 128MB 提交: 351 解决: 78 题目描述 给定一个长度为N的数列,A1, A2, . ...

  5. 【Unity3D】Unity3D之 注册表动态存取游戏存档——PlayerPrefs类

    [Unity3D]Unity3D之 注册表动态存取游戏存档--PlayerPrefs类 1.Unity3D提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的 ...

  6. 2017第八届蓝桥杯 K倍区间

    标题: k倍区间 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  7. 蓝桥杯试题 k倍区间(dp)

    问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  8. k倍区间

    看大佬的代码看了半天,终于算是懂了 标题: k倍区间 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就 ...

  9. 第八届蓝桥杯省赛 K倍区间

    问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

随机推荐

  1. a+b(高精度)[陈涛]——c语言

    #include<stdio.h>#include<string.h>char s[1000];---------------------------------------- ...

  2. MFC中控件的TAB顺序 ----转载

    在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...

  3. hibernate一些方法

    session.flush() 同步缓存与数据库数据 session.evict(obj) 关闭指定对象缓存 session.clear() 关闭所有缓存 iterator(会把数据放入缓存)  下次 ...

  4. Setup FTP Server On CentOS, RHEL, Scientific Linux 6.5/6.4/6.3

    setsebool allow_ftpd_full_access onsetsebool -P ftp_home_dir on vsftpd (Very Secure File Transport P ...

  5. PHP设计模式之:策略模式

    <?phpabstract class Strategy{    public abstract function AlgorithmInterface();} class ConcreteSt ...

  6. 使用jQuery播放/暂停 HTML5视频

    文章来自:http://blog.okbase.net/jquery2000/archive/4485.html 我尝试用jQuery控制HTML5视频,两个视频分别在两个tab中,我希望点中tab后 ...

  7. smali 语法之if语句

    # virtual methods .method public onClick(Landroid/view/View;)V .locals 3 .parameter "v" .p ...

  8. android ListView 多次调用 getView方法

    <ListView            android:layout_width="match_parent"            android:layout_heig ...

  9. matlab读取指定路径下的图像

    利用matlab读取指定路径下的图像 %% 读入指定路径imgFolder下的图像imgName imgFolder = 'F:\博\快盘\图像+数据\images\文章实验图'; %指定路径 img ...

  10. ie8如何支持html5

    两种方法 : 一:Coding JavaScript <!--[if lt IE9]> <script>    (function() {     if (!      /*@ ...