bzoj 4610 Ceiling Functi

Description

bzoj上的描述有问题

给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树。

Input

第一行包含两个数\(n(1 \lt n \le 50)\)代表数列的数量,\(k(1 \le k \le 20)\)代表每个堆的插入序列长度。

接下来\(n\)行每行包含\(k\)个数代表每个数列。

Output

输出不同树的形态数。

Sample Input

12 7

291388 78619 945367 867244 966006 445425 648278

593908 292543 111985 66151 846350 93727 765366

790325 950781 514834 937591 3749 922704 723259

788203 256144 944013 558440 591881 795482 173898

324286 386153 624883 475996 120001 18438 300906

819238 889730 825701 320745 611539 492070 410382

528593 425310 458894 528505 488435 192846 682984

564357 635943 41024 396434 286305 274829 196124

851238 206925 126110 537002 246374 859835 936366

729469 815045 965455 104000 364877 151376 759750

670021 748323 53559 609778 106547 151277 766524

561059 895615 951857 781815 378082 703670 620446

Sample Output

12

题解

首先吐槽bzoj翻译

其实此题就是一个大水题。因为数据很小,我们直接暴力建树和判断,用并查集统计。

#include <cstdio>
#include <cstring>
#define MS 1010
#define N 52
int root[N], ch[2][MS], v[MS], totNode;
int fa[N];
int find(int a) { return (fa[a]^a)?fa[a]=find(fa[a]):a; }
void Insert(int &u, const int &val) {
if (!u) {
v[u = ++totNode] = val; ch[0][u] = ch[1][u] = 0;
} else {
if (val < v[u]) Insert(ch[0][u], val);
else Insert(ch[1][u], val);
}
}
bool diff(int u, int v) {
if (!u && !v) return false;
if (!u || !v) return true;
return diff(ch[0][u], ch[0][v]) || diff(ch[1][u], ch[1][v]);
} int main() {
int n, k, i, j, a, x, y;
scanf("%d%d", &n, &k);
for (i = 1; i <= n; ++i) {
fa[i] = i;
for (j = 1; j <= k; ++j) {
scanf("%d", &a);
Insert(root[i], a);
}
}
a = 0;
for (i = 1; i <= n; ++i)
for (j = 1; j < i; ++j)
if (!diff(root[i], root[j])) {
x = find(i), y = find(j);
if (x ^ y) fa[x] = y;
}
for (i = 1; i <= n; ++i) a += fa[i] == i;
printf("%d\n", a);
return 0;
}

bzoj 4610 Ceiling Functi的更多相关文章

  1. BZOJ 4610: [Wf2016]Ceiling Functi 水题

    4610: [Wf2016]Ceiling Functi 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4610 Description ...

  2. BZOJ4610——[Wf2016]Ceiling Functi

    水题一道,不是很懂为啥没人做... 1.题意:纠正一下..bzoj的题意不是很对...注意不是堆,是不平衡的二叉树,就是非旋转的treap, 另外...插入的时候,小于插在左边..大于等于插在右边 2 ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  5. SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等

    在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面 ...

  6. SQL中Round(),Floor(),Ceiling()函数的浅析

    项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循 ...

  7. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  8. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  9. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

随机推荐

  1. Linux-ssh配置

  2. NSURLConnection实现文件上传和AFNetworking实现文件上传

    请求的步骤分为4步 1.创建请求 2.设置请求头(告诉服务器这是一个文件上传的请求) 3.设置请求体 4.发送请求 NSURLConnection实现文件上传 // 1.创建请求 NSURL *url ...

  3. Android 手机卫士--9patch图

    本文主要介绍9patch图 *.9.png:android手机上,可以按需求自动拉伸的图片 本文地址:http://www.cnblogs.com/wuyudong/p/5947195.html,转载 ...

  4. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  5. Java使用POS打印机(无驱)

    使用原因:应项目要求,需要使用打印机,但是如果使用Windows驱动来实现打印,在某些条件下会发生网络堵塞等,而且没有提示,所以为了确保信息的完整,避免数据丢失.我们使用无驱打印(直接写端口的方法), ...

  6. 实现CheckBox的三种选中状态(全选、半选、不选)在GridView中模拟树形的功能

    度娘了很多帖子,只说三种状态要用图片替换来做,但没找到有用的例子,被逼自己写了一个 三方控件肯定是很多的,如jstree,可以直接用 由于公司的UDS限制,不能上传图片,只能文字说明了. 就是要在gr ...

  7. 前端HTML之页面结构

    前端工作一年了,期间由于工作需要,也做了一些产品的设计,因为自己的目标就是做编程,所以婉拒了与产品相关的一些任务,打算主要把精力放到编程这方面. PS:2015年1月进军编程行业. 废话不多讲,这一年 ...

  8. Win10全屏看视频时任务栏不隐藏

    解决办法: 1.对任务栏鼠标右键点击,选择"任务管理器" 2.在进程选项下找到Windows进程中的Windows资源管理器 3.对Windows资源管理器鼠标右键,选择重新启动

  9. 用字体在网页中画Icon图标

    第一步,下载.IcoMoon网站选择字体图标并下载,解压后将fonts文件夹放在工程目录下.fonts文件夹内有四种格式的字体文件: 注:由于浏览器对每种字体的支持程度不一致,要想在所有浏览器中都显示 ...

  10. java 旧url 处理的解决方法

    @RequestMapping(value = {"/search"}) public void errorPath(HttpServletResponse response, @ ...