Problem Description

N个人围成一圈在讨论大扫除的事情,需要选出K个人。但是每个人与他距离为2的人存在矛盾,所以这K个人中任意两个人的距离不能为2,他们想知道共有多少种方法。

 Input

第一行包含一个数T(T<=100),表示测试数据的个数。

接下来每行有两个数N,K,N表示人数,K表示需要的人数(1<=N<=1000,1<=K<=N)。

 Output

输出满足题意的方案数,方案数很大,所以请输出方案数mod 1,000,000,007 后的结果。

 Sample Input

24 28 3

 Sample Output

416

 Source

FOJ有奖月赛-2015年10月

这题可以用dp做,费了不少时间。。我们可以预处理出答案,枚举第一个与第二个的情况,然后设dp[i][j][k]表示当前循环到i,已经选了j个,最后两位的状态为k所对应的二进制状态,k=0,1,2,3,0表示当前这个和前面一个都没取,1表示当前这个没取,前面取了。

然后i就可以从3开始转移了,这里要注意,dp[2][1]的方案数要看做0。

#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 1006
ll rear[maxn][maxn];
ll dp[maxn][maxn][4];
#define MOD 1000000007LL void init()
{
int i,j,ii,jj,a;
memset(rear,0,sizeof(rear));
for(ii=0;ii<2;ii++){
for(jj=0;jj<2;jj++){
memset(dp,0,sizeof(dp));
dp[2][0][ii+jj*2]=1;
for(i=3;i<=1002;i++){
for(j=0;j<=i;j++){
for(a=0;a<4;a++){
if(a%2==0){
dp[i][j][0]=(dp[i][j][0]+dp[i-1][j][a])%MOD;
}
if(a==0 && j){
dp[i][j][1]=(dp[i][j][1]+dp[i-1][j-1][a])%MOD;
}
if(a%2==1){
dp[i][j][2]=(dp[i][j][2]+dp[i-1][j][a])%MOD;
}
if(a==1 && j){
dp[i][j][3]=(dp[i][j][3]+dp[i-1][j-1][a])%MOD;
} }
for(a=0;a<4;a++){
if( (a^(ii+jj*2))==0){
rear[i-2][j]=(rear[i-2][j]+dp[i][j][a])%MOD;
} } } } }
}
} int main()
{
init();
ll t;
scanf("%I64d",&t);
while(t--)
{
ll n,kk;
scanf("%I64d%I64d",&n,&kk);
int ans=0;
printf("%I64d\n",rear[n][kk]%MOD);
}
return 0;
}

fzu2200 cleaning的更多相关文章

  1. 【bzoj1672】[USACO2005 Dec]Cleaning Shifts 清理牛棚

    题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now ...

  2. Coursera-Getting and Cleaning Data-week1-课程笔记

    博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html -- Sunday, January 11, 2015 课程概述 G ...

  3. Coursera-Getting and Cleaning Data-Week2-课程笔记

    Coursera-Getting and Cleaning Data-Week2 Saturday, January 17, 2015 课程概述 week2主要是介绍从各个来源读取数据.包括MySql ...

  4. Coursera-Getting and Cleaning Data-Week3-dplyr+tidyr+lubridate的组合拳

    Coursera-Getting and Cleaning Data-Week3 Wednesday, February 04, 2015 好久不写笔记了,年底略忙.. Getting and Cle ...

  5. Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...

  6. 【BZOJ1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚 动态规划

    [BZOJ1672][Usaco2005 Dec]Cleaning Shifts Description Farmer John's cows, pampered since birth, have ...

  7. poj 2376 Cleaning Shifts

    http://poj.org/problem?id=2376 Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  8. POJ 2376 Cleaning Shifts(轮班打扫)

    POJ 2376 Cleaning Shifts(轮班打扫) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] Farmer ...

  9. POJ 2376 Cleaning Shifts 贪心

    Cleaning Shifts 题目连接: http://poj.org/problem?id=2376 Description Farmer John is assigning some of hi ...

随机推荐

  1. innodb是怎么刷新日志缓冲的

    当innodb把日志缓冲刷新到磁盘日志文件的时候,先会用一个mutex锁住缓冲区,刷新到所需要的位置,然后移动剩下的条目到缓冲区的前面,当mutex释放时,可能有超过一个事务已经准备好刷新其日志记录, ...

  2. 【Linux】CentOS7中修改中文字符集

    CentOS 7中字符集查看的方式是 locale -a   或者locale 如果想显示中文的话,应该修改为 LANG="zh_CN.UTF-8" 在命令行界面临时修改字符集的话 ...

  3. vue路由切换和用location切换url的区别

    最近的业务涉及到了axios的拦截器,要在request.js里面要根据状态码来跳转页面,这时候我就面对了几种跳转选择: 1.使用location.href='/url'来跳转,简单方便,但是刷新了页 ...

  4. Ice系列--傻瓜式服务开发IceBox

    前言 相信大家在没有接触过框架之前,都自己或多或少的开发过一些应用服务.每个应用服务除了业务配置还有很多环境配置,资源配置等,这些跟部署相关的配置.服务跟配置文件是一种静态绑定的方式,更新配置还需要重 ...

  5. 镍氢可充电电池2.4V转3.3V,2V转3.3V稳压供电输出电路图

    PW5100可以实现2.4V转3.3V,2V转3.3V的稳压电源电路,输出电流500MA.静态电流10uA,SOT23-5封装.输出纹波低,轻载性能高(轻载电感推荐6.8UH-10UH). PW510 ...

  6. Centos 7 网卡配置

    网卡配置位置 1 /etc/sysconfig/network-scripts/ifcfg-ethx  -----其中x为网卡名称,centos 默认网卡名称为ens33 如何配置  1 2 3 4 ...

  7. Django的数据库读写分离

    Django的数据库读写分离 1.首先是配置数据库 在settings.py文件中增加多个数据库的配置: DATABASES = { 'default': { 'ENGINE': 'django.db ...

  8. Python爬虫学习笔记(一)

    概念: 使用代码模拟用户,批量发送网络请求,批量获取数据. 分类: 通用爬虫: 通用爬虫是搜索引擎(Baidu.Google.Yahoo等)"抓取系统"的重要组成部分. 主要目的是 ...

  9. Spring 是如何解决循环依赖的?

    前言 相信很多小伙伴在工作中都会遇到循环依赖,不过大多数它是这样显示的: 还会提示这么一句: Requested bean is currently in creation: Is there an ...

  10. 简单的DbContext工厂类(EFCore)

    前言 根据appsettings.json的中配置的数据库类型,使用工厂模式创建DbContext 代码实现 appsettings.json中的配置项 //使用的数据库类型 "Server ...