[Usaco2008 Nov]mixup2 混乱的奶牛

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 1204  Solved: 698
[Submit][Status][Discuss]

Description

混乱的奶牛
[Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i
(1 <= S_i <= 25,000). 奶牛为她们的编号感到骄傲, 所以每一头奶牛都把她的编号刻在一个金牌上,
并且把金牌挂在她们宽大的脖子上. 奶牛们对在挤奶的时候被排成一支"混乱"的队伍非常反感. 如果一个队伍里任意两头相邻的奶牛的编号相差超过K (1
<= K <= 3400), 它就被称为是混乱的. 比如说,当N = 6, K = 1时, 1, 3, 5, 2, 6, 4
就是一支"混乱"的队伍, 但是 1, 3, 6, 5, 2, 4 不是(因为5和6只相差1). 那么,
有多少种能够使奶牛排成"混乱"的队伍的方案呢?

Input

* 第 1 行: 用空格隔开的两个整数N和K

* 第 2..N+1 行: 第i+1行包含了一个用来表示第i头奶牛的编号的整数: S_i

Output

第 1 行: 只有一个整数, 表示有多少种能够使奶牛排成"混乱"的队伍的方案. 答案保证是 一个在64位范围内的整数.

Sample Input

4 1
3
4
2
1

Sample Output

2

输出解释:

两种方法分别是:
3 1 4 2
2 4 1 3

题解:设f[i][j]表示以第i个奶牛结尾,奶牛的选择状态为j的方案数。
转移方程也比较简单 f[k][(1<<(k-1))|j]+=f[i][j];(abs(a[k]-a[i])>K,(1<<(k-1))|j!=j,(1<<(i-1))&j!=0)
初始令f[i][1<<i]=1即可。
 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int n,kk,p[],a[],maxx;
long long f[][<<],ans;
int main(){
scanf("%d%d",&n,&kk);maxx=(<<n)-;
for(int i=;i<=n;i++){scanf("%d",&a[i]);p[i]=<<(i-);}
for (int i=;i<=n;i++)f[i][p[i]]=;
for (int i=;i<=maxx;i++)
for (int j=;j<=n;j++)
if (p[j]&i)
for (int k=;k<=n;k++)
if ((p[k]|i)!=i&&abs(a[k]-a[j])>kk) f[k][p[k]|i]+=f[j][i];
for (int i=;i<=n;i++) ans+=f[i][maxx];
cout<<ans<<endl;
}

bzoj[Usaco2008 Nov]mixup2 混乱的奶牛 状压dp的更多相关文章

  1. bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 -- 状压DP

    1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec  Memory Limit: 162 MB Description 混乱的奶牛 [Don Pi ...

  2. bzoj1231[Usaco2008 Nov]mixup2 混乱的奶牛(状压dp)

    1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1032  Solved: 588[ ...

  3. B1231 [Usaco2008 Nov]mixup2 混乱的奶牛 状压dp

    发现是状压dp,但是还是不会...之前都白学了,本蒟蒻怎么这么菜,怎么都学不会啊... 其实我位运算基础太差了,所以状压学的不好. 题干: Description 混乱的奶牛 [Don Piele, ...

  4. bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛——状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1231 小型状压DP: f[i][j] 表示状态为 j ,最后一个奶牛是 i 的方案数: 所以 ...

  5. 【bzoj1231】[Usaco2008 Nov]mixup2 混乱的奶牛 状态压缩dp

    题目描述 混乱的奶牛[Don Piele, 2007]Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= ...

  6. BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 状态压缩dp

    开始读错题了,然后发现一眼切~ Code: #include <cstdio> #include <algorithm> #define ll long long #defin ...

  7. BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛( dp )

    状压dp dp( x , S ) 表示最后一个是 x , 当前选的奶牛集合为 S , 则状态转移方程 : dp( x , S ) =  Σ dp( i , S - { i } )  ( i ∈ S , ...

  8. [Usaco2008 Nov]mixup2 混乱的奶牛 简单状压DP

    1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 685  Solved: 383[S ...

  9. 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 - BZOJ

    Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S ...

随机推荐

  1. centos7 python3 Saltstack配置

    Python安装完毕后,提示找不到ssl模块 pip is configured with locations that require TLS/SSL, however the ssl module ...

  2. 《毛毛虫团队》第九次团队作业:BETA冲刺与团队项目验收

    一:实验名称:Beta冲刺与验收准备 二:实验目的与要求 (1)掌握软件黑盒测试技术: (2)学会编制软件项目总结PPT.项目验收报告: (3)掌握软件项目验收内容,验收流程. 三.实验内容与步骤 任 ...

  3. iOS快速开发框架--Bee Framework

    Bee Framework是一款iOS快速开发框架,允许开发者使用Objective-C和XML/CSS来进行iPhone和iPad开发,由 Gavin Kwoe 和 QFish 开发并维护. 其早期 ...

  4. 在2d游戏中常用的向量方式

    function cc.exports.VectorRotateByAngle(vector,angle)--计算向量旋转后的向量,angle:正数逆时针,负输顺时针 angle = angle*ma ...

  5. MFC里 显示设备上下文CClient dc(this) 和 CPaintDC dc(this)

    1 CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中.(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消 ...

  6. Android读书笔记三

    通过一章的学习体会到Git的重要性,因为想要获取开源的源代码,必须要使用Git,而且Linux内核完全是由Git管理的.Git是对源代码进行管理,在使用之前需要先安装,命令是 (1)apt-get i ...

  7. Matlab-plot绘图

    plot函数 形式 字符控制 常用的图形标记函数 subplot命令拆分窗口 其他常见命令 三维绘图plot3 mesh和contour命令 plot函数 形式 plot(a,'-s')如果a是实数矩 ...

  8. NOIP模拟赛 高级打字机

    [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小写字母x. ...

  9. 【思维题 线段树】cf446C. DZY Loves Fibonacci Numbers

    我这种maintain写法好zz.考试时获得了40pts的RE好成绩 In mathematical terms, the sequence Fn of Fibonacci numbers is de ...

  10. strace用法

    strace   --  trace system calls and signals     strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信 ...