1. 程式人生 > >求和(NOIP2015 普及組第三題)

求和(NOIP2015 普及組第三題)

裏的 -h 特殊 滿足 出現次數 https ber syntax 條件

描述

一條狹長的紙帶被均勻劃分出了 n 個格子,格子編號從 1 到 n。每個格子上都染了一種顏色color_icolori?(用[1,m]當中的一個整數表示),並且寫了一個數字number_inumberi?

技術分享

定義一種特殊的三元組:(x, y, z),其中 x,y,z 都代表紙帶上格子的編號,這裏的三元組要求滿足以下兩個條件:
1. x, y, z都是整數, x < y < z, y ? x = z ? y
2. color_xcolorx? = color_zcolorz?

滿足上述條件的**三元組的分數**規定為(x + z) ? (number_xnumberx? + number_znumberz?)。**整個紙帶的分數**規定為所有滿足條件的三元組的分數的和。這個分數可能會很大,你只要輸出整個紙帶的分數除以 10,007 所得的余數即可。

格式

輸入格式

第一行是用一個空格隔開的兩個正整數 n 和 m,n 代表紙帶上格子的個數,m 代表紙帶上 顏色的種類數。

第二行有 n 個用空格隔開的正整數,第 i 個數字number_inumberi?代表紙帶上編號為 i 的格子上面寫的數字。

第三行有 n 個用空格隔開的正整數,第 i 個數字color_icolori?代表紙帶上編號為 i 的格子染的顏色。

輸出格式

共一行,一個整數,表示所求的紙帶分數除以 10,007 所得的余數。

樣例1

樣例輸入1

6 2
5 5 3 2 2 2
2 2 1 1 2 1

樣例輸出1

82

樣例2

樣例輸入2

15 4
5 10 8 2 2 2 9 9 7 7 5 6 4 2 4
2 2 3 3 4 3 3 2 4 4 4 4 1 1 1

樣例輸出2

1388

限制

對於第 1 組至第 2 組數據,1 ≤ n ≤ 100, 1 ≤ m ≤ 5; 對於第 3 組至第 4 組數據,1 ≤ n ≤ 3000, 1 ≤ m ≤ 100;

對於第 5 組至第 6 組數據,1 ≤ n ≤ 100000, 1 ≤ m ≤ 100000,且不存在出現次數超過 20 的顏色;

對於全部 10 組數據, 1 ≤ n ≤ 100000, 1 ≤ m ≤ 100000, 1 ≤ color_icolori? ≤ m, 1 ≤ number_inumberi? ≤ 100000。

提示

【輸入輸出樣例 1 說明】

紙帶如題目描述中的圖所示。

所有滿足條件的三元組為:(1, 3, 5), (4, 5, 6)。

所以紙帶的分數為(1 + 5) ? (5 + 2) + (4 + 6) ? (2 + 2) = 42 + 40 = 82。

求和(NOIP2015 普及組第三題)