【AtCoder - 5659 】>< (思维题)
><
直接写中文了
Problem Statement
给定的是长度为N-1的字符串S. S中的每个字符都是<或>。
当对所有i(1≤i≤N-1)都满足以下条件时,N个非负整数a1,a2,[cdots],aN的序列被认为是满足的
- 如果Si = <:ai <ai + 1
- 如果Si =>:ai> ai + 1
找出N个非负整数的良好序列的元素的最小可能和。
约束条件
- 2≤N≤5×105
- S是长度为N-1的字符串,由<和>组成
Input
输入来自标准输入,格式如下:
S
Output
找出N个非负整数的良好序列的元素的最小可能和。
Sample Input 1
<>>
Sample Output 1
3
a =(0,2,1,0)是一个好序列,其总和为3。没有一个好序列,其总和小于3
Sample Input 2
<>>><<><<<<<>>><
Sample Output 2
28
题目链接:
https://vjudge.net/problem/AtCoder-5659
不难发现找到"<>"这个即可
"<>"左右两边的个数设为l,r;大的一个为maxn,小的一个为minn ,则两边的和为(maxn+1)/2*maxn+(minn+1)/2*minn-minn
"><"左右两边的个数设为l,r;两边的和为(l+1)/2*l+(r+1)/2*r
所以只要遍历一遍s即可,碰到"<>"另外讨论,其他情况假设有n个"<"或者">",则ans+=(n+1)/2*n;
AC代码
#include <bits/stdc++.h>
#define Mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x, y) memset(x, y, sizeof(x))
#define Maxn 1000000000000 + 10
using namespace std;
string s;
ll len;
ll ans;
void solve(ll start, ll sum, ll flag) //搜索起始位置,上一次共有sum个连续的<或者>,上一次有没有出现<>
{
ll i;
ll f = ;
ll cnt = ; //计数
char r = s[start];
for (i = start + ; i < len; i++)
{
if (s[i] == r)
cnt++;
else
{
if (r == '<' && s[i] == '>') //存在<>,f=1
f = ;
break;
}
}
if (flag == )
{
if (cnt > sum)
{
if (cnt > )
{
ans += (cnt + ) * cnt / ;
ans -= sum;
}
else
{
ans += ;
ans -= sum;
}
}
else
{
if (cnt > )
{
ans += (cnt + ) * cnt / ;
ans -= cnt;
}
else
{
ans += ;
ans -= cnt;
}
}
if (i >= len)//遍历完成
return;
return solve(i, cnt, f);
}
else
{
if (cnt > )
ans += (cnt + ) * cnt / ;
else
{
ans += ;
}
if (i >= len)//遍历完成
return;
return solve(i, cnt, f);
}
}
int main()
{
ans = ;
cin >> s;
len = s.size();
solve(, , );
cout << ans << endl;
}
【AtCoder - 5659 】>< (思维题)的更多相关文章
- Atcoder Grand Contest 001E - BBQ Hard(组合意义转化,思维题)
Atcoder 题面传送门 & 洛谷题面传送门 Yet another 思维题-- 注意到此题 \(n\) 数据范围很大,但是 \(a_i,b_i\) 数据范围很小,这能给我们什么启发呢? 观 ...
- Atcoder Grand Contest 013 E - Placing Squares(组合意义转化+矩阵快速幂/代数推导,思维题)
Atcoder 题面传送门 & 洛谷题面传送门 这是一道难度 Cu 的 AGC E,碰到这种思维题我只能说:not for me,thx 然鹅似乎 ycx 把题看错了? 首先这个平方与乘法比较 ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- cf A. Inna and Pink Pony(思维题)
题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
- 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
- C. Nice Garland Codeforces Round #535 (Div. 3) 思维题
C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
- UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...
- HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)
HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...
随机推荐
- 夯实Java基础系列16:一文读懂Java IO流和常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- redis查找大key
redis中查找出比较大的key 下面直接上代码 (请在测试机上测试) #!/usr/bin/env python import sys import redis def check_big_key( ...
- Java 爬虫遇上数据异步加载,试试这两种办法!
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...
- k8s中负载均衡器【ingress-nginx】部署
在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案: Node ...
- Asp.Net Core中Session使用
web程序中,Session是一个无法避开的点. 最近新开项目,打算从开始搭建一个基础的架子,后台用户登录成功后,需要保存session. 新建的asp.net core的模板已经包含了Session ...
- python编程基础之二十七
列表生成式:[exp for iter_var in iterable] 同样也会有字典生成式,集合生成式,没有元组生成式,元组生成式的语法被占用了 字典生成式,集合生成式,就是外面那个括号换成{} ...
- 【NOIP2009】道路游戏
Description 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 nn 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 n ...
- Springboot2.x + ShardingSphere 实现分库分表
之前一篇文章中我们讲了基于Mysql8的读写分离(文末有链接),这次来说说分库分表的实现过程. 概念解析 垂直分片 按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用. 在拆分之前 ...
- 并发新构件之CyclicBarrier
CyclicBarrier:叫做循环栅栏,名字挺好听的.JDK描述:允许一组线程全部等待彼此达到共同屏障点的同步辅助. 循环阻塞在涉及固定大小的线程方的程序中很有用,这些线程必须偶尔等待彼此. 屏障被 ...
- Java集合框架,你了解多少?相信你看了这篇汇总一目了然!
相信大多数的程序员都知道,Dictionary.Vertor.Stack和Properties这些类被用来存储和操作对象组.但是他们缺少一个核心的主题的. 集合框架设计成要满足以下的几个目标 第一条: ...