Difference bzoj-2213 Poi-2011

题目大意:已知一个长度为n的由小写字母组成的字符串,求其中连续的一段,满足该段中出现最多的字母出现的个数减去该段中出现最少的字母出现的个数最大。求这个个数。

注释:$1\le n\le 10^6$。


想法:“在线”的dp题。

状态:$dp[i][j]$表示在当前位置,字母$i$与字母$j$之间的最大差,$dp2[i][j]$表示出现次数的差。

这样的话就可以拿来更新答案了。

至于复杂度的的话,因为每次从$i$更新到$i+1$只会更改52个值,所以复杂度是$O(n)$的。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define K 50
using namespace std;
int sum[K],f[K][K],g[K][K],c[K][K],h[K][K],d[K][K],ans;
char str[1000010];
void update(int a , int b)
{if(c[a][b] < sum[b]) ans = max(ans , f[a][b] - g[a][b]);else if(d[a][b] < sum[b]) ans = max(ans , f[a][b] - h[a][b]);if(f[a][b] < g[a][b]){if(c[a][b] < sum[b]) h[a][b] = g[a][b] , d[a][b] = c[a][b];g[a][b] = f[a][b] , c[a][b] = sum[b];}else if(c[a][b] < sum[b] && f[a][b] < h[a][b]) h[a][b] = f[a][b] , d[a][b] = sum[b];
}
int main()
{int n,t;scanf("%d%s" , &n , str + 1);for(int i=1;i<=n;i++){t=str[i]-'a'; sum[t]++;for(int j=0;j<K;j++)if(t != j) f[t][j]++,update(t,j),f[j][t]--,update(j,t);}printf("%d\n",ans);return 0;
}

小结:挺好的题(好像是lzh的考试题)。

转载于:https://www.cnblogs.com/ShuraK/p/9537221.html

[bzoj2213][Poi2011]Difference_动态规划相关推荐

  1. BZOJ 2216 Poi2011 Lightning Conductor 动态规划

    题目大意:给定一个序列aia_i,对于每一个ii求⌈max{aj+|i−j|−−−−−√}−ai⌉\lceil max\{ a_j+\sqrt{|i-j|}\}-a_i\rceil 看了题解才知道是决 ...

  2. 基础省选+NOI-第4部分 动态规划

    1.期望概率DP [整理]简单的数学期望和概率DP [整理]简单的数学期望和概率DP - nimphy - 博客园 期望&概率dp总结 期望&概率dp总结_十分残念的博客-CSDN博客 ...

  3. bzoj 2216: [Poi2011]Lightning Conductor(DP决策单调性)

    2216: [Poi2011]Lightning Conductor Time Limit: 25 Sec  Memory Limit: 64 MB Submit: 1292  Solved: 443 ...

  4. 省选+NOI 第一部分 动态规划DP

    期望概率DP [整理]简单的数学期望和概率DP [整理]简单的数学期望和概率DP - nimphy - 博客园 期望&概率dp总结 期望&概率dp总结_十分残念的博客-CSDN博客 期 ...

  5. 伍六七带你学算法 动态规划 ——不同路径

    力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...

  6. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  7. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  8. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

  9. 2016.4.2 动态规划练习--讲课整理

    1.codevs1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿 ...

最新文章

  1. 影响计算机算法世界的十位大师(上)
  2. 如何删除Cookie?
  3. Windows 8的无线设置后,竟不能直接更改,目前知道可以通过命令行解决
  4. SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法
  5. 可视化管理_供应链可视化管理的应用与展望
  6. 怎么用ai做出适量插画_怎么用最简单的方法,做出最炫酷的数据可视化图表?...
  7. java编程石头剪刀布_java 开发的石头,剪刀,布的游戏 demo
  8. 1-3-JavaScript技术
  9. 【干货】私域电商崛起:2021见实私域流量白皮书高清6月版.pdf(附下载链接)...
  10. Leetcode每日一题:33.search-in-rotated-sorted-array(搜索旋转排序数组)
  11. 一起啃PRML - 1.2.1 Probability densities 概率密度
  12. 深度学习与自然语言处理 主要概念一览
  13. 图像基础ImageMagick图像处理
  14. matlab空间计量AIC准则,空间计量经分析课件.ppt
  15. 运行JavaScript代码片段的19种工具
  16. IOS开发之——音乐播放器-资源和Model(02)
  17. Elasticsearch:从搜索中获取选定的字段 fields
  18. 平板游戏交互式设计的10大规则
  19. 获取QQ邮箱的授权码
  20. 淘宝天猫各平台APP端页面详情api接口调用

热门文章

  1. 《中国人工智能学会通讯》——10.10 结束语
  2. MongoDB主从+php实现
  3. 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)
  4. apache 开启Gzip网页压缩
  5. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序...
  6. javascript闭包-全局变量与局部变量
  7. Javascript模块化编程:AMD规范
  8. CentOS下MongoDB的升级
  9. 搭建Mysql-proxy实现主从同步读写分离
  10. 机房墙面为什么要做保温?该怎么做?