3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
时间:2022-05-08
本文章向大家介绍3404: [Usaco2009 Open]Cow Digit Game又见数字游戏,主要内容包括3404: [Usaco2009 Open]Cow Digit Game又见数字游戏、Description、Input、Output、Sample Input、Sample Output、HINT、Source、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 72 Solved: 48
Description
贝茜和约翰在玩一个数字游戏.贝茜需要你帮助她.
游戏一共进行了G(1≤G≤100)场.第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000).游
戏规则是这样的:双方轮流操作,将当前的数字减去一个数,这个数可以是当前数字的最大数码,也可以是最小的非0数码.比如当前的数是3014,操作者可以减去1变成3013,也可以减去4变成3010.若干次操作之后,这个数字会变成0.这时候不能再操作的一方为输家. 贝茜总是先开始操作.如果贝茜和约翰都足够聪明,执行最好的策略.请你计算最后的赢家.
比如,一场游戏开始于13.贝茜将13减去3变成10.约翰只能将10减去1变成9.贝茜再将9减去9变成0.最后贝茜赢.
Input
第1行输入一个整数G,之后G行一行输入一个Ni.
Output
对于每一场游戏,若贝茜能赢,则输出一行“YES”,否则输幽一行“NO”
Sample Input
2 9 10
Sample Output
YES NO
HINT
For the first game, Bessie simply takes the number 9 and wins.
For the second game, Bessie must take 1 (since she cannot take 0), and then
FJ can win by taking 9.
Source
题解:很萌的博弈论问题。。。但是我还是在读题上逗比了N次——第一次我以为每次可以减去 1-最大的位数 ;第二次我以为可以减去 最小的位数-最大的位数 ;直到第三次才发现只可以减去最大位数和最小位数。。。别的没了,博弈论经典算法AC之
PS:不过虽然AC了,但是2800ms+,时限为3s,这个速度比较滚粗,于是本人打算明天再来一发优化题解么么哒!!!
1 /**************************************************************
2 Problem: 3404
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:2804 ms
7 Memory:9992 kb
8 ****************************************************************/
9
10 var
11 i,j,k,l,m,n,t:longint;
12 a:array[0..1000005,1..2] of boolean;
13 b:array[0..1000005,1..2] of longint;
14 function max(x,y:longint):longint;
15 begin
16 if x>y then max:=x else max:=y;
17 end;
18 function min(x,y:longint):longint;
19 begin
20 if x<y then min:=x else min:=y;
21 end;
22 begin
23 a[0,1]:=false;a[0,2]:=true;
24 for i:=1 to 1000000 do
25 begin
26 j:=i;k:=1;t:=9;
27 while j>0 do
28 begin
29 k:=max(k,j mod 10);
30 if (j mod 10)>0 then t:=min(t,j mod 10);
31 j:=j div 10;
32 end;
33 a[i,1]:=false;
34 if a[i-t,2] then a[i,1]:=true;
35 if a[i-k,2] then a[i,1]:=true;
36 a[i,2]:=true;
37 if not(a[i-t,1]) then a[i,2]:=false;
38 if not(a[i-k,1]) then a[i,2]:=false;
39 end;
40 readln(n);
41 for i:=1 to n do
42 begin
43 readln(m);
44 if a[m,1] then writeln('YES') else writeln('NO');
45 end;
46 readln;
47 end.
- 整站40万条房价数据并行抓取,可更换抓取城市
- 大分区表的手工并行优化
- DBMS_STATS收集统计信息的问题及解决
- linux kernel引发的oracle问题及解决
- listener.ora,tnsnames.ora中一个空格的威力
- 【专业技术】Linux设备驱动第六篇:高级字符驱动操作之iotcl
- 有关Oracle role的总结
- 关于连续登录的问题探究
- 数据库突然宕机无法open的问题及解决
- ORA-01461问题的对比测试
- shell动态脚本和pl/sql动态脚本的比较
- alert日志中出现ash size的警告
- 【Android基础】Android利用Intent与其他应用交互
- 探究AWR 第一篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 机器学习:如何快速从Python栈过渡到Scala栈
- Android studio实现加法软件
- 解决php extension 加载顺序问题
- Android 获取drawable目录图片 并存入指定文件的步骤详解
- php基于 swoole 实现的异步处理任务功能示例
- PHP中Session ID的实现原理实例分析
- php5.6.x到php7.0.x特性小结
- android自定义加减按钮
- php链式操作的实现方式分析
- php中的依赖注入实例详解
- Android通知栏前台服务的实现
- Laravel 默认邮箱登录改成用户名登录的实现方法
- Android Studio实现简单计算器APP
- 基于PHP实现微信小程序客服消息功能
- python gstreamer实现视频快进/快退/循环播放功能