题目描述

约翰有 N 头奶牛,第 i 头奶牛的编号是 S i ,每头奶牛的编号都不同。这些奶牛最近在闹脾气,
为表达不满的情绪,她们在排队的时候一定要排成混乱的队伍。如果一只队伍里所有位置相邻的奶牛
的编号之差都大于 K,那么这就是一只混乱的队伍,其中 K 是一个给定的整数。比如说,当 K = 2
时,序列 (1,3,5,2,6,4) 就是一支混乱的队伍,而 (1,3,6,5,2,4) 不是,因为 6 和 5 只差 1,不够混
乱。请问,这 N 头奶牛可以排成多少种混乱的队形呢?

输入

• 第一行:两个整数 N 和 K,4 ≤ N ≤ 16, 1 ≤ K ≤ 3400
• 第二行到第 N + 1 行:第 i + 1 行有一个整数 S i ,1 ≤ S i ≤ 25000

输出

• 单个整数:表示混乱队伍的数量

样例输入

4 1 3 4 2 1

样例输出

2

提示

两种排法是 3,1,4,2 和 2,4,1,3

题解:

乱搞搞对的,不知对不对,看到n<=16 于是想到状压

F[i][j] 表示以i结尾,状态为j的方案数

然后就是如果满足 S[i]-S[k]>p 就F[i][j]+=F[k][j-(1<<(i-1))]

注意开long long

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int a[N];long long F[N][<<N];
int main()
{
int n,p;
scanf("%d%d",&n,&p);
for(int i=;i<=n;i++)scanf("%d",&a[i]),F[i][(<<(i-))]=;
sort(a+,a+n+);
int m=(<<n)-;
for(int j=;j<=m;j++)
{
for(int i=;i<=n;i++)
{
if(!(j&(<<(i-))))continue;
for(int k=;k<=n;k++)
{
if(abs(a[i]-a[k])<=p)continue;
if(!(j&(<<(k-))))continue;
F[i][j]+=F[k][j-(<<(i-))];
}
}
}
long long ans=;
for(int i=;i<=n;i++)ans+=F[i][m];
printf("%lld",ans);
return ;
}

【USACO08NOV】奶牛混合起来Mixed Up Cows的更多相关文章

  1. 洛谷 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 解题报告

    P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题意: 给定一个长\(N\)的序列,求满足任意两个相邻元素之间的绝对值之差不超过\(K\)的这个序列的排列有多少个? 范围: ...

  2. 洛谷P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a u ...

  3. 洛谷 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a u ...

  4. [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...

  5. luogu P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...

  6. [USACO08NOV]奶牛混合起来Mixed Up Cows(状态压缩DP)

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...

  7. 【题解】Luogu2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...

  8. P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 约翰家有N头奶牛,第i头奶牛的编号是Si,每头奶牛的编号都是唯一的.这些奶牛最近 在闹脾气,为表达不满的情绪,她们在挤奶的时候一定要排成混乱的队伍.在一只混乱的队 伍中,相邻奶牛的编号之差均 ...

  9. 洛谷 P2915 【[USACO08NOV]奶牛混合起来Mixed Up Cows】

    类似于n皇后的思想,只要把dfs表示放置情况的数字压缩成一个整数,就能实现记忆化搜索了. 一些有关集合的操作: {i}在集合S内:S&(1<<i)==1: 将{i}加入集合S:S= ...

  10. 【[USACO08NOV]奶牛混合起来Mixed Up Cows】

    首先我们能够一眼看到4 <= N <= 16,那么就是它了,我们要压缩的状态就是它了 那么之后能我们用这个状态表示什么呢,我们要表示的显然是每只奶牛是否在队伍中 比如说10吧,转成二进制后 ...

随机推荐

  1. android 广播安装指定下载的apk

    // 广播出去,由广播接收器来处理下载完成的文件   Intent sendIntent = new Intent("com.test.downloadComplete");    ...

  2. Spring事务注意点

    service中未带事务的方法调用了自身带事务的方法时,按下面写法数据是提交不了的. public String getMaxSystemVersionNo() { SystemVersion ver ...

  3. 【学习笔记】windows安装jhipster踏坑记录

    序: 入职新公司第二天了,本来第一天是配置环境来着,配了一下午也没搞成那个jhipster的安装,每次以为应该正常的时候都是不对,yo是yeoman的指令,但是我是使用yarn管理的yeoman 纠结 ...

  4. Scala 快速入门

     Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional progr ...

  5. RESTful三问

    我觉得学习一个技术,其实就是要弄明白三件事情:是什么(what),为什么(why),怎么用(how).正是所谓的三W方法. 所以打算总结一个"三问"系列.为了自己学习,也分享给别人 ...

  6. 新手入门 git

    Git是目前世界上最先进的分布式版本控制系统 特点:高端大气上档次 什么是版本控制系统 系统自动记录文件改动 方便同事协作管理 不用自己管理一堆类似的文件了,也不需要把文件传来传去.如果想查看某次改动 ...

  7. 快速搭建ssm框架

    快速搭建SSM框架 因为最近有很多朋友问我自己的项目搭建的不够完善,并且经常出现一些小问题,那么今天我又整理了一下文档教大家如何快速搭建SSM框架我是用 eclipse搭建的,如果想用idear的话我 ...

  8. Android P专区免费开放 -- 同样的Android,不同的体验

    2018年3月8日,Google推出了Android P Preview版本,并提供官方镜像下载. 为了让广大开发者能够及时了解Android P的新功能特性,提前为您的app进行良好适配,WeTes ...

  9. 【原生js实现一键回到顶部】

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  10. python jquery

    jquery 一.寻找元素(选择器和筛选器) a.选择器 1.基本选择器 1 $("*")  $("#id")   $(".class")  ...