山寨金閃閃

2021-10-04 00:03:05 字數 1018 閱讀 9487

金閃閃死後,紅a拿到了王之財寶,裡面有n個**,長度各不相同。紅a發現,拿其中三件**首尾相接,組成乙個三角形,進行召喚儀式,就可以召喚出乙個山寨金閃閃。(例如,三件**長度為10、15、20,可以召喚成功。若長度為10、11、30,首尾相接無法組成三角形,召喚失敗。)紅a於是開了乙個金閃閃專賣店。他把王之財寶排成一排,每個客人會隨機抽取到乙個區間[l,r],客人可以選取區間裡的三件**進行召喚(客人都很聰慧,如果能找出來合適的**,一定不會放過)。召喚結束後,客人要把**原樣放回去。m個客人光顧以後,紅a害怕過多的金閃閃愉悅太多男人,於是找到了你,希望你幫他統計出有多少山寨金閃閃被召喚出來。

第一行**數量:n <= 110^7

第二行空格分隔的n個int,表示每件**的長度。

第三行顧客數量:m <= 110^6

後面m行,每行兩個int l,r,表示每個客人被分配到的區間。(l三個數中,較小的那兩個的和大於第三個就一定可以構成三角形,因此,對於[l,r]區間的數來說,只要找到這樣的三個數就可以,為了減少運算,可以將其排序,然後從前到後每三個為一組進行比較,比如x1,x2,x3,x4,x1,x2,x3無法構成之後,可以直接進行x2,x3,x4的比較,x1不需要再參與計算中。這樣的事件複雜度為o(nlongn),由於n可以達到10^7,所以直接暴力搜尋一定會超時。

因為資料越多越容易構成三角形,邊界情況就是兩邊之和等於第三邊,a+b=c,那麼如果去構造這樣乙個剛好找不到三角形的序列,則是1,1,2,3,5,,,fibonacci數列,這個數列在int的表示範圍內大概到46項,那麼也就是說,當數量超過46的時候一定可以構成三角形(超過46一定會存在乙個數字x,不屬於fibonacci數,可以插在滿足fi-1x,所以一定存在三角形)。

這樣之需要對數量小於46的序列進行查詢就可以了,大大減少了資料量。

#include

#include

#include

using

namespace std;

intmain()

}}cout

}

閃閃發光 set

題目描述 一所位於雲南昆明的中醫藥本科院校 雲南中醫學院。因為報考某專業的人數驟減,正面臨著停招的危機。其中有九名少女想到一條妙計 成為偶像,只要她們成為偶像,學校的名氣便會增加,而報考的人數亦會上公升。就這樣,九位個性鮮明的少女決定一起努力成為偶像。希望可以憑藉偶像的名氣增加生源來挽救自己所喜愛的...

1007 閃閃發光

描述 一所位於雲南昆明的中醫藥本科院校 雲南中醫學院。因為報考某專業的人數驟減,正面臨著停招的危機。其中有九名少女想到一條妙計 成為偶像,只要她們成為偶像,學校的名氣便會增加,而報考的人數亦會上公升。就這樣,九位個性鮮明的少女決定一起努力成為偶像。希望可以憑藉偶像的名氣增加生源來挽救自己所喜愛的專業...

創新與山寨

大概確如摩根斯坦利廣為引用的報告中說的那樣,我們已經進入了乙個激動人心的新的技術週期,創新 一詞近來成了最熱門的話題之一。熱門到什麼程度了呢?當我在去美國的飛機上寫這篇卷首語的過程中,隨意翻看的幾份報刊上竟然有不下三篇文章在談創新。這種簡單的思維方式非常可笑。稍具科技史常識的人都知道,任何創造都不是...