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. 【译】第5节---Code First约定

    原文:http://www.entityframeworktutorial.net/code-first/code-first-conventions.aspx 我们在上一节中已经看到了EF Code ...

  2. C语言 深入学习

    浮点数: x = Mx*2^Ex为一个规格化浮点数,Mx为x的尾数,Ex为x的阶码. 1e-6:表示1 * 10 ^ (-6). 编译时执行: sizeof是运算符(而非函数),在编译时执行,不会导致 ...

  3. Oracle DBHelper 第二版

    public static class OracleDBHelper { public static OracleCommand cmd = null; public static OracleCon ...

  4. Vue--获取数据

    一.Jsonp抓取数据 用 npm 安装 jsonp npm install jsonp 创建 jsonp.js import originJsonp from 'jsonp' export defa ...

  5. 传的参数是url地址时需要特殊处理

    <a href="javascript:;" data-url="{$vo.url}" class="info_generate_qr" ...

  6. ASP.net 网站开发知识点总结

    一.常用技术概括及介绍 1. SQL server:处理数据库的设计 2. asp.net  3. html            :前端网页 4. css :网页的布局设计 5. JavaScrip ...

  7. DAY1 计算机组成和操作系统

    一.编程与编程目的 1.编程语言的定义 编程语言是人与计算机之间沟通的介质 2.什么是编程 编程就是程序员通过编程语言让计算机实现所想做的事 3.编程的目的 解放人力,让计算机按照人的逻辑思维进行工作 ...

  8. MySQL学习(四)

    1 MySQL日期和时间类型 创建一个包含DATE类型的表 mysql> create table test3( -> star varchar(20) not null default ...

  9. Mac python 环境配置

    问题:mac 只带了python2.7,要想使用高版本的Python,如python3.x,只能再次安装了,这样就会遇到 两个版本的切换问题了 如下图 : 执行 which python 如下图,查看 ...

  10. Feign二: @FeignClient 接口调用

    在项目的启动文件加入:@EnableFeignClients 注解, import org.springframework.boot.SpringApplication; import org.spr ...