P1637 三元上公升子串行

2022-04-06 15:04:01 字數 868 閱讀 3599

對於這個題,我們對於每乙個數i,分別求出所有比它小的,在它前面的和

比它大的,在它後面的,然後把這兩個乘起來,然後再把這些積加起來就可以了

然而這樣直接做複雜度太高了,我們要優化,仿照樹狀陣列求逆序對的方法,我們就可以在可以接受的時間內求出並且解決問題了

#include#include

#include

#include

using

namespace

std;

intn;

int a[30005

];int tree[30005

];int b[30005

];long

long minn[30005

];long

long

ans;

bool cmp(const

int &x,const

int &y)

int lowbit(int

x)void add(int x,int

k)

return;}

int sum(int

x)

return

ans;

}int

main()

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

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

memset(tree,

0,sizeof

(tree));

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

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

printf(

"%lld

",ans);

return0;

}

ac

P1637 三元上公升子串行

標籤 線段樹 離散化好題。題意 給定乙個長度為 首先,我們知道求滿足 那麼對於原問題,include include include define ri register int using namespace std const int maxn 30020 int n,a maxn int l ...

題解 P1637 三元上公升子串行

這道題我也不知道怎麼了,改著改著就ac了。然而自己看不懂自己的 但在我仔細思考後就想通了 233。不是有三個數嗎,那就吧當前列舉的數當做三個數中的第二個,先找比它小的數有幾個,再找比它大的數有幾個,分別用mi 和ma 記錄下來,最終答案就是ans mi i ma i include include ...

三元上公升子串行 洛谷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...