• 题意:有一个从根节点\(BFS\)得来的序列(每次\(bfs\)子节点的时候保证是升序放入队列的),现在让你还原树(没必要和之前相同),问能构造出的最小的树的深度.

  • 题解:不看根节点,我们从第二个位置开始,如果某一段元素升序,那么就让他们变为上一层某个结点的儿子,否则,如果上一层还有另外的父节点的话,就作为它的子儿子,如果没有父亲结点可以连的话,就只能去下一层了,具体实现的话,我们可以统计每层结点的个数,如果下一层出现了降序的情况,就减去之前统计的个数,不断往复即可.

  • 代码:

    int t;
    int n;
    int a[N];
    int cnt[N];
    int ans; int main() {
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    scanf("%d",&t);
    while(t--){
    ans=1;
    scanf("%d",&n);
    for(int i=0;i<n;++i) scanf("%d",&a[i]);
    int i=1;
    cnt[0]=1;
    while(i<n){
    int now=cnt[ans-1]; //上一层的结点数
    cnt[ans]=0;
    while(now>0){
    now--;
    if(i==n) continue;
    i++;
    cnt[ans]++; //统计当前这一层的结点数
    while(i<n && a[i]>a[i-1]){ //升序,全部连给上一层的某个结点
    cnt[ans]++; //统计当前这一层的结点数
    i++;
    }
    }
    ans++;
    }
    printf("%d\n",ans-1);
    }
    return 0;
    }

最新文章

  1. 开源一个练手小App, PrintableCheckList
  2. java中关于try、catch、finally中的细节分析
  3. Python入门笔记(11):集合
  4. Linux 下的另一个密码破解工具medusa
  5. 序列的方法(str,list,tuple)
  6. 【转】APUE学习1:迈出第一步,编译myls.c
  7. Contoso 大学 - 10 - 高级 EF 应用场景
  8. Altium Designer快捷键 【worldsing笔记】
  9. 对struts2的基本知识和环境的搭建(配图解)
  10. MySQL 索引优化全攻略
  11. Unsupported Media Type 415问题解决办法(Ajax)
  12. Android Library projetcts cannot be exported.
  13. java中可变长参数的定义及使用方法
  14. css坑了我一下下之line-height
  15. R语言读取EXCEL文件的各种方法
  16. 题解-USACO18DEC Sort It Out
  17. Linux 下终端 C 语言控制光标的技巧
  18. iframe 页面刷新
  19. ntp时间服务器--Linux配置
  20. HTML5 移动端 自定义点击事件

热门文章

  1. MySQL sql命令行操作数据库
  2. row和statement
  3. 【Linux】ssh远程连接到指定ip的指定用户上
  4. VKM5对应的BAPI或者函数
  5. dubbo快速入门demo
  6. mastercam2018安装教程
  7. 7行代码解决P1441砝码称重(附优化过程)
  8. SpringBoot @Value 解析集合配置
  9. Flask源码流程分析(一)
  10. uni-app 微信小程序 picker 三级联动