【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
Description
Input
Output
Sample Input
Sample Output
【数据规模和约定】
对于100%的数据,有1<=d<=k<=n<=10000, k为偶数,k<=100。
HINT
Source
【分析】
很经典的题目,很不错。
我们将相邻的棋子看成一对,显然,在最后的情况下,每对棋子都是紧贴在一起的。
对于每对棋子,白棋在左边,黑棋在右边,那么白棋就只能往右边走,黑棋也只能往左边走,否则若白棋往左边,黑棋也可以往左边,情况不会有改变。
那么若将每对棋子之间的距离看成一堆石子的数量,就变成经典的nim游戏。
然后用nimk的理论做就行了。
DP有点难想...看代码就看得懂了
/*
唐代白居易
《问刘十九》
绿蚁新醅酒,红泥小火炉。
晚来天欲雪,能饮一杯无。*/ #include <set>
#include <map>
#include <cmath>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define LOCAL
const int MAXL = ;
const long long MOD = ;
const int MAXK = + ;
const int MAXN = + ;
using namespace std;
typedef long long ll;
ll f[][MAXN * ];
ll c[MAXK][], n, K, d; ll C(ll a, ll b){
if (a == b) return 1ll;
//if (b > a - b) b = a - b;
return c[a][b] % MOD;
}
void prepare(){//预处理组合数
memset(c, , sizeof(c));
c[][] = ;
for (ll i = ; i <= 10005ll; i++){
c[i][] = 1ll;
//if (i <= 210) c[i][i] = 1;
for (ll j = ; j < min(i, 250ll); j++)
c[i][j] = (C(i - , j) + C(i - , j - )) % MOD;
}
//for (ll i = 1; i <= 50; i++)
//for (ll j = 0; j <= i; j++) printf("%d %d:%d\n", i, j, C[i][j]);
//printf("%d\n", C[10][2]);
}
void dp(){
K /= ;
memset(f, , sizeof(f));
f[][] = ;//第0位
for (ll i = ; i <= ; i++){
for (ll j = ; j <= n - * K; j++)//注意这一层不需要枚举到n了,因为只有这么多的空位
for (ll k = ; (k * (d + ) <= K) && (k * (d + ) * (1ll<<(i - )) <= j); k++){
f[i][j] = (f[i][j] + (f[i - ][j - k * (d + ) * (1ll<<(i - ))] * C(K, k * (d + ))) % MOD) % MOD; }
}
ll Ans = ;
for (ll i = ; i <= n - * K; i++) Ans = (Ans + (f[][i] * C(n - i - K * + K, K)) % MOD) % MOD;
printf("%lld\n", (C(n, * K) - Ans + MOD) % MOD);
} int main(){ prepare();
scanf("%lld%lld%lld", &n, &K, &d);
dp();
//n的距离,k个石头,1~d次移动
return ;
}
【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋的更多相关文章
- 【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划)
[BZOJ2281][SDOI2011]黑白棋(博弈论,动态规划) 题面 BZOJ 洛谷 题解 先看懂这题目在干什么. 首先BZOJ上面的题面没有图,换到洛谷看题就有图了. 不难发现都相邻的两个异色棋 ...
- [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
2281: [Sdoi2011]黑白棋 Time Limit: 3 Sec Memory Limit: 512 MBSubmit: 626 Solved: 390[Submit][Status][ ...
- Bzoj 2281 [Sdoi2011]黑白棋 题解
2281: [Sdoi2011]黑白棋 Time Limit: 3 Sec Memory Limit: 512 MBSubmit: 592 Solved: 362[Submit][Status][ ...
- P2490 [SDOI2011]黑白棋
P2490 [SDOI2011]黑白棋 题意 一个 \(1*n\) 的棋盘上,A 可以移动白色棋子,B 可以移动黑色的棋子,其中白色不能往左,黑色不能往右.他们每次操作可以移动 1 到 \(d\) 个 ...
- BZOJ 2281: [Sdoi2011]黑白棋 (Nim游戏+dp计数)
题意 这题目有一点问题,应该是在n个格子里有k个棋子,k是偶数.从左到右一白一黑间隔出现.有两个人不妨叫做小白和小黑.两个人轮流操作,每个人可以选 1~d 枚自己颜色的棋子,如果是白色则只能向右移动, ...
- [SDOI2011]黑白棋
Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...
- bzoj 2281 [Sdoi2011]黑白棋(博弈+组合计数)
黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色 ...
- BZOJ2281:[SDOI2011]黑白棋(博弈论,组合数学,DP)
Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...
- BZOJ2281[Sdoi2011]黑白棋&BZOJ4550小奇的博弈——DP+nimk游戏
题目描述 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小A可以移动白色 ...
随机推荐
- gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架 gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架 Google Guava官方教程(中文版 ...
- 普通Java程序员学习使用的6个JDK内建工具
与你的问题不同,我认为软件工程主要是用来解决问题的.有些博客认为“每个小孩都应该学习编程”,“你认为学数学只是玩玩而已?如果你有看过我的HTML5调试器的话,你会发现我是一个程序员,但我做的工作远不止 ...
- 【转】Gabor 入门
Computer Vision Tutorials Search Primary Menu Skip to content Tutorials Search for: Gabor Filters ...
- LogMiner学习笔记
本文是个实战,没有讲太多理论的东西,如需详细理解Oracle LogMiner,请移步:LogMiner详细讲解 首先介绍一下我的oracle环境: 第一步: 确定LogMiner已经安装. 安装Lo ...
- poj1691绘画板
1 7 0 0 2 2 1 0 2 1 6 2 2 0 4 2 1 1 2 4 4 2 1 4 3 6 1 4 0 6 4 1 3 4 6 6 2 #include<stdio.h> #i ...
- 深入解析Java中volatile关键字的作用
转(http://m.jb51.net/article/41185.htm)Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制 在java线 ...
- 纪录参加noip2015(pj+tg)复赛
作为一个既参加了pj又参加了tg的初三蒟蒻,本次复赛不得不算一次很happy的事(可以不做周末作业,可以逃掉小班培训) 昨年参加pj的时候,一题眼瞎,二题作死,只有三题蒙了一点分,简直差到一种境界. ...
- asp.net 动态添加多附件上传.
最近有人问起动态多文件上传,想要做到类似于邮箱添加附件的效果,这个功能其实比较简单,就是往form中添加file元素.在用户选择完文件后,再添加一个file控件,由于file控件过多,视觉上不好看,所 ...
- AnonymousType匿名类型和对象之间的转换
本文转载:http://www.cnblogs.com/dean-Wei/p/3150553.html 一.匿名对象转换为对象. 1.问题: 2.解决方案:强制指定类型. 解决之. 二. 对象转换为匿 ...
- DB2 数据库绑定用户授权命令
1.1 数据库绑定用户授权命令 db2 connect to opca db2 grant dbadm,createtab,bindadd,connect,create_not_fenced_rou ...