洛谷P1673 三元上公升子串行 樹狀陣列

2021-09-26 21:48:17 字數 855 閱讀 9476

給出定義i

<

j<

ki< j< k

i<

ji

a_ai

​​​的子串行為三元組,求問序列中有多少個三元組。直接樹狀陣列維護以每個點為中心的前後各有多少,一遍統計答案。

#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const ll inf=long_long_max;

const int n=3e4+7;

int a[n],b[n],tot;

int t[n];

int l[n],r[n];

int lowbit(int x)

void add(int x,int k)

int query(int x)

int main()

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

tot=unique(b+1,b+1+n)-(b+1);

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

a[i]=lower_bound(b+1,b+1+tot,a[i])-b;

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

memset(t,0,sizeof(t));

for(int i=n;i>=1;i--)

ll ans=0;

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

ans+=l[i]*r[i];

printf("%lld\n",ans);

return 0;

}

三元上公升子串行 洛谷p1637

erwin最近對一種叫 thair 的東西巨感興趣。在含有n個整數的序列a1,a2.an中,三個數被稱作 thair 當且僅當i求乙個序列中 thair 的個數。輸入格式 開始乙個正整數n,以後n個數a1 an。輸出格式 thair 的個數 輸入樣例 1 4 50 18 3 4 6 8 1415 1...

洛谷P1637 三元上公升子串行

p1637三元上公升子串行 提交 討論 題解 最新討論更多討論 題目描述 erwin最近對一種叫 thair 的東西巨感興趣。在含有n個整數的序列a1,a2.an中,三個數被稱作 thair 當且僅當i求乙個序列中 thair 的個數。輸入輸出格式 輸入格式 開始乙個正整數n,以後n個數a1 an。...

三元上公升子串行

首先,對於任意乙個選定的數aj而言 要求的是1 j 1中比aj小的數的個數 乘以j 1 n中比aj大的數的個數 求出數的個數可以直接使用樹狀陣列 最後直接統計結果就行了 但是,考慮到n的範圍很小 但是ai因此,如果不使用離散化的話,可能會炸空間 include include include inc...