4610: [Wf2016]Ceiling Functi

题目连接:

http://www.lydsy.com/JudgeOnline/problem.php?id=4610

Description

给出n个长度为k的数列,每个数列模拟堆的操作,问有多少种形态不同的堆。

Input

第一行包含两个数n(1<n<=50)代表堆的数量,k(1<=k<=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

Hint

题意

题解:

数据范围很小,模拟一下,然后按照dfs的顺序hash一下,扔到一个set里面看看就好了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
set<string> S;
struct node{
int l,r,x;
int flag;
}a[maxn];
int cnt;
void add(int x,int v)
{
if(a[x].flag==0){
a[x].x=v;
a[x].flag=1;
return;
}
if(v<=a[x].x)
{
if(a[x].l==0)
a[x].l=++cnt;
add(a[x].l,v);
}
else
{
if(a[x].r==0)
a[x].r=++cnt;
add(a[x].r,v);
}
}
string ans;
void get(int x)
{
if(a[x].flag==0)return;
if(a[x].l!=0)ans+="L",get(a[x].l);
if(a[x].r!=0)ans+="R",get(a[x].r);
ans+="D";
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
{
memset(a,0,sizeof(a));
ans="";cnt=0;
for(int j=0;j<k;j++)
{
int x;scanf("%d",&x);
add(0,x);
}
get(0);
S.insert(ans);
}
cout<<S.size()<<endl;
}

最新文章

  1. centos7下使用yum安装mysql
  2. VMwareTools 安装(VMware Player)
  3. Java读写txt文件
  4. Linux下mysql主从配置
  5. Java最近版本新特性使用介绍
  6. InstallShield 一些事件说明
  7. python 调用图灵机器人api实现简单的人机交互
  8. linux_熟悉常用Linux命令
  9. 国内常用DNS
  10. 我的小OJ
  11. javascript基础 之 代码规范
  12. redis 设置分布式锁要避免死锁
  13. k8s调度器、预选策略及调度方式
  14. 自己写的thinkphp自动生成类
  15. #2 安装Python
  16. 【Linux学习六】用户管理
  17. EasyUI datagrid 查询、设置、提交 三
  18. 运维工具Ansible安装部署
  19. 关于 clock tree
  20. Redis和数据库 数据同步问题

热门文章

  1. bzoj千题计划105:bzoj3503: [Cqoi2014]和谐矩阵(高斯消元法解异或方程组)
  2. [iOS问题归总]iPhone上传项目遇到的问题
  3. 浅说Get请求和Post请求
  4. Flex 自定义 Zlert 组件!
  5. mybatis动态sql——(六)
  6. C# 将某个方法去异步执行
  7. 公共语言运行库(CLR)开发系列课程(1):Pinvoke 简介 学习笔记
  8. C#使用mybatis学习笔记
  9. Zookeeper+Curator 分布式锁
  10. hdu 1272 判断所给的图是不是生成树 (并查集)