【模拟】Gym - 101190A - Abbreviation
让你把所有的“连续的仅有首字母大写的”词组用缩写表示,并且在后面用括号注明原词组。
#include<cstdio>
#include<cstring>
using namespace std;
char s[130];
bool iszimu(char c){
return ((c>='A' && c<='Z') || (c>='a' && c<='z'));
}
bool isbig(char c){
return (c>='A' && c<='Z');
}
bool issmall(char c){
return (c>='a' && c<='z');
}
bool check(int l,int r){
if(r-l+1==1){
return 0;
}
if(!isbig(s[l])){
return 0;
}
for(int i=l+1;i<=r;++i){
if(!issmall(s[i])){
return 0;
}
}
return 1;
}
void print(int l,int r){
for(int i=l;i<=r;++i){
putchar(s[i]);
}
}
void prin2(int l,int r){
for(int i=l;i<=r;++i){
if(isbig(s[i])){
putchar(s[i]);
}
}
printf(" (");
for(int i=l;i<=r;++i){
putchar(s[i]);
}
putchar(')');
}
int main(){
freopen("abbreviation.in","r",stdin);
freopen("abbreviation.out","w",stdout);
while(gets(s)){
int n=strlen(s),sta,cnt=0,end=-1,Sta,End=-1;
for(int i=0;i<n;++i){
if((i==0 || !iszimu(s[i-1])) && iszimu(s[i])){
sta=i;
}
if((i==n-1 || !iszimu(s[i+1])) && iszimu(s[i])){
if(check(sta,i) && (cnt==0 || (end==sta-2 && s[end+1]==' '))){
++cnt;
if(cnt==1){
Sta=sta;
End=end;
}
}
else if(check(sta,i)){
if(cnt>=2){
print(End+1,Sta-1);
prin2(Sta,end);
}
else if(cnt==1){
print(End+1,Sta-1);
print(Sta,end);
}
cnt=1;
Sta=sta;
End=end;
}
else{
if(cnt>=2){
print(End+1,Sta-1);
prin2(Sta,end);
}
else if(cnt==1){
print(End+1,Sta-1);
print(Sta,end);
}
print(end+1,i);
cnt=0;
}
end=i;
}
}
if(cnt>=2){
print(End+1,Sta-1);
prin2(Sta,end);
}
else if(cnt==1){
print(End+1,Sta-1);
print(Sta,end);
}
print(end+1,n-1);
puts("");
}
return 0;
}
【模拟】Gym - 101190A - Abbreviation的更多相关文章
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
题目链接: http://codeforces.com/gym/100825 题目大意: 栅栏密码.给定N(N<=10),密钥为一个N*N的矩阵,'.'代表空格可以看到,'X'代表被遮挡,还有密 ...
- 【模拟】NEERC15 G Generators(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: n个序列.每个序列有4个值x,a,b,c,之后按照x=(a*x+b)%c扩展无穷项. 求每个序列各取一个数之后 ...
- 【模拟】NEERC15 J Jump(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 系统里生成一个字符串C,一开始告诉你字符串的长度N(偶数).接着你需要在n+500次内猜出这个字符串是什么. ...
- 【模拟】NEERC15 E Easy Problemset (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: N个人,每个人有pi个物品,每个物品价值为0~49.每次从1~n顺序选当前这个人的物品,如果这个物品的价值&g ...
- 【模拟】NEERC15 A Adjustment Office (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 一个N*N的矩阵A,Ai,j=i+j,Q次操作,每次分两种,R r取出第r行还未被取的所有数,并输出和.C c ...
- 【模拟】BAPC2014 G Growling Gears (Codeforces GYM 100526)
题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...
- Gym 100952C&&2015 HIAST Collegiate Programming Contest C. Palindrome Again !!【字符串,模拟】
C. Palindrome Again !! time limit per test:1 second memory limit per test:64 megabytes input:standar ...
- Gym 100952B&&2015 HIAST Collegiate Programming Contest B. New Job【模拟】
B. New Job time limit per test:1 second memory limit per test:64 megabytes input:standard input outp ...
- Gym 100646 Problem C: LCR 模拟题
Problem C: LCR 题目连接: http://codeforces.com/gym/100646/attachments Description LCR is a simple game f ...
随机推荐
- HDU 1114 Piggy-Bank (dp)
题目链接 Problem Description Before ACM can do anything, a budget must be prepared and the necessary fin ...
- ubuntu 玩转 nodejs
安装nginx 首先添加nginx_signing.key(必须,否则出错) $ wget http://nginx.org/keys/nginx_signing.key $ sudo apt-key ...
- arch中yaourt的安装和使用
yaourt-Yet AnOther User Repository Tool Yaourt是archlinux方便使用的关键部件之一,但没有被整合到系统安装中的工具.建议在装完系统重启之后,更新完p ...
- 基于ansj_seg和nlp-lang的简单nlp工具类
1.首先在pom中引入ansj_seg和nlp-lang的依赖包, ansj_seg包的作用: 这是一个基于n-Gram+CRF+HMM的中文分词的java实现: 分词速度达到每秒钟大约200万字左右 ...
- python自动开发之第二十五天
一.组合搜索 参考: http://www.cnblogs.com/ccorz/p/5985205.html 二.JSONP 1.在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的,但 ...
- C++学习之路(八):关于C++提供的强制类型转换
C语言中提供了旧式的强制类型转换方法.比如: int a =1; char *p = (char *)&a; 上述将a的地址单元强制转换为char类型的指针.这里暂且不说上述转换结果是否合理 ...
- 0x3F3F3F3F——ACM中的无穷大常量
在算法竞赛中,我们常常需要用到设置一个常量用来代表“无穷大”. 比如对于int类型的数,有的人会采用INT_MAX,即0x7fffffff作为无穷大.但是以INT_MAX为无穷大常常面临一个问题,即加 ...
- C中级 消息队列设计
引言 - 补充好开始 消息队列在游戏服务器层应用非常广泛. 应用于各种耗时的IO操作业务上.消息队列可以简单理解为 [消息队列 = 队列 + 线程安全]本文参照思路如下, 最后献上一个大神们斗法的场 ...
- linux命令(43):cal命令
cal命令可以用来显示公历(阳历)日历.公历是现在国际通用的历法,又称格列历,通称阳历.“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”. 1.命令格式: cal ...
- 修改VNCSERVER 默认的分辨率的方法
vi /usr/bin/vncserver /1024 找到默认的1024*768修改为 :1680*1050 reboot 重启