所以测试点 #8 到底是什么啊【求调】
查看原帖
所以测试点 #8 到底是什么啊【求调】
1072502
Zskioaert1106楼主2025/1/23 21:26

rt 总是 WA 在 #8 一个点,具体表现在应该将数字在后缀之后输出但本人程序总在后缀名前(特判后可过证明就是这个问题)。代码有关部分:

bool nump;
int fst_num=0;
string name="",g1="",g2;
cin>>g2;
for(int i=0,p=0;i<st.size();i++){
  if(st[i]=='.')p=1;
  else if(st[i]>='0'&&st[i]<='9'){
    nump=~p;
    for(i--;st[i+1]>='0'&&st[i+1]<='9';i++)(fst_num*=10)+=st[i+1]-'0';
  }
  else{
    if(p)g1+=st[i];
    else name+=st[i];
  }
}
for(n=0;cin>>ans[0][n]>>ans[1][n];n++){
  lst[n].i=n;
  for(int i=0,s1=0,p=1;i<ans[0][n].size();i++){
    char ap=ans[0][n][i];
    if(p==1&&!(ap>='0'&&ap<='9'||ap=='.'))s1++;
    else{
      if(p==1){
        ans[0][n].erase(0,s1);
        ans[0][n].insert(0,name);
        i=name.size()-1;
        p=0;
      }
      if(ap>='0'&&ap<='9'){
        (lst[n].data*=10)+=ap-'0';
      }
      else if(ap=='.')p=2;
      else{
        if(p==2){
          ans[0][n].erase(i);
          ans[0][n].append(g1);
          i=ans[0][n].size()-1;
        }
      }
    }
  }
  for(int i=0,s1=0,p=1;i<ans[1][n].size();i++){
    char ap=ans[1][n][i];
    if(p==1&&!(ap>='0'&&ap<='9'||ap=='.'))s1++;
    else{
      if(p==1){
        ans[1][n].erase(0,s1);
        ans[1][n].insert(0,name);
        i=name.size()-1;
        p=0;
      }
      if(ap>='0'&&ap<='9'){
        (lst[n].data*=10)+=ap-'0';
      }
      else if(ap=='.')p=2;
      else{
        if(p==2){
          ans[1][n].erase(i);
          ans[1][n].append(g2);
          i=ans[1][n].size()-1;
        }
      }
    }
  }
}
sort(lst,lst+n,cmp);
for(int i=0;i<n;i++){
  bool p=0;
  int k=lst[i].i;
  for(int j=0;j<ans[0][k].size();j++){
    if(ans[0][k][j]>='0'&&ans[0][k][j]<='9'){
      if(ans[0][k][j-1]<'0'||ans[0][k][j-1]>'9'){//将这个删了就能对 #8
        cout<<i+fst_num;
        p=1;
      }
    }
    else cout<<ans[0][k][j];
  }
  if(p)p=0;
  else cout<<i+fst_num;
  cout<<' ';
  for(int j=0;j<ans[1][k].size();j++){
    if(ans[1][k][j]>='0'&&ans[1][k][j]<='9'){
      if(ans[1][k][j-1]<'0'||ans[1][k][j-1]>'9'){//将这个删了就能对 #8
        cout<<i+fst_num;
        p=1;
      }
    }
    else cout<<ans[1][k][j];
  }
  if(!p)cout<<i+fst_num;
  cout<<'\n';
}
2025/1/23 21:26
加载中...