题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510

时间限制:1s

空间限制:512MB

题目大意:

给定一个字符串,使用%[...]形式将字符串中出现的字符整理到最短和最小(ASCII范围为32~126),可使用的字符有 '-' '^'

题目解法:模拟整理正的和使用 '^' 取反的两个字符串,输出较短较小的那个(注意当所有字符都存在时,输出%[^!]最小)

样例:

代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <string>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#include <complex>
using namespace std;
typedef long long ll;
typedef long double db;
typedef pair<int,int> pii;
typedef vector<int> vi;
#define de(x) cout << #x << "=" << x << endl
#define rep(i,a,b) for(int i=a;i<(b);i++)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define pi acos(-1.0)
#define mem0(a) memset(a,0,sizeof(a))
#define memf(b) memset(b,false,sizeof(b))
#define ll long long
#define eps 1e-10
#define inf 1e17
#define maxn 101010
int main()
{
string str;
bool a[200];
int b[200];
//mem0(str);'
mem0(b);
int tot=0;
for(int i=32;i<=126;i++)
{
char z=(char)i;
if(z==' '||z>='0'&&z<='9'||z>='A'&&z<='Z'||z>='a'&&z<='z')
b[tot++]=i;
}
memf(a);
getline(cin,str);
//cout<<str;
int num=0,num1=0,num2=0,num3=0;
for(int i=0;i<str.size();i++)
{
a[(int)str[i]]=true;
// if(str[i]==' ')num=1;
// if(str[i]>='0'&&str[i]<='9')num1++;
// if(str[i]>='A'&&str[i]<='Z')num2++;
// if(str[i]>='a'&&str[i]<='z')num3++;
}
// for(int i=32;i<=126;i++)
// {
// printf("%c ",i);
// cout<<a[i]<<" ";
// }
int flag=0;
for(int i=0;i<tot;i++)
{
if(a[b[i]]==false)
{
flag=1;
break;
}
}
if(!flag)
{
cout<<"%[^!]"<<endl;
return 0;
}
string ans1="";
for(int i=0;i<tot;i++)
{
int t=i;
while(a[b[t]])
{
t++;
}
if(t-i>=3)
{
ans1+=(char)(b[i]);
ans1+="-";
ans1+=(char)(b[t-1]);
i=t-1;
}
else if(t-i==2)
{
ans1+=(char)(b[i]);
ans1+=(char)(b[i+1]);
i++;
}
else if(t-i==1)
ans1+=(char)b[i];
}
for(int i=0;i<ans1.size();i++)
{
if(ans1[i]=='a'&&ans1[i+1]=='-')
{
ans1[i]='[';
}
if(ans1[i]=='A'&&ans1[i+1]=='-')
{
ans1[i]=':';
}
if(ans1[i]=='0'&&ans1[i+1]=='-')
{
ans1[i]='!';
}
}
// for(int i=0;i<tot;i++)
// cout<<b[i]<<" ";
string ans2="^";
for(int i=0;i<tot;i++)
{
int t=i;
while(a[b[t]]==false&&t<tot)
{
t++;
}
if(t-i>=3)
{
ans2+=(char)(b[i]);
ans2+="-";
ans2+=(char)(b[t-1]);
i=t-1;
}
else if(t-i==2)
{
ans2+=(char)(b[i]);
ans2+=(char)(b[i+1]);
i++;
}
else if(t-i==1)
ans2+=(char)b[i];
}
for(int i=0;i<ans2.size();i++)
{
if(ans2[i]=='a'&&ans2[i+1]=='-')
{
ans2[i]='[';
}
if(ans2[i]=='A'&&ans2[i+1]=='-')
{
ans2[i]=':';
}
if(ans2[i]=='0'&&ans2[i+1]=='-')
{
ans2[i]='!';
}
}
if(ans1.length()==ans2.length())
{
if(ans1<ans2)
{
cout<<"%["<<ans1<<"]"<<endl;
}
else
cout<<"%["<<ans2<<"]"<<endl;
}
else
{
if(ans1.length()<ans2.length())
cout<<"%["<<ans1<<"]"<<endl;
else cout<<"%["<<ans2<<"]"<<endl;
}
return 0;
}

2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest Problem F. Format的更多相关文章

  1. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem F. Judging Time Prediction 优先队列

    Problem F. Judging Time Prediction 题目连接: http://www.codeforces.com/gym/100253 Description It is not ...

  2. ACM ICPC 2016–2017, NEERC, Northern Subregional Contest Problem J. Java2016

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个数字c 用 " ...

  3. 2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest Problem I. Integral Polygons

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个凸多边形,有一种连接两个 ...

  4. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题

    Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...

  5. 2018-2019 ICPC, NEERC, Southern Subregional Contest

    目录 2018-2019 ICPC, NEERC, Southern Subregional Contest (Codeforces 1070) A.Find a Number(BFS) C.Clou ...

  6. Codeforces 2018-2019 ICPC, NEERC, Southern Subregional Contest

    2018-2019 ICPC, NEERC, Southern Subregional Contest 闲谈: 被操哥和男神带飞的一场ACM,第一把做了这么多题,荣幸成为7题队,虽然比赛的时候频频出锅 ...

  7. 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D】---暑假三校训练

    2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D Problem D. Distribution in Metagonia Input ...

  8. 模拟赛小结:2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest

    2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest 2019年10月11日 15:35-20:35(Solved 8,Penalty 675 ...

  9. 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest (9/12)

    $$2015-2016\ ACM-ICPC,\ NEERC,\ Northern\ Subregional\ Contest$$ \(A.Alex\ Origami\ Squares\) 签到 //# ...

随机推荐

  1. mongodb的docker化安装

    查询mongo镜像 docker search mongo 拉取镜像(拉取STARS最多的那个就可以了) docker pull mongo tips:如果拉取不成功,多pull几次就可以了. 使用自 ...

  2. 全局变量和局部变量(global关键字)

    1.定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾. 2.函数内定义的变量就是局部变量,它的作用域为函数定义范围内. 3.函数之间存在作用域互不影响. 4.函数内访问全局变量需要 gl ...

  3. python3内置函数大全

    由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码:        https://github. ...

  4. 浅谈style.height、clientHeight、offsetHeight、scrollHeight

    先分别介绍以下,以下资料来自MDN HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数. Element.clie ...

  5. 20155213 实验一《Java开发环境的熟悉》实验报告

    20155213 实验一<Java开发环境的熟悉>实验报告 一. 实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 输入cd Code进入Code文件夹里 ...

  6. 20155310 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告

    20155310 <JAVA程序设计>实验二(JAVA面向对象程序设计)实验报告 实验内容 •初步掌握单元测试和TDD •理解并掌握面向对象三要素:封装.继承.多态 •初步掌握UML建模 ...

  7. centos7安装cacti

    参考博客地址:https://blog.csdn.net/kenn_lee/article/details/80565385 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络 ...

  8. html模板 练习(仿照抽屉网)

    1.页面布局 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  9. Retinex图像增强和暗通道去雾的关系及其在hdr色调恢复上的应用

    很多人都认为retinex和暗通道去雾是八杆子都打不着的增强算法.的确,二者的理论.计算方法都完全迥异,本人直接从二者的公式入手来简单说明一下,有些部分全凭臆想,不对之处大家一起讨论. 首先,为描述方 ...

  10. dp合集 广场铺砖问题&&硬木地板

    dp合集 广场铺砖问题&&硬木地板 很经典了吧... 前排:思想来自yali朱全民dalao的ppt百度文库免费下载 后排:STO朱全民OTZ 广场铺砖问题 有一个 W 行 H 列的广 ...