题目链接

我用的比较传统的办法。。。单调队列优化了一下,写的有点搓,不管怎样过了。。。两个单调队列,存两个东西,预处理一个标记数组存。。。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <queue>
  5. #include <map>
  6. #include <ctime>
  7. #include <cmath>
  8. #include <algorithm>
  9. using namespace std;
  10. #define INF 1000000
  11. char str[];
  12. int dp[];
  13. int pre[];
  14. int que1[];
  15. int que2[];
  16. int judge(char s)
  17. {
  18. if(s <= 'Z'&&s >= 'A')
  19. return ;
  20. else if(s <= 'z'&&s >= 'a')
  21. return ;
  22. else if(s == ' ')
  23. return ;
  24. else
  25. return ;
  26. }
  27. int main()
  28. {
  29. int n,m,i,j,len,str1,end1,str2,end2;
  30. scanf("%d%d%*c",&n,&m);
  31. gets(str);
  32. len = strlen(str);
  33. for(i = ; i < len; i ++)
  34. {
  35. if(judge(str[i]))
  36. {
  37. for(j = i; j < len; j ++)
  38. {
  39. if(judge(str[j]))
  40. pre[j] = i;
  41. else
  42. {
  43. i = j;
  44. break;
  45. }
  46. }
  47. if(j == len) break;
  48. }
  49. }
  50. for(i = ;i <= len;i ++)
  51. dp[i] = INF;
  52. str1 = ;end1 = ;
  53. str2 = ;end2 = ;
  54. que1[] = que2[] = ;
  55. for(i = ;i <= len;i ++)
  56. {
  57. dp[i] = dp[que1[str1]] + ;
  58. if(judge(str[i-]))
  59. {
  60. if(str2 < end2)
  61. dp[i] = min(dp[i],dp[que2[str2]]+);
  62. }
  63. else
  64. {
  65. str2 = end2 = ;
  66. }
  67. if(i == len) continue;
  68. while(str1 < end1&&dp[i] <= dp[que1[end1-]])
  69. end1 --;
  70. que1[end1++] = i;
  71. while(str1 < end1&&i - que1[str1] >= n)
  72. str1 ++;
  73. if(judge(str[i]))
  74. {
  75. while(str2 < end2&&dp[i] <= dp[que2[end2-]])
  76. end2 --;
  77. que2[end2++] = i;
  78. while(str2 < end2&&que2[str2] < pre[i])
  79. str2 ++;
  80. while(i - que2[str2] >= m&&str2 < end2)
  81. str2 ++;
  82. }
  83. }
  84. printf("%d\n",dp[len]);
  85. return ;
  86. }

URAL 1427. SMS(DP+单调队列)的更多相关文章

  1. [poj3017] Cut the Sequence (DP + 单调队列优化 + 平衡树优化)

    DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the se ...

  2. DP+单调队列 codevs 1748 瑰丽华尔兹(还不是很懂具体的代码实现)

    codevs 1748 瑰丽华尔兹 2005年NOI全国竞赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解       题目描述 Descripti ...

  3. 习题:烽火传递(DP+单调队列)

    烽火传递[题目描述]烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有n个烽火台,每个烽火台 ...

  4. (noip模拟二十一)【BZOJ2500】幸福的道路-树形DP+单调队列

    Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. ...

  5. 3622 假期(DP+单调队列优化)

    3622 假期 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 经过几个月辛勤的工作,FJ决定让奶牛放假.假期可以在1-N天内任意选择 ...

  6. bzoj2500: 幸福的道路(树形dp+单调队列)

    好题.. 先找出每个节点的树上最长路 由树形DP完成 节点x,设其最长路的子节点为y 对于y的最长路,有向上和向下两种情况: down:y向子节点的最长路g[y][0] up:x的次长路的g[x][1 ...

  7. [USACO2004][poj2373]Dividing the Path(DP+单调队列)

    http://poj.org/problem?id=2373 题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草 ...

  8. HDU 3401 Trade dp+单调队列优化

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others)Mem ...

  9. hdu4374One hundred layer (DP+单调队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=4374 去年多校的题 今年才做 不知道这一年都干嘛去了.. DP的思路很好想 dp[i][j] = max(dp[ ...

随机推荐

  1. 重温WCF之WCF传输安全(十三)(1)前期准备之证书制作(转)

    转载地址:http://www.cnblogs.com/lxblog/archive/2012/09/12/2682372.html 一.WCF中的安全方式 说到安全就会涉及到认证,消息一致性和机密性 ...

  2. ASP.NET Web Api 安全性(转载)

    转载地址:http://www.cnblogs.com/fzrain/p/3552423.html 在Web Api中强制使用Https 我们可以在IIS级别配置整个Web Api来强制使用Https ...

  3. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  4. hdu 4063 福州赛区网络赛 圆 ****

    画几个图后,知道路径点集一定是起点终点加上圆与圆之间的交点,枚举每两个点之间是否能走,能走则连上线,然后求一遍最短路即可 #include<cstdio> #include<cstd ...

  5. Java中的异或(转)

    在java程序里面的异或用法: 相同输出0,不同输出1,例如: System.out.println(1^1); 输出0 System.out.println(1^2):输出3,因为最后2个低位都不一 ...

  6. loj 1036(dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25913 思路:易证存在一条从左上角到右下角的折线,沿着格子边缘的. ...

  7. sudo -u hdfs hdfs balancer出现异常 No lease on /system/balancer.id

    16/06/02 20:34:05 INFO balancer.Balancer: namenodes = [hdfs://dlhtHadoop101:8022, hdfs://dlhtHadoop1 ...

  8. 浅谈C++多态性

    本文转载至http://blog.csdn.net/hackbuteer1/article/details/7475622 总结: (1)区分概念:    重载----同一个类中,相同的函数名字,不同 ...

  9. mysql replace into用法与坑

    需要主键一致 PRIMARY KEY (id) PRIMARY KEY (id, ts) 坑: https://blog.xupeng.me/2013/10/11/mysql-replace-into ...

  10. win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...