URAL 1427. SMS(DP+单调队列)
我用的比较传统的办法。。。单调队列优化了一下,写的有点搓,不管怎样过了。。。两个单调队列,存两个东西,预处理一个标记数组存。。。
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <map>
- #include <ctime>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- #define INF 1000000
- char str[];
- int dp[];
- int pre[];
- int que1[];
- int que2[];
- int judge(char s)
- {
- if(s <= 'Z'&&s >= 'A')
- return ;
- else if(s <= 'z'&&s >= 'a')
- return ;
- else if(s == ' ')
- return ;
- else
- return ;
- }
- int main()
- {
- int n,m,i,j,len,str1,end1,str2,end2;
- scanf("%d%d%*c",&n,&m);
- gets(str);
- len = strlen(str);
- for(i = ; i < len; i ++)
- {
- if(judge(str[i]))
- {
- for(j = i; j < len; j ++)
- {
- if(judge(str[j]))
- pre[j] = i;
- else
- {
- i = j;
- break;
- }
- }
- if(j == len) break;
- }
- }
- for(i = ;i <= len;i ++)
- dp[i] = INF;
- str1 = ;end1 = ;
- str2 = ;end2 = ;
- que1[] = que2[] = ;
- for(i = ;i <= len;i ++)
- {
- dp[i] = dp[que1[str1]] + ;
- if(judge(str[i-]))
- {
- if(str2 < end2)
- dp[i] = min(dp[i],dp[que2[str2]]+);
- }
- else
- {
- str2 = end2 = ;
- }
- if(i == len) continue;
- while(str1 < end1&&dp[i] <= dp[que1[end1-]])
- end1 --;
- que1[end1++] = i;
- while(str1 < end1&&i - que1[str1] >= n)
- str1 ++;
- if(judge(str[i]))
- {
- while(str2 < end2&&dp[i] <= dp[que2[end2-]])
- end2 --;
- que2[end2++] = i;
- while(str2 < end2&&que2[str2] < pre[i])
- str2 ++;
- while(i - que2[str2] >= m&&str2 < end2)
- str2 ++;
- }
- }
- printf("%d\n",dp[len]);
- return ;
- }
URAL 1427. SMS(DP+单调队列)的更多相关文章
- [poj3017] Cut the Sequence (DP + 单调队列优化 + 平衡树优化)
DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the se ...
- DP+单调队列 codevs 1748 瑰丽华尔兹(还不是很懂具体的代码实现)
codevs 1748 瑰丽华尔兹 2005年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Descripti ...
- 习题:烽火传递(DP+单调队列)
烽火传递[题目描述]烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有n个烽火台,每个烽火台 ...
- (noip模拟二十一)【BZOJ2500】幸福的道路-树形DP+单调队列
Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. ...
- 3622 假期(DP+单调队列优化)
3622 假期 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 经过几个月辛勤的工作,FJ决定让奶牛放假.假期可以在1-N天内任意选择 ...
- bzoj2500: 幸福的道路(树形dp+单调队列)
好题.. 先找出每个节点的树上最长路 由树形DP完成 节点x,设其最长路的子节点为y 对于y的最长路,有向上和向下两种情况: down:y向子节点的最长路g[y][0] up:x的次长路的g[x][1 ...
- [USACO2004][poj2373]Dividing the Path(DP+单调队列)
http://poj.org/problem?id=2373 题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草 ...
- HDU 3401 Trade dp+单调队列优化
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others)Mem ...
- hdu4374One hundred layer (DP+单调队列)
http://acm.hdu.edu.cn/showproblem.php?pid=4374 去年多校的题 今年才做 不知道这一年都干嘛去了.. DP的思路很好想 dp[i][j] = max(dp[ ...
随机推荐
- JSON C# Class Generator ---由json字符串生成C#实体类的工具(转)
转载地址:http://www.cnblogs.com/finesite/archive/2011/07/31/2122984.html json作为互联网上轻量便捷的数据传输格式,越来越受到重视.但 ...
- Babelfish(二分查找,字符串的处理略有难度,用sscanf输入)
Babelfish Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 28581 Accepted: 12326 题目链接: ...
- python多线程之semaphore(信号量)
#!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time import random semaphore = ...
- Installing Hadoop on Mac OSX Yosemite Tutorial Part 1.
Installing Hadoop on Mac OSX Yosemite Tutorial Part 1. September 23, 2014 Marek 68 Comments Install ...
- ASP.NET多线程下使用HttpContext.Current为null解决方案 2015-01-22 15:23 350人阅读 评论(0) 收藏
问题一:多线程下获取文件绝对路径 当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,解决办 ...
- android 入门-Service
sdk 1.7 package com.example.hellowrold; import java.util.Random; import com.example.hellowrold.R.id; ...
- [Oracle] PL/SQL学习笔记
-- 1. 使用一个变量 declare -- Local variables here v_name ); begin -- Test statements here select t.user_n ...
- vector的主要操作
vector常用方法 assign() 对Vector中的元素赋值 void assign( input_iterator start, input_iterator end ); // void a ...
- PRD产品需求文档
什么是PRD? PRD是Product Requirement Document的英文缩写,即产品需求文档的意思.PRD昰产品流程中的最后一步工作,是将原型中的功能.界面具象化描述,是提交给设计(UI ...
- 关于CDH中开发Spark
文章发自http://www.cnblogs.com/hark0623/p/4167363.html 转发请注明 注意:基于CDH进行Spark开发时,使用高版本的apache原生包即可:不需要使用C ...