QOJ.ac

QOJ

Time Limit: 6 s Memory Limit: 1024 MB Total points: 100 Difficulty: [show] Hackable ✓

#13080. 序列變換

Statistics

給定兩個長度為 $n$ 的整數序列 $B=[b_1,\ldots,b_n]$、$C=[c_1,\ldots,c_n]$。對於長度為 $n$ 的非負整數序列 $D=[d_1,\ldots,d_n]$,設 $S(D)$ 為所有滿足 $d_i=0$ 的下標 $i$ 的集合,定義 $f(D)=\sum_{i\in S(D)}b_i$、$g(D)=\prod_{i\in S(D)}c_i$。特別地,若 $S(D)$ 為空,則 $f(D)=0$、$g(D)=1$。

小 L 有一個長度為 $n$ 的正整數序列 $A=[a_1,\ldots,a_n]$。小 L 可以對序列 $A$ 做如下修改:

  • 選擇序列 $A$ 的兩個相鄰的下標 $i,j$(即 $1\le i,j\le n$ 且 $|i-j|=1$),若 $a_i\le a_j$,則將 $a_j$ 改為 $a_j-a_i$,同時將 $a_i$ 改為 $0$。

小 L 可以進行任意多次修改操作,也可以不進行任何修改。對於所有序列 $A$ 通過以上修改操作可以得到的序列 $D$,小 L 想求出 $f(D)$ 的最大值以及 $g(D)$ 之和,請你幫助他求出這兩個值。形式化地,記 $T(A)$ 為序列 $A$ 通過以上修改操作可以得到的所有序列的集合,你需要求出 $\max_{D\in T(A)}f(D)$ 以及 $\sum_{D\in T(A)}g(D)$。其中,由於 $\sum_{D\in T(A)}g(D)$ 可能較大,你只需要求出其對 $1\,000\,000\,007$ 取模後的結果。

輸入格式

從檔案 sequence.in 中讀入資料。

本題包含多組測試資料。

輸入的第一行包含兩個非負整數 $c,t$,分別表示測試點編號與測試資料組數。$c=0$ 表示該測試點為範例。

接下來依次輸入每組測試資料,對於每組測試資料:

第一行包含一個正整數 $n$,表示序列長度。

第二行包含 $n$ 個正整數 $a_1,\ldots,a_n$,表示序列 $A$。

第三行包含 $n$ 個整數 $b_1,\ldots,b_n$,表示序列 $B$。

第四行包含 $n$ 個正整數 $c_1,\ldots,c_n$,表示序列 $C$。

輸出格式

輸出到檔案 sequence.out 中。

對於每組測試資料,僅輸出一行,其中包含兩個整數,分別表示 $\max_{D\in T(A)}f(D)$ 以及 $\sum_{D\in T(A)}g(D)$ 對 $1\,000\,000\,007$ 取模後的結果。注意:$\max_{D\in T(A)}f(D)$ 不需要對 $1\,000\,000\,007$ 取模。

本題包含兩個小問,正確回答其中任意一個小問均可獲得部分分數。具體評分規則請參見「子任務」。

範例

輸入格式 1

0 3
3
5 6 6
3 6 9
1 2 3
6
1 1 4 5 1 4
-1 1 -1 1 -2 2
1 1 1 1 1 1
8
4 2 4 2 2 2 4 4
-2 4 9 -3 4 8 7 8
1 1 1 1 1 1 1 1

輸出格式 1

15 10
1 18
37 48

說明

該範例共包含三組測試資料。

對於第一組測試資料,可以得到以下 $4$ 個序列:

  • $D=[5,6,6]$,$f(D)=0$,$g(D)=1$;
  • $D=[0,1,6]$,$f(D)=3$,$g(D)=1$;
  • $D=[5,0,0]$,$f(D)=6+9=15$,$g(D)=2\times3=6$;
  • $D=[0,0,5]$,$f(D)=3+6=9$,$g(D)=1\times2=2$。

故 $\max_{D\in T(A)}f(D)=\max\{0,3,15,9\}=15$,$\sum_{D\in T(A)}g(D)=1+1+6+2=10$。

範例 2

見選手目錄下的 sequence/sequence2.in 與 sequence/sequence2.ans。

該範例滿足測試點 $3,4$ 的約束條件。

範例 3

見選手目錄下的 sequence/sequence3.in 與 sequence/sequence3.ans。

該範例滿足測試點 $5,6$ 的約束條件。

範例 4

見選手目錄下的 sequence/sequence4.in 與 sequence/sequence4.ans。

該範例滿足測試點 $7$ 的約束條件。

範例 5

見選手目錄下的 sequence/sequence5.in 與 sequence/sequence5.ans。

該範例滿足測試點 $11,12$ 的約束條件。

範例 6

見選手目錄下的 sequence/sequence6.in 與 sequence/sequence6.ans。

該範例滿足測試點 $16\sim18$ 的約束條件。

資料範圍

設 $N$ 為單個測試點內所有測試資料的 $n$ 的和。對於所有測試資料,保證:

  • $1\le t\le20$;
  • $1\le n\le5000$,$N\le4\times10^4$;
  • 對於所有 $1\le i\le n$,均有 $1\le A_i\le10^9$;
  • 對於所有 $1\le i\le n$,均有 $-10^9\le B_i\le10^9$;
  • 對於所有 $1\le i\le n$,均有 $1\le C_i\le10^9$。
測試點編號 $n\le$ $N\le$ 特殊性質
$1,2$ $8$ $10^2$ 無
$3,4$ $200$ $400$ B
$5,6$ $200$ $400$ 無
$7$ $500$ $10^3$ A
$8\sim10$ $500$ $10^3$ B
$11,12$ $500$ $10^3$ 無
$13$ $3500$ $3\times10^4$ A
$14,15$ $3500$ $3\times10^4$ B
$16\sim18$ $3500$ $3\times10^4$ 無
$19,20$ $5000$ $4\times10^4$ 無

特殊性質 A:保證 $A_1=A_2=\cdots=A_n=1$。

特殊性質 B:保證對於所有 $1\le i\le n$,$A_i$ 均在 $[1,10^9]$ 中獨立均勻隨機產生。

子任務

對於每個測試點:

  • 正確回答所有測試資料的 $\max_{D\in T(A)}f(D)$,可獲得該測試點 $40\%$ 的分數;
  • 正確回答所有測試資料的 $\sum_{D\in T(A)}g(D)$ 對 $1\,000\,000\,007$ 取模後的結果,可獲得該測試點 $60\%$ 的分數。

注意:即使選手僅回答了其中一個問題,也需要按照輸出格式輸出兩個整數,分別對應兩個問題的答案。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#2598EditorialOpen$O(N + \log P)$ 题解 by ChatGPTAnonymousView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.