社区讨论

90分WA#8

P1098[NOIP 2007 提高组] 字符串的展开参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lpdj20e4
此快照首次捕获于
2023/11/25 12:04
2 年前
此快照最后确认于
2023/11/25 14:29
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3;
string s;
char c;
map < char , char > x;
map < char , char > d;
void csh()//可以理解为暴力打标
{
	x['a']='a';
	x['b']='b';
	x['c']='c';
	x['d']='d';
	x['e']='e';
	x['f']='f';
	x['g']='g';
	x['h']='e';
	x['i']='i';
	x['j']='j';
	x['k']='k';
	x['l']='l';
	x['m']='m';
	x['n']='n';
	x['o']='o';
	x['p']='p';
	x['q']='q';
	x['r']='r';
	x['s']='s';
	x['t']='t';
	x['u']='u';
	x['v']='v';
	x['w']='w';
	x['x']='x';
	x['y']='y';
	x['z']='z';
	
	x['A']='a';
	x['B']='b';
	x['C']='c';
	x['D']='d';
	x['E']='e';
	x['F']='f';
	x['G']='g';
	x['H']='h';
	x['I']='i';
	x['J']='j';
	x['K']='k';
	x['L']='l';
	x['M']='m';
	x['N']='n';
	x['O']='o';
	x['P']='p';
	x['Q']='q';
	x['R']='r';
	x['S']='s';
	x['T']='t';
	x['U']='u';
	x['V']='v';
	x['W']='w';
	x['X']='x';
	x['Y']='y';
	x['Z']='z';
	
	x['0']='0';
	x['1']='1';
	x['2']='2';
	x['3']='3';
	x['4']='4';
	x['5']='5';
	x['6']='6';
	x['7']='7';
	x['8']='8';
	x['9']='9';
	
	d['a']='A';
	d['b']='B';
	d['c']='C';
	d['d']='D';
	d['e']='E';
	d['f']='F';
	d['g']='G';
	d['h']='H';
	d['i']='I';
	d['j']='J';
	d['k']='K';
	d['l']='L';
	d['m']='M';
	d['n']='N';
	d['o']='O';
	d['p']='P';
	d['q']='Q';
	d['r']='R';
	d['s']='S';
	d['t']='T';
	d['u']='U';
	d['v']='V';
	d['w']='W';
	d['x']='X';
	d['y']='Y';
	d['z']='Z';
	
	d['A']='A';
	d['B']='B';
	d['C']='C';
	d['D']='D';
	d['E']='E';
	d['F']='F';
	d['G']='G';
	d['H']='H';
	d['I']='I';
	d['J']='J';
	d['K']='K';
	d['L']='L';
	d['M']='M';
	d['N']='N';
	d['O']='O';
	d['P']='P';
	d['Q']='Q';
	d['R']='R';
	d['S']='S';
	d['T']='T';
	d['U']='U';
	d['V']='V';
	d['W']='W';
	d['X']='X';
	d['Y']='Y';
	d['Z']='Z';
	
	d['0']='0';
	d['1']='1';
	d['2']='2';
	d['3']='3';
	d['4']='4';
	d['5']='5';
	d['6']='6';
	d['7']='7';
	d['8']='8';
	d['9']='9';
	return;
}
int main()//正片开始
{
	csh();
	cin>>p1>>p2>>p3;
	cin>>s;
	int l=s.size();
	for(int i=0;i<l;++i)
	{
		if(s[i]=='-'&&i==0)
		{
			cout<<"-";
		}
		else if(s[i]=='-')
		{
			if(s[i-1]+1==s[i+1])
			{
				continue;
			}
			else if((s[i-1]>='0'&&s[i+1]>='0'&&s[i-1]<='9'&&s[i+1]<='9')||(s[i-1]>='A'&&s[i+1]>='A'&&s[i-1]<='z'&&s[i+1]<='z'))
			{
				if(s[i-1]>=s[i+1])
				{
					cout<<"-";
					continue;
				}
				if(p3==2)
				{
					char u='0';
					if(p1==1)
					{
						c=x[s[i+1]]-1;
					}
					else if(p1==2)
					{
						c=d[s[i+1]]-1;
					}
					else
					{
						c=x[s[i+1]]-1;
						u='*';
					}
					while(c!=x[s[i-1]]&&c!=d[s[i-1]])
					{
						for(int k=0;k<p2;++k)
						{
							if(u=='*')
								cout<<u;
							else
								cout<<c;
						}
						c--;
					}
				}
				else
				{
					char u='0';
					if(p1==1)
					{
						c=x[s[i-1]]+1;
						u=c;
					}
					else if(p1==2)
					{
						c=d[s[i-1]]+1;
						u=c;
					}
					else
					{
						c=x[s[i-1]]+1;
						u='*';
					}
					while(c!=x[s[i+1]]&&c!=d[s[i+1]])
					{
						for(int k=0;k<p2;++k)
						{
							if(u=='*')
								cout<<u;
							else
								cout<<c;
						}
						c++;
					}
				}
			}
			else
			{
				cout<<"-";
			}
		}
		else
		{
			cout<<s[i];
		}
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...