博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2213 : [Poi2011]Difference
阅读量:6529 次
发布时间:2019-06-24

本文共 529 字,大约阅读时间需要 1 分钟。

设f[i][j]为前i个字符中j出现的次数,则

ans=max((f[r][i]-f[l-1][i])-(f[r][j]-f[l-1][j]))=max((f[r][i]-f[r][j])-(f[l-1][i]-f[l-1][j])),其中f[r][j]!=f[l-1][j]。

考虑枚举r,当r从r-1变化到r时,f[r][i]-f[r][j]与f[r-1][i]-f[r-1][j]只有52个值会改变。

处理这52组(i,j),并求出min(f[l-1][i]-f[l-1][j])。

因为要满足f[r][j]!=f[l-1][j],所以要记录f[x][i]-f[x][j]的最小值和次小值及其对应的f[x][j],且要保证f[x][j]不相同。

若最小值对应的f[x][j]!=f[r][j],则取最小值,否则取次小值。

时间复杂度$O(26n)$。

 

#include
#define K 26int n,i,j,k,c[K],b[K][K],f0[K][K],g0[K][K],f1[K][K],g1[K][K],ans;char a[1000010];inline void max(int x){if(ans

  

转载地址:http://pwqbo.baihongyu.com/

你可能感兴趣的文章
mybatis
查看>>
HBase JavaAPI
查看>>
神奇的Invsqrt函数
查看>>
【转载】休眠状态和墓碑状态
查看>>
Django框架开发web网站的网页优化—页面静态化
查看>>
PHP Jquery
查看>>
mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?
查看>>
50道sql练习题和答案
查看>>
获取本地soapUI项目路径
查看>>
窗口可视区和其他一些参数
查看>>
如何利用Mathematica调用C编写的函数
查看>>
java第四次作业
查看>>
Oracle 数据库命令个人总结
查看>>
LeetCode-删除排序数组中的重复项
查看>>
栈的初步学习
查看>>
复利计算-结对
查看>>
dubbo监控中心---dubbo-admin
查看>>
MySQL 主从同步失败,数据表修复
查看>>
Hadoop_21_MapReduce程序实现Join功能
查看>>
每个字符串存在次数
查看>>