Tavan
Tavan–簡單的k進制題
呵呵真的簡單 也就是考試沒做出來罷了,不慌不慌,奶我一口,還能活
【題目摘要】
題目描述
小 Zeljko 一直在閣樓里讀他奶奶的舊信,并且發現了一個長度為 N 的單詞。 不幸的是,由于溢出的墨水,他不知道單詞的內容。他把看不清的 M 個字母每 個字母都用一個字符’#‘替換后,在一張紙上重寫了這個詞。他把那張紙遞給 了他的奶奶,對于每個看不清的字母,奶奶給了他 K 個不同的可能。在那之后, Zeljko 在筆記本中寫下了所有可能的單詞,并決定仔細查看他們的屬性,以確 定原始單詞是什么。在看到筆記本上寫下的單詞后,他的奶奶意識到他們正在 尋找的是按字典序排列的第 X 個單詞。Zeljko 在他們學校學習字母表的那天生 病了,所以他要求你幫助他確定原來的單詞。 輸入 第一行輸入包含整數 N,M,K 和 X(1≤N≤500,1≤M≤N,1≤K≤26,1≤X≤ 1e9)。分別表示單詞的長度,看不清的字母的數量,奶奶給出的字母的數量和 原單詞是字典序的第幾個。 第二行輸入包含一個長度為 N 的字符串,由小寫英文字母和字符’#‘組成。 表示 Zeljko 找到的單詞,其中字符’#'表示看不清的字母。 接下來 M 行中的每一行包含一個長度為 K 的字符串,由 K 個不同的小寫英文 字母組成。第 2+i 行的 K 個字母表示第 i 個看不清的 保證 X 總是小于等于能構造出的單詞的總數。
輸入格式
第一行輸入包含整數 N,M,K 和 X(1≤N≤500,1≤M≤N,1≤K≤26,1≤X≤ 1e9)。分別表示單詞的長度,看不清的字母的數量,奶奶給出的字母的數量和 原單詞是字典序的第幾個。 第二行輸入包含一個長度為 N 的字符串,由小寫英文字母和字符’#‘組成。 表示 Zeljko 找到的單詞,其中字符’#'表示看不清的字母。 接下來 M 行中的每一行包含一個長度為 K 的字符串,由 K 個不同的小寫英文 字母組成。第 2+i 行的 K 個字母表示第 i 個看不清的字母的 K 種可能。 保證 X 總是小于等于能構造出的單詞的總數。
輸出格式
輸出一個字符串。表示原本的單詞。
樣例
樣例輸入
9 2 3 7
po#olje#i
sol
znu
樣例輸出
posoljeni
數據范圍與提示
對于 30%的數據,M=1 并且 K=3。 對于另外 30%的數據,M=1。
數據很簡單本寶寶就不再解釋了
【想法+題解】
此題要解決的就是‘#’所以有臉的字母就已經失寵了不夠吸引朕
初拿此題腦子里一定要有暴力的美麗身姿:而X的范圍可以讓你炸爽
可以暴力枚舉每一種情況放進一個數組里再來個sort鳳舞(我考試就是這樣的)
80%的分就到手了(嘿嘿嘿)
那么怎么拿呢?
brainstorm一波:
如果我們將看不清的每一個字母的k種可能按字典序從小到大排序傻子都看得出
整個串字典序最小的就是每一個字母的第一種可能
下一個字典序就讓最后一個字母移向下一個
若已經自己到達了第k種就讓前一個字母移動一個自己又再次回到第一個(如此循環往復…)
這個時候這道題的真面目就漸漸顯露了:
自己滿k前一位就進1,完全就是k進制法則嘛
那么題目就可以變為有m個進制位,x的k進制轉換,而第i個字母就取第i個進制位上的數
實在碼力有限的可以瞅瞅【代碼實現】
部分很奇的技巧處理學我 可以換一種方法搞
又A一道,我們下期再見!!!
總結
- 上一篇: 怎么优化网站代码(怎么优化网站代码设置)
- 下一篇: 导航安卓互联怎么用(导航安卓互联)