Stone Game, Why are you always there? HDU - 2999
2024-09-03 00:37:01
题目链接:https://vjudge.net/problem/HDU-2999
题意:有N堆石头,两个人交替取,每次只能取连续的k个石子,最后没有石子取得人输。
思路:如果我们每次取靠边的k个,那么转移方程就是sg[i-x],再模拟mex{}即可,如果取得是中间的那么就有可以分成几堆处理了。
1 #include <bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 int sg[1010],vis[1010],a[1010];
5 int n,m;
6 void init()
7 {
8 for(int i=1;i<=n;i++) cin>>a[i];
9 sort(a+1,a+1+n);
10 sg[0]=0;
11 for(int i=1;i<=1000;++i)
12 {
13 memset(vis,0,sizeof vis);
14 for(int j=1;j<=n;j++)
15 {
16 if(a[j]>i) break;
17 vis[sg[i-a[j]]]=1;
18 if(i-a[j]>1)
19 {
20 int tot=i-a[j];
21 for(int k=1;k<=tot-1;k++)
22 {
23 vis[sg[k]^sg[tot-k]]=1;
24 }
25 }
26 }
27 int j=0;
28 while(vis[j]) j++;
29 sg[i]=j;
30 }
31 }
32 int main()
33 {
34 while(cin>>n)
35 {
36 int k;
37 init();
38 cin>>m;
39 while(m--)
40 {
41 cin>>k;
42 puts(sg[k]?"1":"2");
43 }
44 }
45 return 0;
46 }
最新文章
- AJAX-----14HTML5中新增的API---files
- 使用JavaScript判断用户是否为手机设备
- Java多线程-新特性-有返回值的线程
- http 303 307 302 状态码理解
- Treap 模板 poj1442&;hdu4557
- Node.js初级
- JAVA锁的可重入性
- CentOS6.5安装elasticsearch+logstash+kibana
- 【one day one linux】linux下的软件包管理工具
- JavaScript局部变量变量和函数命名提升
- 一步步建立 Vue + Cesium 初始化项目
- Windows Java安装
- (C/C++)区别:数组与指针,指针与引用
- DeprecationWarning: Calling an asynchronous function without callback is deprecated. - how to find where the “function:” is?
- nodejs xpath
- MySQL C 客户端的内存泄漏问题
- Win10开启PIN码使用教程
- Python 转义符
- 个人关于python装饰器的白痴理解
- 修改testng源码,添加beforeMethod和afterMethod中的日志到test中(可以不改源码,废弃)