社区讨论

0分,样例能过,求调

B4069[GESP202412 四级] 字符排序参与者 2已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mhj8yrir
此快照首次捕获于
2025/11/03 22:40
4 个月前
此快照最后确认于
2025/11/03 22:40
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

string s[105];

int main(){
    int t;
    cin>>t;
    for(int i=1;i<=t;i++){
        int n;
        cin>>n;
        string wh;
        wh=' '+wh;
        /*我加空格是把整个字符串往后挪一个,循环好写(自认为)*/
        for(int j=1;j<=n;j++){
            cin>>s[j];
            wh=wh+s[j];/*拼成整个字符串*/
        }
        sort(wh.begin()+1,wh.end());
        for(int j=1;j<=n;j++){
            for(int k=1;k<=wh.size()-s[j].size()+1;k++)
    /*1<=k<=wh的末s[j]的长的位置
eg:aabbc̥c 其s[3]="cc"(.size=2)循环到终止到加着重号的位(第一个c)
    */
        {
                string tmp=wh.substr(k,s[j].size());
                if(s[j]==tmp){
                    wh.erase(k,s[j].size());
                    /*找到一个删一个*/
                    break;
                }
            }
        }
        if(wh.size()-1==0){ //减一弥补空格的占位
            cout<<1<<endl;
        }
        else cout<<0<<endl;
    }
    return 0;
}
提交记录https://www.luogu.com.cn/record/237019729
应该这方法很麻烦,但实在想不出什么好法子了,也幸亏这题n,k都比较小,再大点直接tle
这不明天考四级吗(25.9.27),试机环境满分,luogu这就全错,奇了

回复

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

正在加载回复...