【NOIP2007提高组】字符串展开
【题外话】这道题纯粹考验耐心,某些经常调程序调到摔键盘的人可以尝试
【题外话2】除了考耐心以外完全没有什么难点
【题外话3】也许会稍微恶心一点?
【题外话4】其实我是在别人军训的时候滚来更博客的简直233333
题目不贴了,NOIP2007原题什么的,然后就是关于某些小细节的处理,比如以‘-’开头啊,以‘-’结尾啊,还有‘--’啊,还有一种题目中提到的,‘-’两边分别是数字和字母,以及关于填充大写字母的时候数字不变什么的。
总体来说其实就是一道字符处理模拟题,稍微细心与耐心一点的都可以10minAC
我已经懒得吐槽自己的代码风格了。
#include <algorithm>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <string>
using namespace std;
ifstream fin("expand.in");
ofstream fout("expand.out");
string old,nw;
int p1=,p2=,p3=;
void zx(int wi);
void fx(int wi);
int main(void)
{
fin>>p1>>p2>>p3;
fin>>old;
for(int i=;i<old.size();i++)
{
if(old[i]=='-'&&i>=&&i<old.size()-)
{
if(old[i-]=='-'||old[i+]=='-')
{
nw+=old[i];
continue;
}
if(old[i-]>=old[i+])
{
nw+=old[i];
continue;
}
if((old[i-]>='a'&&old[i-]<='z')&&(old[i+]<'a'||old[i+]>'z'))
{
nw+=old[i];
continue;
}
if((old[i+]>='a'&&old[i+]<='z')&&(old[i-]<'a'||old[i-]>'z'))
{
nw+=old[i];
continue;
}
if(p3==)zx(i);
else fx(i);
}
else nw+=old[i];
}
fout<<nw;
return ;
}
void zx(int wi)
{
char ja;
for(int i=;i<=(old[wi+]-old[wi-])-;i++)
{
for(int j=;j<=p2;j++)
{
if(p1==)
{
ja=old[wi-]+i;
nw+=ja;
}
if(p1==&&old[wi+]>='a'&&old[wi+]<='z')
{
ja=old[wi-]+i;
ja-='a';
ja+='A';
nw+=ja;
}
if(p1==&&(old[wi+]<'a'||old[wi+]>'z'))
{
ja=old[wi-]+i;
nw+=ja;
}
if(p1==)
{
nw+="*";
}
}
}
return;
}
void fx(int wi)
{
char ja;
for(int i=;i<=(old[wi+]-old[wi-])-;i++)
{
for(int j=;j<=p2;j++)
{
if(p1==)
{
ja=old[wi+]-i;
nw+=ja;
}
if(p1==&&old[wi+]>='a'&&old[wi+]<='z')
{
ja=old[wi+]-i;
ja-='a';
ja+='A';
nw+=ja;
}
if(p1==&&(old[wi+]<'a'||old[wi+]>'z'))
{
ja=old[wi+]-i;
nw+=ja;
}
if(p1==)
{
nw+="*";
}
}
}
return;
}
【NOIP2007提高组】字符串展开的更多相关文章
- 洛谷P1098 [NOIP2007 提高组] 字符串的展开
题目链接:https://www.luogu.com.cn/problem/P1098 这个题出的真的很有质量,这个是我见过算是复杂的模拟题了,对付这种题,一丝都不能马虎,要想实现快捷而又简便的代码设 ...
- [NOIP2007] 提高组 洛谷P1098 字符串的展开
题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数 ...
- Vigenère密码 2012年NOIP全国联赛提高组(字符串模拟)
P1079 Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简 ...
- noip2007提高组题解
题外话:这一年的noip应该是最受大众关心的,以至于在百度上输入noip第三个关键字就是noip2007.主要是由于这篇文章:http://www.zhihu.com/question/2110727 ...
- Noip2007提高组总结
两道基础题,后两题比较麻烦,算法想出来后,还是一些细枝末节的问题,需要特别注意,感觉Noip的题目质量还是挺高的,每做一套,都感觉会有大大小小不同的收获,就要月考了,最后把07年的题目总结一下,算是这 ...
- luogu1097统计数字[noip2007提高组Day1T1]
题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出 ...
- 洛谷-统计数字-NOIP2007提高组复赛
题目描述 Description 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照 ...
- [NOIP2007] 提高组 洛谷P1097 统计数字
题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出 ...
- [NOIp2007提高组]矩阵取数游戏
OJ题号:洛谷1005 思路: 动态规划. 不难发现每行能够取得的最大值仅与当前行的数据有关,因此本题可以对每行的数据分别DP,最后求和. 设$f_{i,j}$表示左边取$i$个.右边取$j$个的最大 ...
随机推荐
- 从源码Build vim以及打包.deb
How to build vim 1. Build步骤 git clone --depth https://github.com/vim/vim.git # download the source c ...
- MAC安装Securecrt破解
MAC安装Securecrt破解(复制自:http://www.cnblogs.com/wulaoer/p/5538721.html) 在使用mac的时候有点不太习惯,主要原因是因为在用windo ...
- 《Intel汇编第5版》 Mov指令
一.Mov用于数据传送,用法如下: 二.当传送的数据和目标数据位宽不一致的时候,需要使用MOVZX.MOVSX扩展.MOVZX使用0填充高位,MOVSX使用源操作数最高位填充 下面是汇编代码演示: I ...
- X11 基本绘图
#include <X11/Xlib.h> int main() { Display * dsp = XOpenDisplay(NULL); int screenNum = Default ...
- 编写简单的爬虫从流行的Scrapy 框架讲起
到目前为止,我们已经完成了向站点添加搜索和过滤的功能,并且我们已经可以向站点添加一些分类和产品信息.下面我们将考虑当尝试删除实体信息时会发生什么事情. 首先,向站点添加一个名为Test的新分类,然后再 ...
- C# 常用接口学习 IEnumerable<T>
作者:乌龙哈里 时间:2015-10-24 平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> ...
- 基于UDP协议的网络编程
UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象. Java使用DatagramSock ...
- datatables.js 里面遇到的问题
1. 假如需要A行的data 和 B行的data 合并 在B行 data:name 在A行的 render:function(){ return data+full.name 此时返回的就是A+B ...
- Linux 相关的error处理
1 dpkg: error: duplicate file trigger interest for filename Notice the first and last lines of /var ...
- Docker 安装及问题处理
1 确定Linux版本 uname -r 2 升级系统(添加 APT 镜像源,添加使用 HTTPS 传输的软件包以及 CA 证书.) sudo apt-get update sudo apt-get ...