zoukankan      html  css  js  c++  java
  • 帝都Day4(2)——数据结构

    黄姓dalao is coming!

    一、栈:

    基本常识略。

    例题:铁轨

    模拟,O(n),

    Usaco2006 Nov

    题目略

    做法:单调栈(续命栈?)

    n//数量
    a[]//奶牛
    for(int i=1 to n)
    {
        for(;a[i]>a[stack[top]]&⊤top--);//把所有比他小的元素删掉
        c[i]=i-stack[top]-1;//这个数和栈顶的数距离
        ans+=c[i];//加答案
        stack[++top]=i;
    }
    

     JSOI2008 最大数

    m 操作数
    n 数列长度
    a[]
    while(m--)
    {
        if(t==1)//加入操作
        {
            a[++n]=x;
            for(;a[n]>=stack[top]&⊤top--);
            stack[++top]=n;
        }
        else//询问操作
        {
            s=n-x;
            printf("%d
    ",a[stack[upper_bound(stack+1,stack+top+1,s)=stack]]);
        }
    }
    

     二、队列

    常识略

    插入删除O(1) 空间复杂度O(n)

    滑动的窗户

    修剪草坪

    三、链表

    插入、删除O1 查询On

    乱发节那道题(NOIP不怎么考链表啊)

    n

    a[]

    bool cmp(int x,int y){return a[x]==a[y]?x>y:a[x]<a[y];}

    for(i=1;i<=n;i++)

    {

        left[i]=i-1;

        right[i]=i+1;

        b[i]=i;

    sort(b+1,b+n+1,cmp);

    for(i=1;i<=n;i++)

    {

        c[i]=left[b[i]];

        right[left[b[i]]]=left[b[i]];

        left[right[b[i]]]=right[b[i]];

    }

    四、并炸鸡(并查集)

    略,题目:

    洛谷P1621 集合

    枚举>=p的所有在[A,B]中的倍数,合并。复杂度O(nlog2n*n的反阿克曼)

    洛谷P2170 玄学霸——南小鸟(选学霸)

     洛谷P1197 JSOI2008 星球大战

    先算出来炸完之后剩余的,然后倒过来做。

    洛谷P2024 食物链 加权并查集

    0 同一物种 1 吃 2 被吃

    五、堆

    堆为一颗二叉树,满足以下两个性质

    五.1、二叉堆

    二叉堆是一颗完全二叉树 插入 删除 求最小值

    用数组表示 节点n儿子 2n 2n+1

    插入节点:放在末尾 向上更新

    删除节点:把最后一节点放到要删除的地儿向下更新

    还有一道是usaco的

    还有一道bzoj2151 种树:

  • 相关阅读:
    0918作业-----所有数值未做合法性检测
    尝试安装和配置JDK,并给出安装、配置JDK的步骤
    java为什么可以跨平台执行
    字符集
    java 入门及简介
    时间轴特效
    javascript简介
    javascript while循环
    Javascript for循环
    函数豹子问题
  • 原文地址:https://www.cnblogs.com/oier/p/7200795.html
Copyright © 2011-2022 走看看