社区讨论

70pts MLE on #6#8#9求条

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhizc5ax
此快照首次捕获于
2025/11/03 18:10
4 个月前
此快照最后确认于
2025/11/03 18:10
4 个月前
查看原帖
从WA+MLE 30pts改到了MLE 70pts 求dalao调(可怜
CPP
#include <bits/stdc++.h>
using namespace std;
bool is_num(char a) {
	return a>='0'&&a<='9';
}
bool is_ltt(char a) {
	return a>='a'&&a<='z';
}
bool tlx(char a,char b) {
	if (is_num(a)&&is_num(b)) return true;
	if (is_ltt(a)&&is_ltt(b)) return true;
	else return false;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	int p1,p2,p3;
	cin>>p1>>p2>>p3;
	string s,ans="";
	cin>>s;
	for (int i=0;i<s.size();i++) {
		if (s[i]!='-') ans+=s[i];
		else if (s[i]=='-') {
			char c1=s[i-1],c2=s[i+1];
			if (tlx(c1,c2)&&c1>=c2) {
				ans+='-'; continue;
			}
			else if (tlx(c1,c2)&&c1==c2-1) {
				ans=ans+c2; i++; continue;
			}
			else if (!tlx(c1,c2)) {
				ans=ans+'-'+c2; i++; continue;
			}
			if (p3==1) {
				for (int j=c1+1;j<c2;j++) {
					for (int k=1;k<=p2;k++) {
						if (p1==1) {
							ans+=(char)(j);
						}else if (p1==2) {
							ans+=(char)(j-32);
						}else if (p1==3) {
							ans+='*';
						}
					}
				}
			}else if (p3==2) {
				for (int j=c2-1;j>c1;j++) {
					for (int k=1;k<=p2;k++) {
						if (p1==1) {
							ans+=(char)(j);
						}else if (p1==2) {
							ans+=(char)(j-32);
						}else if (p1==3) {
							ans+='*';
						}
					}
				}
			}
		}
	}
	cout<<ans;
	return 0;
}

回复

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

正在加载回复...