【PR #15】二叉搜索树 做题记录

有一棵 nn 个点的树,每个点上有一个二叉搜索树。

然后依次进行 mm 次操作:

  • 1 u v x:在 uvu\to v 路径上每个点的二叉搜索树中插入元素 xx,即 p{uv}\forall p\in \{u\to v\} 执行 insert(rtp,x)\text{insert}(rt_p,x)

    void insert(int&p,int x){
        if(!p) return p=x,void();
        if(x<p) insert(ch[p][0],x);
        else insert(ch[p][1],x);
    }
    
  • 0 u w:在点 uu 上的二叉搜索树中执行 ask(rtu,w)\text{ask}(rt_u,w),求其返回值:

    long long ask(int p,int x){
        if(x==p) return x;
        if(x<p) return ch[p][0]?ask(ch[p][0])+p:p;
        else return ch[p][1]?ask(ch[p][1])+p:p;
    }
    

1n,m,x,w2×1051\le n,m,x,w\le 2\times 10^5,每次 11 操作的 xx 互不相同。

阅读全文 »

QOJ2211 IOI Problem Revised 做题记录

nn 个人在一个长 LL 的环上,第 ii 个人位于坐标 aia_i 处。你要选择 kk 个关键点,最小化每个人到最近的关键点的距离的和。输出方案。

1kn2×1051\le k\le n\le 2\times 10^51L10121\le L\le 10^{12}

阅读全文 »

CF1349F1 Slime and Sequences (Easy Version)

定义一个长 nn 的正整数序列是好的,当且仅当对于每一个出现过的 kkk>1k>1),其最后一次出现前 k1k-1 出现过。

给定 nn,对于每个 i[1,n]i\in[1,n] 求所有好序列中 ii 的出现次数和,对 998244353998244353 取模。

1n50001\le n\le 5000

阅读全文 »

QOJ 8527 Power Divisions 做题记录

给定一个长 nn 的序列 aa,定义一个区间 [l,r][l,r] 是好的,当且仅当存在某个 xx 使得 2x=i=lr2ai2^x=\sum\limits_{i=l}^r 2^{a_i}。求将 aa 划分为若干个好的区间的方案数,对 109+710^9+7 取模。

1n3×1051\le n\le 3\times 10^50ai1060\le a_i\le 10^6

阅读全文 »