字典树,$dp$。

记录$dp[i]$为以$i$为结尾获得的最大价值。枚举结尾一段是哪个单词,更新最大值。可以将字典中单词倒着建一棵字典树。

这题数据有点不严谨。

下面这组数据答案应该是负的。

3

a 0.1

aa 0.1

aaa 0.1

1

aaa

下面这组数据没通过的代码在$OJ$上也可以$AC$......

3

a 2

aa 2

aaa 2

1

aaab

正确答案是:

6.238325

aaa b

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std; double eps = 1e-7; struct X
{
double f;
int nx[26];
}s[300010];
int sz=0,root=0; int n,T;
char t[5010];
char tt[5010];
double w; double dp[5010];
int pre[5010]; int r[5010]; void Insert()
{
int p = root;
int len = strlen(t);
for(int i=len-1 ; i>=0 ;i--)
{
if(t[i]>='A'&&t[i]<='Z') t[i] = t[i] -'A' + 'a';
if(s[p].nx[t[i]-'a']==-1) s[p].nx[t[i]-'a'] = ++sz;
p = s[p].nx[t[i]-'a'];
}
s[p].f = w;
} double get(int x)
{
if(x<0) return 0.0;
return dp[x];
} double work(double x)
{
if(x==0.0) return 0.0;
return log(x);
} int main()
{
scanf("%d",&n); for(int i=0;i<=300005;i++)
{
s[i].f = 0;
for(int j=0;j<=25;j++) s[i].nx[j] = -1;
} sz=0; for(int i=1;i<=n;i++)
{
scanf("%s%lf",t,&w);
Insert();
} scanf("%d",&T);
while(T--)
{
scanf("%s",t); tt[0]=0; strcpy(tt,t);
int len = strlen(t); for(int i=0;i<len;i++)
{
if(t[i]>='A'&&t[i]<='Z')
t[i] = t[i] - 'A' +'a';
} memset(dp,0,sizeof dp);
memset(pre,-1,sizeof pre); for(int i=0;i<len;i++)
{
int now = i, p = root; while(1)
{
if(now<0) break;
if(s[p].nx[t[now]-'a']==-1)
{
for(int e=0;e<now;e++)
{
if(dp[i] < dp[e])
{
dp[i] = dp[e];
pre[i] = e;
}
}
break;
}
p = s[p].nx[t[now]-'a']; if(get(now-1) + work(s[p].f)*(i-now+1)*(i-now+1) > dp[i])
{
dp[i] = get(now-1) + work(s[p].f)*(i-now+1)*(i-now+1);
pre[i] = now-1;
} now--;
}
} printf("%.6f\n",dp[len-1]); memset(r,0,sizeof r); int pp = pre[len-1]; while(1)
{
if(pp<0) break;
r[pp]=1;
pp = pre[pp];
} for(int i=0;i<len;i++)
{
printf("%c",tt[i]);
if(r[i]) printf(" ");
}
printf("\n"); } return 0;
}

EOJ 3261 分词的更多相关文章

  1. EOJ Problem #3261 分词 trie + dp + 小剪枝

    http://acm.ecnu.edu.cn/problem/3261/ 分词 Time limit per test: 1.0 seconds Time limit all tests: 1.0 s ...

  2. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  3. 结巴分词3--基于汉字成词能力的HMM模型识别未登录词

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 算法简介 在 结巴分词2--基于前缀词典及动态规划实现分词 博 ...

  4. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...

  5. Python学习实践------正向最大匹配中文分词

    正向最大匹配分词: 1.加载词典文件到集合中,取词典文件中最大长度词的length 2.每次先在句子中按最大长度分割,然后判断分割的词是否存在字典中,存在则记录此词,调整起始点. 3.不存在则按最大长 ...

  6. 中文分词之结巴分词~~~附使用场景+demo(net)

    常用技能(更新ing):http://www.cnblogs.com/dunitian/p/4822808.html#skill 技能总纲(更新ing):http://www.cnblogs.com/ ...

  7. OpenNLP:驾驭文本,分词那些事

    OpenNLP:驾驭文本,分词那些事 作者 白宁超 2016年3月27日19:55:03 摘要:字符串.字符数组以及其他文本表示的处理库构成大部分文本处理程序的基础.大部分语言都包括基本的处理库,这也 ...

  8. 中文分词工具探析(二):Jieba

    1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ...

  9. Solr5.5.1 IK中文分词配置与使用

    前言 用过Lucene.net的都知道,我们自己搭建索引服务器时和解决搜索匹配度的问题都用到过盘古分词.其中包含一个词典. 那么既然用到了这种国际化的框架,那么就避免不了中文分词.尤其是国内特殊行业比 ...

随机推荐

  1. 怎样安装Command Line Tools in OS x Mavericks&Yosemite(Without xcode)--转载

    How to Install Command Line Tools in OS X Mavericks & Yosemite (Without Xcode) Mac users who pre ...

  2. C11关键字&字面值改善

    1.原始字面值改善 原始字面值可以直接表示字符串的实际含义,但是一些特殊字符就需要转义. std::string str = "D:\A\B\test.txt"; std::cou ...

  3. JAVA多线程提高十一:同步工具Exchanger

    Exchanger可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchanger 可能被视 ...

  4. 解决gridview row 左边序列号 显示不完全的技巧

    放在主程序 入口处, public Form1() { InitializeComponent(); gridView1.IndicatorWidth = ; //<宽度值>官方推荐常用是 ...

  5. 对 JavaScript 进行单元测试的工具

    简介 单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:它能帮助您 ...

  6. react 项目遇到的警告集锦

    1.  2.

  7. 23、Xpath

    1.什么是Xpath?1.XPath即为XMLPath的简称,它是一种用来确定XML文档中某部分位置的语言.2.HTML可以看做是XML的一种实现,所以selenium用户可以使用这种强大的语言在we ...

  8. linux学习记录.2.hello world.c

    安装vim,指令: sudo apt-get install vim 建立一个子目录WorkSpace,指令 mkdir WorkSpace 转到该目录下,指令 cd WorkSpace 新建c文件, ...

  9. 解决Chrome下表单自动填充后背景色为黄色

    Chrome浏览器在表单自动填充后会显示黄色背景,这是Chrome的私有属性导致,对于有洁癖的人来讲,是不喜欢的,我们可以手动去掉. 代码如下: input:-webkit-autofill { -w ...

  10. 自动化运维工具SaltStack详细部署【转】

    ==========================================================================================一.基础介绍==== ...