发现是状压dp,但是还是不会。。。之前都白学了,本蒟蒻怎么这么菜,怎么都学不会啊。。。

其实我位运算基础太差了,所以状压学的不好。

题干:

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 13421Sample Output
2输出解释:两种方法分别是:3 1 4 22 4 1 3HINT

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
#define duke(i,a,n) for(int i = a;i <= n;i++)
#define lv(i,a,n) for(int i = a;i >= n;i--)
#define clean(a) memset(a,0,sizeof(a))
const int INF = 1 << 30;
typedef long long ll;
typedef double db;
template <class T>
void read(T &x)
{char c;bool op = 0;while(c = getchar(), c < '0' || c > '9')if(c == '-') op = 1;x = c - '0';while(c = getchar(), c >= '0' && c <= '9')x = x * 10 + c - '0';if(op) x = -x;
}
template <class T>
void write(T x)
{if(x < 0) putchar('-'), x = -x;if(x >= 10) write(x / 10);putchar('0' + x % 10);
}
int ms,n, k, a[20];
ll dp[70004][20];
int main()
{read(n);read(k);duke(i,1,n){read(a[i]);dp[1 << (i - 1)][i] = 1;}int ms = (1 << n) - 1;duke(i,1,ms){duke(j,1,n){if(i & (1 << (j - 1))) //判断是否为0
            {duke(p,1,n){if(p != j && (i & (1 << (p - 1))) && abs(a[p] - a[j]) > k)dp[i][j] += dp[i ^ (1 << (j - 1))][p];}}}}ll ans = 0;duke(i,1,n){ans += dp[ms][i];}write(ans);printf("\n");return 0;
}

转载于:https://www.cnblogs.com/DukeLv/p/9527102.html

B1231 [Usaco2008 Nov]mixup2 混乱的奶牛 状压dp相关推荐

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

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

  2. P3052 [USACO12MAR]摩天大楼里的奶牛 [状压DP]

    传送门 用f[i]记录状态为i的最小值 g[i] 记录状态为i 的剩下电梯的空间的最大值 #include<bits/stdc++.h> #define N 19 using namesp ...

  3. P2340 奶牛会展(状压dp)

    P2340 奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由 ...

  4. 状压dp之二之三 炮兵阵地/玉米田 By cellur925

    一.简单的状压dp 玉米田 题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ ...

  5. [状压dp] 洛谷 P1879 玉米田

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  6. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  7. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  8. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  9. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  10. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

最新文章

  1. 还在学JVM?我都帮你总结好了(附脑图)
  2. ubuntu workerman kaer
  3. Python OOP知识积累
  4. android 字符串的拆分
  5. WINCE REG文件相关资料
  6. js处理16进制hex转str出现的中文乱码问题
  7. OpenCV中鼠标交互-绘制矩形框
  8. Centos7默认自带了Python2.7版本,但是因为项目需要使用Python3.x,这里提供一种比较快捷方便的安装方式...
  9. react apollo_Apollo GraphQL:如何使用React和Node Js构建全栈应用
  10. 剧情很有趣:安全专家被骗记
  11. Ubuntu 16.04中zabbix显示 :Zabbix server is not running:te information displayed may not be current.
  12. 数据结构实验病毒感染检测问题(C++)
  13. 在线添加索引遇到的错误:Table definition has changed, please retry transaction
  14. MEncoder的基础用法—6.8. 从多个输入图像文件进行编码(JPEG, PNG, TGA等)
  15. 帧同步分离逻辑层和渲染层_帧同步如何分离逻辑和渲染?
  16. Scala+HuffmanCoding实现无损压缩
  17. 推荐14个可以展示你代码的网站
  18. 香港银行账户被关,应如何取走余额
  19. python有哪些码_Python字节码介绍
  20. 【自学笔记】尚硅谷数据结构与算法Chapter 5 递归

热门文章

  1. 配置druid的过程以及问题
  2. 小波变换——哈尔小波,Haar
  3. vue-cli@webpack@4打包分析命令
  4. 俞昆20155335《网络对抗》MSF基础应用
  5. 记录一次json转换的经历
  6. 32 从上到下打印二叉树(举例让抽象问题具体化)
  7. HDU4035 Maze 【树形DP】【期望DP】
  8. 使用soap遇到的缓存问题
  9. Java 程序读取properties文件
  10. Python3.x:定义一个类并且调用