社区讨论

桶排序60分求助

P9868[NOIP2023] 词典参与者 2已保存回复 6

讨论操作

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

当前回复
6 条
当前快照
1 份
快照标识符
@m1yyxp9m
此快照首次捕获于
2024/10/07 20:08
去年
此快照最后确认于
2025/11/04 17:40
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

const int maxn = 3010;

string s[maxn];
int cnt[26];

int main(){
    freopen("dict4.in", "r", stdin);
    freopen("test.out", "w", stdout);
    int n, m;
    cin >> n >> m;
    string mins = "";
    for(int i = 0; i < 3000; i++) mins += "z";
    for(int i = 1; i <= n; i++){
        cin >> s[i];
        if(mins > s[i]) mins = s[i];
    }
    
    for(int i = 1; i <= n; i++){
        for(int j = 0; j < s[i].length(); j++){
            cnt[s[i][j]-'a']++;
        }
        string t = "";
        for(int j = 0; j < 26; j++){//桶排序
            while(cnt[j]){
                t += j+'a';
                cnt[j]--;
            }
        }
       // cout << t << " " << mins << "\n";
        if(t <= mins) cout << 1;//只要比最小的还小或者一样就成立
        else cout << 0;
    }
    return 0;
}

回复

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

正在加载回复...