宅邸迅速的燃燒著,必須帶貝蒂走出**庫!憑著感覺,又一次直接找到**庫的門。
「你,是那個人嘛?」400年了,當初聖域建立結界時沒有進入聖域,被傷了心的人工精靈貝蒂,與強欲魔女簽訂契約,守護宅邸的**庫,直至「那個人」的到來,那個人會解開貝蒂的心結。
「我不是那個什麼人,但我會成為你唯一的人。我會給你幸福!」
精靈與人簽訂契約,從此相依為命。這便是,永恆的契約。
宅邸裡,羅茲瓦爾的房間圖書櫃後,有一條鏈結宅邸和聖域的秘密通道,其中有乙個神奇的大回環,由
n n
塊石頭組成。
第i塊石頭有乙個高度ai
a
i,兩塊不同的石頭i,j能夠互相看到,則它們在環上的兩條路徑中有至少一條路徑上除了兩個端點(即i,
j i,j
)路徑上石頭高度都不大於mi
n(ai
,aj)
m in
(ai,
aj)。
被羅茲瓦爾僱傭的獵腸者躲在這秘密的通道中,為了能夠更好的觀察通道中的情況,她想知道有多少對石頭能夠互相看到。
第一行乙個正整數
t t
,表示資料組數。
接下來t
t
組資料,每組資料第一行讀入正整數
n n
,接下來一行按順時針順序讀入序列
a a
表示石塊的高度。
t t
行表示每組資料的答案。
1 5
1 2 4 5 340%
,n≤20040%
,n
≤200
60%,
n≤200060%
,n
≤2000
70%,
n≤10000070%
,n
≤100000
80%,
n≤1000000,1
≤ai≤
100000080%
,n
≤1000000,1
≤ai≤
1000000
100%,
n≤1000000,t
≤5,1
≤ai≤
1000000000
100%,n
≤1000000,t
≤5,1
≤ai≤
1000000000
首先對於像這種對於環的題目一般首先會有這樣的思路:
①將這段序列複製一段
②選乙個作「起點」,該起點的作用就是可以斷絕前後關係。
比如這道題,我們就選最大的ai
a
i作起點,若存在多個最大點則任選乙個,不影響。
接下來就談談做法吧。
我們設a
1 a
1為最大值,那麼該序列就變為a1
,a2,
a3,.
..an
a 1,
a2,a
3,..
.a
n,另外注意在最後再加乙個an
+1=a
1 an+
1=a1
,表示首尾相接。
我們假定
i<
j i
<
j,那麼我們現在要求所有aiai
且能互相看見的對數。由a ia i 易得∀a [i+1..j− 1]≤a i ∀a[ i+ 1..j−1 ]≤ai ,所以能與ai a i匹配的aj a j是第乙個比ai a i大的數,即存在唯一性! 我們設這個aj a j為ne xt[i ] nex t[i] 。 所以除了ai =a1 ai= a1 的aia i外(即為該數亦為最大值),其實全部的ai a i都有與之對應的ne xt[i ] nex t[i] ,可以線性統計答案,具體來講就是單調棧維護不上公升序列。 但是為了保證不算重,所以我們要將那些 aj =an+ 1 aj= an+1 (即a1 a 1) 的數打上ta g tag ,然後我們倒過來再做一遍統計答案,遇到帶有ta g tag 且next[i ]=a1 n ex t[i] =a 1的就不必算入答案內。 那麼ai =aj ai= aj 的情況呢 顯然我們也可以在單調棧中統計連續的數出現的次數。 神馬?還不懂?如果出現次數是 z z ,那不就有z∗ (z−1 )/2 z∗( z−1) /2 嗎? #define maxn 1000005 using namespace std; int a[2 *maxn],dt[2 *maxn],p[2 *maxn]; long long ans,z,d; int st,t,n,i,j,ma,t2; int main() }d=1;dt[d]=st; for (int i=st+1;i<=st+n;i++) d--; }ans+=z*(z+1)/2;z=0; dt[++d]=i;dt[d+1]=0; }ans+=(d-1)*(d-2)/2; d=1;dt[d]=st+n; for (int i=st+n-1;i>=st;i--) dt[++d]=i;dt[d+1]=0; }printf("%lld\n",ans); }fclose(stdin); fclose(stdout); } description 宅邸迅速的燃燒著,必須帶貝蒂走出 庫!憑著感覺,又一次直接找到 庫的門。你,是那個人嘛?400年了,當初聖域建立結界時沒有進入聖域,被傷了心的人工精靈貝蒂,與強欲魔女簽訂契約,守護宅邸的 庫,直至 那個人 的到來,那個人會解開貝蒂的心結。我不是那個什麼人,但我會成為你唯一的人... 給定乙個長度為 n 的環,每個位置有乙個高度ai 當在環上的兩條路徑中有至少一條路徑上除了兩個端點,路徑上的高度都不大於mi n ai aj 時,i,j 可以互相看到。求有多少對可以互相看到的點對。t組資料。data constraint t 5,n 1000000 因為是環,所以可以先copy一遍... description 宅邸迅速的燃燒著,必須帶貝蒂走出 庫!憑著感覺,又一次直接找到 庫的門。你,是那個人嘛?400年了,當初聖域建立結界時沒有進入聖域,被傷了心的人工精靈貝蒂,與強欲魔女簽訂契約,守護宅邸的 庫,直至 那個人 的到來,那個人會解開貝蒂的心結。我不是那個什麼人,但我會成為你唯一的人...#include
JZOJ4848 永恆的契約
JZOJ4848 永恆的契約
GDOI2017模擬11 3 永恆的契約