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. 【NOIP 2016】Day1 T2 天天爱跑步

    Problem Description 小 C 同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任 ...

  2. Hexo搭建(VPS)

    都说 hexo 是静态的 Blog,当时不明觉厉= =.后来终于知道了什么意思......所谓的静态,其实就是因为你不能改云端,而是依赖本地数据,然后使用命令将本地数据变成 web 数据再使用浏览器进 ...

  3. Qt5学习记录:QString与int值互相转换

    1)QString转int 直接调用toInt()函数 例: QString str("100"); int tmp = str.toInt(); 或者: bool ok; QSt ...

  4. React Native组件之BackAndroid !安卓手机的物理返回键的使用

    ok!在安卓手机上,当我们用物理返回键的时候,会以一次性的将程序退出来,这样是很不好的体验,所以就需要使用RN的物理返回键组件:BackAndroid,其原理也就是 分析路由,然后pop()这样! o ...

  5. React绑定事件动态化的实现方法

    一.什么是绑定事件 1.1 事件 我这里指的事件一般指的是React自带的触发事件,我这里先简单举例几个 onClick //鼠标点击 onMouseEnter //鼠标滑进 onMouseLeave ...

  6. Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland dfs

    D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes i ...

  7. Video 对象方法 canPlayType()

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别

    在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...

  9. Cordova+Vue快速搭建Hybrid App

    前言 最近项目迭代需要开发一个app,由于项目组其他系统前端技术栈都是Vue,所以自己在需求评估的时候就初步敲定了Cordova+Vue的前端架构,后来查阅了不少资料,也掉了不少坑,这里总结一下,也算 ...

  10. 接口测试——带token请求post接口(postman学习)

    今天遇到一个接口,是添加备注的,post类型,访问参数中需要带上token才行,我在header 中直接加token参数,接口总返回 403,请登陆 1.考虑yapi接口平台集成的是postman的接 ...