a649: D. 未知的數字表示系統
標籤 : DP Greedy
通過比率 : 2人/3人 ( 67% ) [非即時]
評分方式:
Tolerant

最近更新 : 2021-07-23 23:43

內容

某一天,

Docurve 在一個荒郊野外的山洞裡發現了奇怪的符號,

對數學研究多年的他,

經過一番摸索後,

他發現這是一套未知數字表示法,

所以 Docurve 想要把它轉換成阿拉伯數字,

但是這套系統有 $N$ 個數字符號,

也就是說,

這套系統無法轉換成只有 10 個數字的阿拉伯數字,

因此 Docurve 想要放棄,

但這時擁有賭徒心態的助理 Ascurve 想要賭賭看能不能再一套系統的轉換下減少轉換後的失真。

於是 Ascurve 想出了下面的規則

  • 第一個數字符號可以任意的往阿拉伯的任何一位數字對照
  • 剩餘的數字遵循以下規則
    • 當數字符號比上一個大時,所對照的阿拉伯數字也要比上一個大
    • 當數字符號比上一個小時,所對照的阿拉伯數字也要比上一個小
    • 當數字符號跟上一個一樣大時,所對照的阿拉伯數字也要一樣大
  • 無法符合以上規則時,則此數字符號可以對照成任意阿拉伯數字

想好規則後 Ascurve 便開始傳換 $K$ 個數字符號,

但因為數量龐大,

且為了減少轉換後的失真,

第一個數字符號對到的位置真的很重要,

所以要一直不斷嘗試,

因此請你幫 Ascurve 寫一個程式幫他找找看最小的數字符號失真個數是多少。

 

為了方便程式計算,

Ascurve 把每個數字符號編號,

編號的大小就是代表該數字符號在未知的數字表示法下的大小,

最小的編號為 $1$、次小的為 $2$、...、最大的為 $N$,

且在 $K$ 個符號中,

第 $i$ 個符號的編號表示為 $S_i$。

 

*$K$ 個數字符號要轉換,共有 $N$ 種數字符號,在 $K$、$N$ 不相等時就代表符號可能會有一對多或是多對一的情況

*如果兩數字符號一樣但卻不相鄰,則所對照的阿拉伯數字不一定要一樣

*失真指的是由第三大點規則進行轉換的情況

輸入說明

$N\quad K$

$S_1\quad S_2\quad ...\quad S_K$

輸出說明

最小的數字符號失真個數

 
範例輸入
Sample Input #1
4 6
3 2 1 4 2 3

Sample Input #2
12 13
1 2 3 4 5 6 7 8 9 10 11 12 1
範例輸出
Sample Output #1
0

Sample Output #2
1
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (10%): 0.5s , <1K
公開 測資點#1 (10%): 0.5s , <1K
公開 測資點#2 (10%): 0.5s , <1M
公開 測資點#3 (10%): 0.5s , <1M
公開 測資點#4 (10%): 0.5s , <1M
公開 測資點#5 (10%): 0.5s , <1M
公開 測資點#6 (10%): 0.5s , <1M
公開 測資點#7 (10%): 0.5s , <1M
公開 測資點#8 (10%): 0.5s , <1M
公開 測資點#9 (10%): 0.5s , <1M
提示 :

$20\%$ 的測資: $1\leq K\leq 10$

$80\%$ 的測資: 無特別限制

 

$1\leq K\leq 10^4$

$4\leq N\leq 100$

$1\leq S_i\leq N$

$N\neq K$

$N\neq 10$

標籤:
DP Greedy
出處:
DDJ Regular ContestRound#9 [管理者:
revival0728 (revcoding/10th 進階助教)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」