fzu2204 7
Problem Description
n个有标号的球围成一个圈。每个球有两种颜色可以选择黑或白染色。问有多少种方案使得没有出现连续白球7个或连续黑球7个。
Input
第一行有多组数据。第一行T表示组数。(T <= 20)
每组包含n,表示球的个数。(1 <= n <= 100000)
Output
每组先输出 "Case #x: " (其中x为当前组数) 该行接下来输出方案数。方案数mod 2015。
Sample Input
Sample Output
Source
FOJ有奖月赛-2015年10月
这道题可以用dp做,用dp[i][j][k]表示前i个球中,末尾连续j个白球,连续k个黑球的方案数,那么跟fzu2200那题一样,因为是环,所以我们可以枚举开始的状态(即开始有多少个黑球连续,这里我们只要考虑有几个黑球就行,因为是对称的,所以最后答案只要乘2就行了),然后每一步枚举取白球还是黑球,状态转移一下就行了。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
#define inf 0x7fffffff
#define maxn 100050
#define MOD 2015
ll dp[maxn][7][7],rear[maxn];
void init()
{
int i,j,k,ii,jj;
memset(rear,0,sizeof(rear));
for(k=1;k<=6;k++){
memset(dp,0,sizeof(dp));
dp[k+1][1][0]=1;
for(i=k+1;i<=100020;i++){
//放黑球
for(ii=1;ii<=6;ii++){
dp[i][0][1]=(dp[i][0][1]+dp[i-1][ii][0])%MOD;
}
for(ii=1;ii<=5;ii++){
dp[i][0][ii+1]=(dp[i][0][ii+1]+dp[i-1][0][ii])%MOD;
}
//放白球
for(ii=1;ii<=6;ii++){
dp[i][1][0]=(dp[i][1][0]+dp[i-1][0][ii])%MOD;
}
for(ii=1;ii<=5;ii++){
dp[i][ii+1][0]=(dp[i][ii+1][0]+dp[i-1][ii][0])%MOD;
}
//加入到答案中
for(ii=1;ii<=6;ii++){
rear[i]=(rear[i]+dp[i][ii][0])%MOD;
}
for(ii=1;ii+k<7;ii++){
rear[i]=(rear[i]+dp[i][0][ii])%MOD;
}
}
}
}
int main()
{
int n,m,i,j,T,cas=0;
init();
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
cas++;
printf("Case #%d: ",cas);
if(n<=6){
int ans=1;
for(i=1;i<=n;i++)ans*=2;
printf("%d\n",ans);
continue;
}
printf("%I64d\n",rear[n]*2%MOD);
}
return 0;
}
fzu2204 7的更多相关文章
- fzu2204 dp
2015-10-06 19:31:05 n个有标号的球围成一个圈.每个球有两种颜色可以选择黑或白染色.问有多少种方案使得没有出现连续白球7个或连续黑球7个. 每组包含n,表示球的个数.(1 <= ...
随机推荐
- Python模块化编程与装饰器
Python的模块化编程 我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不同的顺序来打印一个字符串: # r ...
- Openstack Nova 控制服务 和 计算服务 (六)
Openstack Nova 控制服务 和 计算服务 (六) 引用: https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/nova.htm ...
- 阿里云VOD(三)
一.视频播放器 参考文档:https://help.aliyun.com/document_detail/125570.html?spm=a2c4g.11186623.6.1083.1c53448bl ...
- 如何创建一个Java项目
目录 新建项目 项目信息配置 创建Java类 编译和运行 新建项目 首先双击eclipse进入到eclipse页面. 菜单"File"下的"New"里" ...
- 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! 四.聚合分析 4.1 ...
- STL_常用的算法
STL_常用的算法 一.常用的查找算法 adjacent_find() adjacent_find(iterator beg, iterator end, _callback); 在iterator对 ...
- 使用Linux服务器来通过网络安装和激活Windows 7 —— 一些基本原理
使用Linux服务器来通过网络安装和激活Windows 7 -- 一些基本原理 https://www.pufengdu.org/blog/?p=372
- NULL-safe equal null 索引 空字符串
小结 1. mysql> INSERT INTO my_table (phone) VALUES (NULL); 有手机号但是不知道 mysql> INSERT INTO my_table ...
- [Python]编码声明:是coding:utf-8还是coding=utf-8呢
PEP 263 -- Defining Python Source Code Encodings | Python.org https://www.python.org/dev/peps/pep-02 ...
- linux 文件结构体和文件描述符号的学习
https://blog.csdn.net/cywosp/article/details/38965239