CHEFSIGN: 大厨与符号序列
题目描述
大厨昨天捡到了一个奇怪的字符串 s,这是一个仅包含‘<’、‘=’和‘>’三种比较符号的字符串。
记字符串长度为 N,大厨想要在字符串的开头、结尾,和每两个字符之间插入一个正整数,共
N + 1 个数。大厨希望插入数字之后,这些比较符号所表达的含义是正确的。举个例子,如果
在‘<’前后分别插入 a 和 b,那么应当有 a < b。对于‘=’和‘>’也是类似的。
大厨可以在 [1, P] 中任意选择数字插入,同一个数也可以被插入到多个位置。
请你帮大厨计算 P 的最小取值可以是多少。
输入格式
输入的第一行包含一个整数 T,代表测试数据的组数。接下来是 T 组数据。
每组数据仅有一行,包含一个字符串 s。保证字符串仅包含‘<’、‘=’和‘>’三种字符。
输出格式
对于每组数据,输出一行,包含一个整数,代表 P 的最小取值。
数据范围和子任务
• 1 ≤ T, N ≤ 105
• 1 ≤ 每组数据中 N 之和 ≤ 106
子任务 1(30 分):
• 1 ≤ T, N ≤ 103
• 1 ≤ 每组数据中 N 之和 ≤ 104
子任务 2(70 分):
• 无附加限制
样例数据
输入
4
<<<
<><
<=>
<=<
输出
4
2
2
3
样例解释
下面对于每组数据分别给出一种可行的插入整数的方案:
• 1 < 2 < 3 < 4
• 1 < 2 > 1 < 2
• 1 < 2 = 2 > 1
• 1 < 2 = 2 < 3

首先,“=”可以完全忽略,我们需要的只有“>”和“<”号。让我们来考虑一下:

如果只有"<",那答案是什么呢?显然,是串的长度+1;

如果只有">",那答案是什么呢?显然,也是串的长度+1;

但是,现在两种都有,怎么办?显然,原串可拆分成若干单调子串。假设第一个符号前数为a1,假设<和>的交界处数分别为a2,a3,a4……,ak-1。最后一个符号后为ak。

则我们要求的就是max(abs(ai-aj)){1<=i,j<=k}。若将a数组投影至二位平面上,则是这样的:

显然,所有的abs(Ai-Ai-1)都是取决于最大的abs(Ai-Ai-1) {这里很关键,可以这样想:将上图看作一段段绳子,最长的那一段绳子一定有方法能够把其他都盖住(很抽象)},而abs(Ai-Ai-1)也要尽可能越小越好,但仍然需要最大,则以1为单位长度,则abs(Ai-Ai-1)则为从第i-1个折点到第i个折点的字符串长度。问题也就变成求解最长连续单调的序列的长度。

 #include<cstdio>
 #include<cstring>
 #include<algorithm>
 #include<iostream>
 #include<string>
 using namespace std;
 int main(){
     int T; scanf("%d",&T);
     string s;
     for (; T; T--){
         cin>>s; ,cnt=,ans=;
         ; i<len; i++) if (s[i]!='='){
             if (s[i]==s[las]) las=i,cnt++;
             ;
         }
         ans=max(cnt,ans);
         ans++;
         cout<<ans<<endl;
     }
     ;
 }

[codechef July Challenge 2017] Chef and Sign Sequences的更多相关文章

  1. CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries

    https://www.codechef.com/DEC17/problems/CHEFEXQ 题意: 位置i的数改为k 询问区间[1,i]内有多少个前缀的异或和为k 分块 sum[i][j] 表示第 ...

  2. CF&&CC百套计划2 CodeChef December Challenge 2017 Chef and Hamming Distance of arrays

    https://www.codechef.com/DEC17/problems/CHEFHAM #include<cstdio> #include<cstring> #incl ...

  3. CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And his Cake

    https://www.codechef.com/DEC17/problems/GIT01 #include<cstdio> #include<algorithm> using ...

  4. [codechef July Challenge 2017] Calculator

    CALC: 计算器题目描述大厨有一个计算器,计算器上有两个屏幕和两个按钮.初始时每个屏幕上显示的都是 0.每按一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量.每按一次第二 ...

  5. [codechef July Challenge 2017] IPC Trainers

    IPCTRAIN: 训练营教练题目描述本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练.训练营的日程安排有 M 天,每天最多上一节课.第 i 名教练在第 ...

  6. [codechef July Challenge 2017] Pishty and tree

    PSHTTR: Pishty 和城堡题目描述Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格的古堡和非常聪明的熊闻名全国.胡斯特的镇城之宝是就是这么一座古堡,历 ...

  7. codechef T2 Chef and Sign Sequences

    CHEFSIGN: 大厨与符号序列题目描述 大厨昨天捡到了一个奇怪的字符串 s,这是一个仅包含‘<’.‘=’和‘>’三种比较符号的字符串. 记字符串长度为 N,大厨想要在字符串的开头.结尾 ...

  8. CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds

    https://www.codechef.com/DEC17/problems/VK18 #include<cstdio> #include<iostream> #includ ...

  9. CF&&CC百套计划2 CodeChef December Challenge 2017 Penalty Shoot-out

    https://www.codechef.com/DEC17/problems/CPLAY #include<cstdio> #include<algorithm> using ...

随机推荐

  1. FZU 2150 Fire Game(点火游戏)

    FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description - 题目描述 ...

  2. windows 上让文件类型和程序关联的批处理程序。

    文件关联工具 地址: https://github.com/wll8/assoc-tool 本工具可以用来为你的便携程序添加文件关联,比如 nodepad2.exe . vscode 或其他图片处理程 ...

  3. 【NOIP 2015】Day2 T3 运输计划

    Problem Background 公元 \(2044\) 年,人类进入了宇宙纪元. Description 公元\(2044\) 年,人类进入了宇宙纪元. $L $国有 \(n\) 个星球,还有 ...

  4. Leetcode1 - A + B Problem - Easy

    Write a function that add two numbers A and B. Example Example 1: Input: a = 1, b = 2 Output: 3 Expl ...

  5. Educational Codeforces Round 23 F. MEX Queries 离散化+线段树

    F. MEX Queries time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  6. 四: scrapy爬虫框架

    5.爬虫系列之scrapy框架   一 scrapy框架简介 1 介绍 (1) 什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架 ...

  7. 常见字符集&乱码问题

    字符集 常用字符集分类 ASCII及其扩展字符集 作用:表语英语及西欧语言. 位数:ASCII是用7位表示的,能表示128个字符:其扩展使用8位表示,表示256个字符. 范围:ASCII从00到7F, ...

  8. vue面试

    1.一个比较全的vue面试题 http://www.bslxx.com/p/3187.html

  9. 拒绝采样 Rejection Sampling

    2018-12-09 16:40:30 一.使用Rand7()来生成Rand10() 问题描述: 问题求解: 这个问题字节跳动算法岗面试有问到类似的,有rand6,求rand8,我想了好久,最后给了一 ...

  10. python爬虫学习(三):使用re库爬取"淘宝商品",并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...