QOJ.ac

QOJ

时间限制: 1 s 内存限制: 256 MB 总分: 100

#1206. IOIOI 卡片占卜

统计

K 理事長喜歡占卜,平時總會嘗試各種占卜方法。今天,他決定使用正面寫著 I、背面寫著 O 的卡片,來占卜今年日本代表隊在 IOI 的表現。

占卜的方法如下。

  1. 首先,決定正整數 $A,B,C,D,E$。
  2. 將 $A+B+C+D+E$ 張卡片排成橫向一列。由左至右,先將 $A$ 張正面朝上,再將 $B$ 張背面朝上,接著將 $C$ 張正面朝上,再將 $D$ 張背面朝上,最後將 $E$ 張正面朝上。這樣排列後,由左至右會依序出現 $A$ 個 I、$B$ 個 O、$C$ 個 I、$D$ 個 O、$E$ 個 I。
  3. 從事先決定的 $N$ 種操作中選擇一個或多個操作,以任意順序執行。同一種操作可以執行兩次以上。第 $i$ 種操作($1 \le i \le N$)是「將從左起第 $L_i$ 張到第 $R_i$ 張卡片全部翻面」。翻轉一張卡片需要 1 秒,因此執行第 $i$ 種操作需要 $R_i-L_i+1$ 秒。
  4. 操作結束後,如果所有卡片都正面朝上,占卜便成功。

為了避免不必要地翻轉卡片,K 理事長決定在實際使用卡片占卜之前,先判斷是否有可能讓占卜成功。此外,如果有可能,他還想求出讓占卜成功所需的最短時間。

任務

給定卡片排列方式的資訊,以及事先決定的操作資訊。請撰寫程式,判斷是否有可能讓占卜成功,若有可能,求出讓占卜成功所需的最短時間。

輸入格式

從標準輸入讀取以下資料。

  • 第一行包含以空格分隔的整數 $A,B,C,D,E$。這表示占卜開始時,由左至右先將 $A$ 張卡片正面朝上,再將 $B$ 張背面朝上,接著將 $C$ 張正面朝上,再將 $D$ 張背面朝上,最後將 $E$ 張正面朝上。
  • 第二行包含一個整數 $N$,表示事先決定的操作共有 $N$ 種。
  • 接下來 $N$ 行中的第 $i$ 行($1 \le i \le N$)包含以空格分隔的整數 $L_i,R_i$。這表示第 $i$ 種操作是「將從左起第 $L_i$ 張到第 $R_i$ 張卡片全部翻面」。

輸出格式

如果有可能讓占卜成功,請向標準輸出輸出一行整數,表示讓占卜成功所需的最短時間。否則,輸出 $-1$。

資料範圍

所有輸入資料都滿足以下條件。

  • $1 \le A \le 100\,000$。
  • $1 \le B \le 100\,000$。
  • $1 \le C \le 100\,000$。
  • $1 \le D \le 100\,000$。
  • $1 \le E \le 100\,000$。
  • $1 \le N \le 100\,000$。
  • $1 \le L_i \le R_i \le A+B+C+D+E$($1 \le i \le N$)。

子任務

子任務 1 [15 分]

  • 滿足 $N \le 10$。

子任務 2 [50 分]

滿足以下條件。

  • $1 \le A \le 50$。
  • $1 \le B \le 50$。
  • $1 \le C \le 50$。
  • $1 \le D \le 50$。
  • $1 \le E \le 50$。

子任務 3 [35 分]

沒有額外限制。

範例

輸入格式 1

1 2 3 4 5
3
2 3
2 6
4 10

輸出格式 1

12

說明

最初,卡片排列為 IOOIIIOOOOIIIII。

執行第 2 種操作後,排列變為 IIIOOOOOOOIIIII。這個操作需要 5 秒。

接著執行第 3 種操作後,排列變為 IIIIIIIIIIIIIII,占卜便能成功。這個操作需要 7 秒。

可以在 12 秒內讓占卜成功。由於這是最小值,因此輸出 $12$。

輸入格式 2

1 1 1 1 1
1
1 1

輸出格式 2

-1

說明

在這組範例中,無法讓占卜成功,因此輸出 $-1$。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.