首页 > 其他分享 >P10589 楼兰图腾

P10589 楼兰图腾

时间:2024-10-12 09:46:26浏览次数:1  
标签:楼兰 图腾 int upd P10589 long qsum ans include

Problem

有n个记号在一面墙上从左往右排列,其离地面高度\(h_i\)不同,保证是1~n的一个排列,试求出有多少种如下两种情况

\[①i<j<k \]

\[②h_i>h_j<h_k或h_i<h_j>h_k \]

其中在满足①②的情况下②分左右两种,\(n\le2\times10^5\)且\(Ans\le2^{64}-1\)

Solve

可以枚举每个\(i,j,k\)计算满足哪些情况,时间复杂度\(O(n^3)\)
但其实我们可以维护两个值域线段树,分别计算在i的前面与后面大于或小于\(h_j\)的个数
以V字(第一种)情况举例,设在p节点,在它前面有u个数比他大,在后面有v个数比它大,那么不难得出当\(j=p\)时,会为答案产生\(u\times v\)的贡献,这样时间复杂度就变成了\(O(n\log n)\)

Code

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<cstdlib>
#include<list>
#include<map>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
long long n,a[200005],s[800005],ans[5][200005];
void upd(int p,int l,int r,int x,long long v){
    if(l>x||r<x)return ;
    if(l==r){
        s[p]++;
        return ;
    }
    upd(2*p,l,(l+r)/2,x,v);
    upd(2*p+1,(l+r)/2+1,r,x,v);
    s[p]++;
}
long long qsum(int p,int l,int r,int x,int y){
    if(x>r||y<l)return 0;
    if(l>=x&&r<=y)return s[p];
    long long ans=0;
    ans+=qsum(2*p,l,(l+r)/2,x,y);
    ans+=qsum(2*p+1,(l+r)/2+1,r,x,y);
    return ans;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        upd(1,1,n,a[i],1);
        ans[1][i]+=qsum(1,1,n,a[i]+1,n);
        ans[2][i]+=qsum(1,1,n,1,a[i]-1);
    }
    memset(s,0,sizeof(s));
    for(int i=n;i>=1;i--){
        upd(1,1,n,a[i],1);
        ans[3][i]+=qsum(1,1,n,a[i]+1,n);
        ans[4][i]+=qsum(1,1,n,1,a[i]-1);
    }
    long long res=0,res1=0;
    for(int i=1;i<=n;i++){
        res+=ans[1][i]*ans[3][i];
        res1+=ans[2][i]*ans[4][i];
    }
    cout<<res<<" "<<res1;
    return 0;
}

标签:楼兰,图腾,int,upd,P10589,long,qsum,ans,include
From: https://www.cnblogs.com/yiweixxs/p/18457356

相关文章

  • 【鲜花】楼兰
    2024.10.8卡尔维诺在访谈中自述,他将《看不见的城市》中的每个城市冠以女人的名字;又曾在《英国病人》中读到,探险者常以心爱之人命名所发现的地方,使她们与不朽共同流传。这世上易逝的永远是人,可人逝去后变为死物,却重又拥有不朽的资质。可是希罗多德的书页间覆灭了太多王国,如楼兰,如......
  • P10589 楼兰图腾(树状数组)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • P10589 题解
    经典题。tag:数状数组。开一个权值树状数组,从左往右遍历,统计左边比\(y_i\)小的数字个数\(ul_i\)与比\(a_i\)大的数字个数\(dl_i\);然后从右往左遍历,统计右边比\(y_i\)小的数字个数\(dr_i\)与比\(a_i\)大的数字个数\(ur_i\)。两个答案即为\(\sum_{i=1}^ndl_i\cdo......
  • 洛谷题单指南-递推与递归-P1498 南蛮图腾
    原题链接:https://www.luogu.com.cn/problem/P1498题意解读:观察样例,可以发现,当n=1时,得到最基础的图案:/\/__\当n=2时,将基础图案向下复制两个,并排,然后将之前的图案移到居中的位置/\/__\/\/\/__\/__\当n=3时,再将n=2时的图案向下复制两个,并排,然后将之前的图......
  • 图腾柱无桥PFC,平均电流控制。 环路建模然后设计出电压环和电流环补偿
    图腾柱无桥PFC,平均电流控制。环路建模然后设计出电压环和电流环补偿网络,零极点放置。PLECS、psim和simulink均验证过,均有对应模型。同时Dual-boostPFC及两相、三相交错并联图腾柱PFC均有。YID:6566658337428528......
  • 图腾柱无桥PFC,平均电流控制。 环路建模然后设计出电压环和电流环补偿网络
    图腾柱无桥PFC,平均电流控制。环路建模然后设计出电压环和电流环补偿网络,零极点放置。PLECS、psim和simulink均验证过,均有对应模型。同时Dual-boost PFC及两相、三相交错并联图腾柱PFC均有。YID:6566658337428528......
  • . 楼兰图腾 (树状数组)
    题目描述在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们......