題意
衆所周知, HN-001 是神一般的存在。
HN-001 給了你一個 n 階排列 {ai},並向你提出了 q 次詢問。每次詢問 HN-001 會給出四個參數 l1,r1,l2,r2(1≤l1≤r1<l2≤r2≤n),且 r1−l1=r2−l2。記 m=r1−l1+1,你需要構造一個 m 階排列 {bj} 並滿足:$ \forall j \in [1,m], a_{j+l_1-1}< a_{b_j+l_2-1}$。
HN-001 並不滿足於讓你構造出一個 {bj} , Ta 想讓你算一下滿足條件的的 {bj} 的數量。由於 HN-001 崇尚秩序, Ta 對“逆序對”這類事物不感興趣,因此排列 {aj} 中的逆序對數不會太多,具體來說,就是滿足 1≤x<y≤n 且 ax>ay 的二元組 (x,y) 的數量不會超過 105。
由於答案可能很大, HN-001 不想太爲難你,於是 Ta 只要你輸出答案對 109+7 取模的結果
記 ∑n,∑q 分別表示單個測試點中各組測試數據的 n,q 之和。
對於 20% 的數據, n≤10
對於 50% 的數據, n≤1000
對於 100% 的數據, 1≤T≤10,1≤∑n,∑q≤105,排列 {ai} 的逆序對數不超過 105
數據很弱,歡迎水過.
題解
將兩段分別從小到大排序後分別設爲長度爲m的序列a,b,答案就是∏xi−i+1,xi爲a中小於bi的個數,直接這樣做效率是O(nq)的。
考慮逆序對個數最多105個有什麼用,發現對於上面的式子,∑m−xi即爲這兩段區間之間你逆序對個數,這樣不同的xi就不會超過105個,只需對每種xi在較高的效率內算出即可。
而xi在b中又是不降的,於是考慮對每種xi在b中找到對應區間,主席樹維護即可。