Time Limit: 1 second

Memory Limit: 1 MB

【问题描述】

Matrix67发现身高接近的人似乎更合得来。Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排在圆桌上。

Matrix67的安排原则是,圆桌上任意两个相邻人的身高之差不能超过K。请告诉Matrix67他共有多少种安排方法。

【输入格式】

第一行输入两个用空格隔开的数N和K,其中1<=N<=10,1<=K<=1 000 000。

第二行到第N+1行每行输入一个人的身高值。所有人的身高都是不超过1 000 000的正整数

【输出格式】

输出符合要求的安排总数

Sample Input

4 10

2

16

6

10

Sample Output

2

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t034

【题解】



两种不同的安排方式;

不能是通过旋转、或翻转变换而成的;

那么我们可以先固定一个人的位置,然后枚举其他人和它的”相对位置”;这样就都是本质不同的方案了;根据相邻人不能一样,写个剪枝就好;

枚举全排列就好;

复杂度O(N!*n)

能够在1s内出解.



【完整代码】

#include <cstdio>

const int MAXN = 10+5;

int n,k,ans=0;
int a[MAXN],sta[MAXN];
bool bo[MAXN]; void dfs(int x)
{
if (x>n)
{
int t = sta[n]-sta[1];
if (t<0) t = -t;
if (t<=k)
ans++;
return;
}
for (int i = 1;i <= n;i++)
if (!bo[i])
{
sta[x] = a[i];
int t = sta[x]-sta[x-1];
if (t<0) t = -t;
if (t>k)
continue;
bo[i] = true;
dfs(x+1);
bo[i] = false;
}
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
scanf("%d%d",&n,&k);
for (int i = 1;i <= n;i++)
scanf("%d",&a[i]);
sta[1] = a[1];
bo[1] = true;
dfs(2);
printf("%d\n",ans);
return 0;
}

【t034】Matrix67的派对的更多相关文章

  1. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对   描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们 ...

  2. 【noip模拟赛4】Matrix67的派对 dfs

    描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排在圆桌上.Matrix67的安排原则是,圆桌 ...

  3. 学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67

    本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足 ...

  4. matrix67:kmp算法详解

    个人认为KMP是最没有必要讲的东西,因为这个东西网上能找到很多资料.但网上的讲法基本上都涉及到“移动(shift)”.“Next函数”等概念,这非常容易产生误解(至少一年半前我看这些资料学习KMP时就 ...

  5. 洛谷银牛派对SPFA

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  6. P1821 [USACO07FEB]银牛派对Silver Cow Party

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  7. Matrix67|自由职业者,数学爱好者

    Matrix67|自由职业者,数学爱好者 介绍一下你自己和所做的工作. 我叫顾森,网名 Matrix67,长住北京的重庆人,目前没有固定的职业.一会儿当当码农,一会儿做做编辑,一会儿教教数学,一会儿写 ...

  8. 读书笔记:《思考的乐趣:Matrix67数学笔记》第4章 统计数据的陷阱

    <思考的乐趣:Matrix67数学笔记>第4章讲了几个统计学上的陷阱,由于现在流行的大数据与统计学很有渊源,所以认真读了这一章,在<大数据时代>中指出只考虑相关性就够了,而不考 ...

  9. 思考的乐趣----matrix67数学笔记:最精妙的无字证明

    从<思考的乐趣----matrix67数学笔记>一书中看到这个证明,据说在mathoverflow网站上这个无字证明获得了最多的投票! http://mathoverflow.net/qu ...

随机推荐

  1. java位运算应用

    位移动运算符: <<表示左移, 左移一位表示原来的值乘2. 比如:3 <<2(3为int型)  1)把3转换为二进制数字0000 0000 0000 0000 0000 000 ...

  2. [Python] Object spread operator in Python

    In JS, we have object spread opreator: const x = { a: '1', b: '2' } const y = { c: '3', d: '4' } con ...

  3. Android 小米盒子游戏手柄按键捕获 - 能获取到的 home 键依旧是个痛

    Android 小米盒子游戏手柄按键捕获 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...

  4. 解决浏览器不兼容websocket

    本例使用tomcat 7.0的websocket做为例子. 1.新建web project.2.找到tomcat 7.0 lib 下的 catalina.jar,tomcat-coyote.jar添加 ...

  5. 【转】CentOS/RHEL/OracleLinux使用UDEV配置ASMDISK

    转自:http://blog.csdn.net/staricqxyz/article/details/8332566 RHEL 5 / CentOS 5 / Oracle Linux 5 [root@ ...

  6. UML学习总结(3)——StarUML指导手册

    StarUML使用说明-指导手册 原著:Stephen Wong            翻译:火猴 StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具.这是一个用Java语言描述 ...

  7. RMAN备份到NFS,报错 ORA-27054

    使用RMAN备份数据库到NFS挂载到的本地目录/backup 失败,失败提示如下: RMAN-03009: failure of backup command on ORA_DISK_1 channe ...

  8. 苹果APNS在app中的详细实现

    鉴于server稳定的开发难度非常大,小团队不建议自己开发.建议使用稳定的第三方推送方案,如个推,蝴蝶等. 要想使用苹果APNS推送消息,首先要把开发app的xcode所用证书上传到server上,当 ...

  9. 【a903】石子归并

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 在一个圆形操场的四周摆放着N堆石子(N<= 100),现要将石子有次序地合并成一堆.规定每次只能选取相 ...

  10. LUA凝视语法

    server端代码已经完毕,client正在优化.游戏不久将上线,近期没事做,老大要我開始学习project Anarchy了.里面代码是比較偏爱的C++,包括lua,暂没学过lua.看了下LUA代码 ...