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


  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6. const int N = 2000005;
  7.  
  8. int a[N],b[N];
  9.  
  10. int main()
  11. {
  12. int T,tt=1;
  13. int n,k;
  14. scanf("%d",&T);
  15. while(T--)
  16. {
  17. scanf("%d%d",&n,&k);
  18. a[0] = b[0] = 1;
  19. int i = 0;
  20. int j = 0;
  21. while(a[i] < n)
  22. {
  23. i++;
  24. a[i] = b[i-1] + 1;
  25. while(a[j+1] * k < a[i]) j++;
  26. if(a[j] * k < a[i]) b[i] = a[i] + b[j];
  27. else b[i] = a[i];
  28. }
  29. printf("Case %d: ",tt++);
  30. if(a[i] == n) puts("lose");
  31. else
  32. {
  33. int ans = 0;
  34. while(n)
  35. {
  36. if(n >= a[i])
  37. {
  38. n -= a[i];
  39. ans = a[i];
  40. }
  41. i--;
  42. }
  43. printf("%d\n",ans);
  44. }
  45. }
  46. return 0;
  47. }

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

  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6. typedef long long LL;
  7. const LL N = 3000005;
  8.  
  9. LL a[N],b[N];
  10.  
  11. int main()
  12. {
  13. LL T;
  14. LL n,k;
  15. scanf("%lld",&T);
  16. while(T--)
  17. {
  18. scanf("%lld%lld",&k,&n);
  19. a[0] = b[0] = 1;
  20. LL i = 0;
  21. LL j = 0;
  22. while(a[i] < n)
  23. {
  24. i++;
  25. a[i] = b[i-1] + 1;
  26. while(a[j+1] * k < a[i]) j++;
  27. if(a[j] * k < a[i]) b[i] = a[i] + b[j];
  28. else b[i] = a[i];
  29. }
  30. LL ans = 0;
  31. if(a[i] == n) ans = n - i - 1;
  32. else ans = n - i;
  33. printf("%lld\n",ans);
  34. }
  35. return 0;
  36. }

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. boost::thread boost库线程

    一.boost::thread的创建 1.线程创建方法一: boost::shared_ptr<boost::thread> writeThread_; boost::function0& ...

  2. OnClose()和 OnDestroy()

    OnClose()和 OnDestroy() 基于对话框的MFC程序,发现每次程序退出时,托盘的小图标不能自动消失,鼠标移上去之后才能消失,比较不爽. 后来发现我删除这个图标的代码是在自己重写的OnC ...

  3. 学习Swift--枚举的初步认识 --个人备忘 大神勿喷

    枚举定义了一个通用类型的一组相关值,使你可以在你的代码中以一种安全的方式来使用这些值. // 定义枚举的语法 enum Chips { // 定义了薯片的枚举,包含了3种口味的成员 case Toma ...

  4. Python处理XML

    在Python(以及其他编程语言)内有两种常见的方法处理XML:SAX(Simple API for XML)和DOM(Document Object Model,文档对象模型).SAX语法分析器读取 ...

  5. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  6. [AHOI2015 Junior] [Vijos P1943] 上学路上 【容斥+组合数】

    题目链接:Vijos - P1943 题目分析 这是 AHOI 普及组的题目,然而我并不会做= =弱到不行= = 首先,从 (x, 0) 到 (0, y) 的最短路,一定是只能向左走和向上走,那么用组 ...

  7. app内购提示,您已购买此商品,但未下载

    出现这样的问题,是支付没有finish造成的,一般在支付过程中断网了,下次再购买同一商品的时候就会出现这样的问题, 解决办法,在点击购买的时候判断支付队列中是否有为finish的商品,若有,则进行处理 ...

  8. Optimal Milking

    poj2112:http://poj.org/problem?id=2112 题意:K台挤奶机器,C头牛,K不超过30,C不超过200,每台挤奶机器最多可以为M台牛工作,给出这些牛和机器之间,牛和牛之 ...

  9. PYTHON调用JENKINS的API来进行CI

    我查到的相关API有两套,我主要用的是python-jenkins. https://pypi.python.org/pypi/python-jenkins/ 按语法调用即可... import je ...

  10. 【UVA10765】Doves and bombs (BCC求割点后联通块数量)

    题目: 题意: 给了一个联通无向图,现在问去掉某个点,会让图变成几个联通块? 输出的按分出的从多到小,若相等,输出标号从小到大.输出M个. 分析: BCC求割点后联通块数量,Tarjan算法. 联通块 ...