EOJ 3261 分詞 dp 字典樹

2021-08-01 14:19:52 字數 1956 閱讀 8357

有一句句子因為貼上的時候出現了一點問題空格全部丟失了。現在給一本字典,每個詞都對應這個詞出現的頻率(每十億)。根據這個頻率,我們可以根據下面的公式算出這個詞帶來的收益 p(word):

p(word)=len2(word)⋅ln(frequency(word))

其中 frequency 就是上面所提到的頻率。len 指的是單詞的長度。

特別的,對於字典中沒有出現過的詞,p(word)=0。

請對句子進行適當的分割,使得分割得到的所有詞收益之和最大。同乙個詞可以重複出現,收益算作多次。

input

先給出一本詞典,詞典的第一行是詞條數(詞條數約為 40 000),下面每行分別是單詞和對應出現頻率,用空格隔開。單詞中只會出現英文本母大小寫,不會有多餘的空格。每個單詞只會出現一次。頻率是乙個正實數。

所有單詞長度之和不超過 3⋅105,最長單詞長度不超過 30。

接下來一行乙個整數 t (t≤10),表示有 t 個查詢。

下面 t 行,每行乙個句子,句子長度不超過 5 000。句子中保證只含有英文本母大小寫。注意單詞匹配時,不區分大小寫。

詞典資料**於 wikipedia project gutenberg(可能需要**),其中 1-10000 詞彙。

查詢資料**於 ielts test。

output

對於每組資料,輸出兩行。

第一行是乙個實數,表示最大能達到的收益。輸出和答案相差不超過 10−3 即可認為正確。

第二行輸出一連串單詞,單詞和單詞之間用空格隔開。滿足:

把這些單詞依次串聯起來可以得到原句子;

所有單詞的收益值相加得到第一行的實數。

首先把每個單詞與其價值關聯起來便於查詢,用字典樹或者stl的map皆可,擔心map超時,用了字典樹。接下來便是如何去劃分單詞,定義dp

[i] 為以句子中第i個字母結尾時能得到的最大價值,可以得到狀態轉移方程:dp

[i]=

max(

dp[i

],dp

[j]+

val)

,其中0<=

j<

i ,表示取以第

j 個字母為結尾得到的價值加上從j+

1到i 構成的新單詞的價值中的最大值。題意又說單詞長度不超過30,所以j取

max(

i−30,

0)即可。另外怎麼記錄句子從**劃分呢?我們可以記錄每個位置由之前的某個位置更新而來,即記錄每個點的前驅,前驅就是句子劃分處

#include 

using

namespace

std;

const

int n = 5000 + 10;

struct trie

}*root;

char str[n], tmp[n];

double dp[n];

int pre[n];

bool vis[n];

void trie_insert(char *s, double val)

p->val = val;

}double trie_query(int l, int r, char *s)

return p->val;

}void trie_del(trie *p)

void work(char *str)}}

printf("%.6f\n", dp[len]);

int id = len;

while(id != -1) vis[pre[id]] = true, id = pre[id];//從末尾開始尋找前驅並記錄

for(int i = 1; i <= len; i++)

printf("\n");

}int main()

scanf("%d", &m);

while(m--)

trie_del(root);

}return

0;}

Python 結巴分詞(1)分詞

利用結巴分詞來進行詞頻的統計,並輸出到檔案中。結巴分詞的特點 支援繁體分詞 支援自定義詞典 mit 授權協議 演算法 分詞引數 使用者詞典 載入詞典 使用者詞典 userdict.dict 雲計算 5 李小福 2 nr 創新辦 3 i easy install 3 eng 好用 300 韓玉賞鑑 3...

mysql 三分分詞 MySQL 中文分詞原理

一,首先我們來了解一下其他幾個知識點 1.mysql的索引意義?索引是加快訪問表內容的基本手段,尤其是在涉及多個表的關聯查詢裡。當然,索引可以加快檢索速度,但是它也同時降低了索引列的插入,刪除和更新值的速度。換通俗的話來講 mysql中的索引就是乙個特殊的平衡二叉樹,當在平衡二叉樹中搜尋某一條值的時...

ICTCLAS2010分詞工具

計算所漢語詞法分析系統 ictclas 中國科學院計算技術研究所在多年研究基礎上,耗時一年研製出了基於多層隱馬模型的漢語詞法分析系統 ictclas institute of computing technology,chinese lexical analysis system 該系統的功能有 中...