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. OC多态

    要点: 1.多种形态,引用的多种形态对于一个引用变量,可以指向任何类的对象.对于一个父类的引用(类与类之间有一种继承关系),可以指向子类,也可以指向本类,指向的类型不同.当通过此引用向对象发送消息,调 ...

  2. 浅谈Java的匿名类

    在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码 ...

  3. UML类图关系全面剖析

    UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...

  4. Javascript不同浏览器差异及兼容方法

    原文链接:http://caibaojian.com/js-ie-different-from-firefox.html javascript的各种兼容就是为了解决不同浏览器的差异性,了解其中的差异能 ...

  5. RSS阅读器

    RSS阅读器(Really Simple Syndication)是一种软件/程序,实质都是为了方便地读取RSS和Atom文档.大概就是实现了订阅式阅读,推送用户感兴趣的新闻,博客等(比如等某位博主更 ...

  6. 高级数据过滤(like)

    单字符过滤 '_' select * from T_Employee where FName like  '_erry' 多字符过滤 '%' select * from T_Employee wher ...

  7. nfs挂载配置

    nfs挂载步骤 服务器端 1.安装nfs-utils rpcbind $sudo yum –y install nfs-utils rpcbind 2.文件开放出去配置/etc/exports 例子: ...

  8. Oracle索引重建

    一.前言 Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.有人持不同观点,就是强烈建议不要定期重建索引.索引重建是一个争论不休被不断 ...

  9. MySQL 导出数据

    MySQL中你可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上. 使用 SELECT ... INTO OUTFILE 语句导出数据 以下实例中我们将数据表 cnbl ...

  10. .net framework体系结构

    CIL(common intermediate language):公共中间语言..net框架下各种种类.版本的编程语言在经过编译后生成的中间语言(后缀为.il),与平台无关.与语言无关,只要机器上运 ...