博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#594. 连线交叉
阅读量:5292 次
发布时间:2019-06-14

本文共 877 字,大约阅读时间需要 2 分钟。

【题目描述】:

现在有一个字符串,每个字母出现的次数均为偶数。接下来我们把第一次出现的字母a和第二次出现的a连一条线,第三次出现的和四次出现的字母a连一条线,第五次出现的和六次出现的字母a连一条线...对其他25个字母也做同样的操作。

现在我们想知道有多少对连线交叉。交叉的定义为一个连线的端点在另外一个连线的内部,另外一个端点在外部。

【输入描述】:

一行一个字符串。保证字符串均由小写字母组成,且每个字母出现次数为偶数次。

【输出描述】:

一个整数,表示答案。

【样例输入】:

abaazooabz

【样例输出】:

3

【样例说明】:

/

【时间限制、数据范围及描述】:

时间:2s 空间:256M

对于30% 的数据,字符串长度不超过50。

对于100% 的数据,字符串长度不超过100,000。

 

 

#include
#include
#include
#include
#include
#include
using namespace std;char s[100610];int kdl[36],ans,las[36];int main(){ scanf("%s",s+1); int n=strlen(s+1); for(int i=1;i<=n;i++){ int q=s[i]-'a'+1; kdl[q]++; kdl[q]%=2; if(kdl[q]==0){ for(int j=1;j<=26;j++){ if(las[j]>las[q]&&kdl[j]){ ans++; } } } las[q]=i; } printf("%d\n",ans); return 0;}

  

转载于:https://www.cnblogs.com/xiongchongwen/p/11601077.html

你可能感兴趣的文章
处理Mybatis返回的结果集为Map类型
查看>>
无法恢复master数据库。SQL Server 无法运行
查看>>
无法打开数据库‘Data’.恢复操作已将数据库标记为SUSPECT。
查看>>
活久现
查看>>
asp.net mvc中配置全局异常过滤器
查看>>
B/S神思SS628(100)身份证阅读器开发
查看>>
Do What you want
查看>>
IPv6 关于路由器配置静态IPv6路由的命令
查看>>
查看linux 用户登录信息及ip
查看>>
Linux系统测试端口连通性的方法
查看>>
联想think system sr550信息
查看>>
linux系统物理cpu信息查询
查看>>
shell 符号的定义(一)
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
Python学习笔记(三)——类型与变量
查看>>
比较表变量和临时表
查看>>
为什么判断UITextField判断为空不能用isEqualToString:@""
查看>>
Spring框架的事务管理的分类
查看>>
Mysql Join语法以及性能优化
查看>>