【題意
】:
\color
【題意】
:erwin
最近對一種叫thair
的東西巨感興趣……
在含有n
nn個整數的序列a1,
a2..
.a
na_1,a_2...a_n
a1,a2
...
an中,
三個數被稱作thair
當且僅當i
<
j i< ji a_iai 。 求乙個序列中 【 思路 】: \color 【思路】 : 像這種,考慮三個數之間的關係的題目,我們可以從中間元素入手。 記l ef ti left_i lefti 表示第i ii個數左邊小於它的數的個數,rig ht iright_i righti 表示第i ii個數右邊大於它的數的個數。不難發現,總答案ans ansan s滿足: a ns =∑i= 1nle fti× righ ti ans=\sum\limits_^left_i \times right_i ans=i= 1∑n left i×r ight i既然如此,我們就可以用樹狀數 組\color 樹狀陣列 來求出lef tleft left 和r ig ht right righ t。總的時間複雜度為o(n ×logn )o(n \times \log n) o(n× logn)。 需要注意的是,因為a aa的取值範圍太大,所以我們先要對它進行離散化 \color 離散化。 【 程式碼 】: \color 【程式碼】 : int n= 30100 ;struct nodea[n] ;int n,m,c[2] [n]; inline bool cmp1 (node a,node b) inline bool cmp2 (node a,node b) inline intf (int x) //相當於樹狀陣列的lowbit函式 typedef long long ll; inline void updata (int x, int p) //樹狀陣列的修改操作 inline intquery (int x, int p) //樹狀陣列的求字首和操作 int left[n] ,right[n] ;ll ans; intmain() // 從第33行到第40行為離散化操作 sort (a+1 ,a+n+ 1,cmp1) ; a[1] .number=1; for( int i= 2;i<=n;i++)if (a[i] .num!=a[i-1] .num) a[i] .number=a[i-1] .number+1; else a[i] .number=a[i-1] .number; m=a[n] .number; sort (a+1 ,a+n+ 1,cmp2) ;for (int i= 1;i<=n;i++ )//求left陣列 for( int i=n;i;i-- )//求right陣列,通過減法把求大於乙個數的數的個數操作轉化為了求小於該數的數的個數的操作 for( int i= 1;i<=n;i++ )//計算ans,注意中間結果不要溢位 ans+ =(ll)left[i] *right[i] ;printf ("%lld" ,ans) ;return0; } 一本通1599 題意 在一年前贏得了小鎮的最佳草坪比賽後,fj 變得很懶,再也沒有修剪過草坪。現在,新一輪的最佳草坪比賽又開始了,fj 希望能夠再次奪冠。然而,fj 的草坪非常髒亂,因此,fj 只能夠讓他的奶牛來完成這項工作。fj 有 nn 只排成一排的奶牛,編號為 11 到 nn。每只奶牛的效率是... 1.乙個函式的形參是const char 實參是可以是char 如果乙個函式的返回值是const char 不能用char 來接收返回值 2.為什麼沒有靜態的建構函式和析構函式?建構函式成員函式使用現有分配構造指定的物件 即存在this。static成員函式指定物件沒有儲存,因此沒有關聯的例項要構造... 前言 今天是祖國母親70歲生日,請允許我向祖國母親說一聲 生日快樂!願您永遠繁榮昌盛 山清水秀!題意 松鼠的新家是一棵樹,前幾天剛剛裝修了新家,新家有n nn個房間,並且有n 1 n 1n 1根樹枝連線,每個房間都可以相互到達,且倆個房間之間的路線都是唯一的。天哪,他居然真的住在 樹 上。松鼠想邀請...thair
的個數。const
2019 08 18 日常總結
5059日常總結
2019 10 01日常總結