K倍动态减法游戏
题目: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倍动态减法游戏的更多相关文章
- ZOJ 3599 K倍动态减法游戏
下面的文字辅助理解来自http://blog.csdn.net/tbl_123/article/details/24884861 博弈论中的 K倍动态减法游戏,难度较大,参看了好多资料才懵懂! 此题可 ...
- uva 1567 - A simple stone game(K倍动态减法游戏)
option=com_onlinejudge&Itemid=8&page=show_problem&problem=4342">题目链接:uva 1567 - ...
- Poj-3922 A simple stone game(k倍动态减法)
题意: 游戏是这样的:两个玩家以一堆n个石头开始游戏.他们轮流从石堆里取石头,每次至少取一块.先走的人第一步最多可以拿n-1块石头.从那时起,一个玩家最多可以拿k倍于他的对手上次拿的石头.例如,如果一 ...
- k倍区间(解题报告)前缀和简单应用
测评地址 问题 1882: [蓝桥杯][2017年第八届真题]k倍区间 时间限制: 1Sec 内存限制: 128MB 提交: 351 解决: 78 题目描述 给定一个长度为N的数列,A1, A2, . ...
- 【Unity3D】Unity3D之 注册表动态存取游戏存档——PlayerPrefs类
[Unity3D]Unity3D之 注册表动态存取游戏存档--PlayerPrefs类 1.Unity3D提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的 ...
- 2017第八届蓝桥杯 K倍区间
标题: k倍区间 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...
- 蓝桥杯试题 k倍区间(dp)
问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...
- k倍区间
看大佬的代码看了半天,终于算是懂了 标题: k倍区间 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就 ...
- 第八届蓝桥杯省赛 K倍区间
问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...
随机推荐
- a+b(高精度)[陈涛]——c语言
#include<stdio.h>#include<string.h>char s[1000];---------------------------------------- ...
- MFC中控件的TAB顺序 ----转载
在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...
- hibernate一些方法
session.flush() 同步缓存与数据库数据 session.evict(obj) 关闭指定对象缓存 session.clear() 关闭所有缓存 iterator(会把数据放入缓存) 下次 ...
- 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 ...
- PHP设计模式之:策略模式
<?phpabstract class Strategy{ public abstract function AlgorithmInterface();} class ConcreteSt ...
- 使用jQuery播放/暂停 HTML5视频
文章来自:http://blog.okbase.net/jquery2000/archive/4485.html 我尝试用jQuery控制HTML5视频,两个视频分别在两个tab中,我希望点中tab后 ...
- smali 语法之if语句
# virtual methods .method public onClick(Landroid/view/View;)V .locals 3 .parameter "v" .p ...
- android ListView 多次调用 getView方法
<ListView android:layout_width="match_parent" android:layout_heig ...
- matlab读取指定路径下的图像
利用matlab读取指定路径下的图像 %% 读入指定路径imgFolder下的图像imgName imgFolder = 'F:\博\快盘\图像+数据\images\文章实验图'; %指定路径 img ...
- ie8如何支持html5
两种方法 : 一:Coding JavaScript <!--[if lt IE9]> <script> (function() { if (! /*@ ...