#31379: RE了欸...


jason096727@gmail.com (Jason Ho)

學校 : 高雄市苓雅區福東國民小學
編號 : 189939
來源 : [150.116.71.76]
最後登入時間 :
2023-07-15 21:32:51
b265. Q11286 - Conformity | From: [150.116.71.227] | 發表日期 : 2022-07-27 18:21


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        if (n==0){
            break;
        }
        string s[n];
        for (int i=0; i<n; i++){
            int num[5];
            for (int j=0; j<5; j++){
                cin >> num[j];
            }
            sort (num, num+5);
            for (int j=0; j<5; j++){
                s[i]+=(to_string(num[j]));
            }
        }
        int sum=0, b=0;
        for (int k=n; k>=1; k--){
            for (int l=0; l<n; l++){
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }
        cout << sum << '\n';
    }
    return 0;
}

 
#31415: Re: RE了欸...


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
b265. Q11286 - Conformity | From: [118.160.170.245] | 發表日期 : 2022-07-29 09:40

        for (int k=n; k>=1; k--){
            for (int l=0; l<n; l++){
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }


這裡感覺效率不高,可以先對s排序再計算

 
#31434: Re: RE了欸...


jason096727@gmail.com (Jason Ho)

學校 : 高雄市苓雅區福東國民小學
編號 : 189939
來源 : [150.116.71.76]
最後登入時間 :
2023-07-15 21:32:51
b265. Q11286 - Conformity | From: [150.116.71.227] | 發表日期 : 2022-07-31 00:46

        for (int k=n; k>=1; k--){
            for (int l=0; l
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }


這裡感覺效率不高,可以先對s排序再計算

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        if (n==0){
            break;
        }
        string s[n];
        for (int i=0; i<n; i++){
            int num[5];
            for (int j=0; j<5; j++){
                cin >> num[j];
            }
            sort (num, num+5);
            for (int j=0; j<5; j++){
                s[i]+=(to_string(num[j]));
            }
        }
        sort (s, s+n);
        int sum=0, b=0;
        for (int k=n; k>=1; k--){
            for (int l=0; l<n; l++){
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }
        cout << sum << '\n';
    }
    return 0;
}

第二個測資TLE了

 

 



 
#31467: Re: RE了欸...


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
b265. Q11286 - Conformity | From: [59.115.4.5] | 發表日期 : 2022-08-03 12:43

        for (int k=n; k>=1; k--){
            for (int l=0; l
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }


這裡感覺效率不高,可以先對s排序再計算

#include

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        if (n==0){
            break;
        }
        string s[n];
        for (int i=0; i
            int num[5];
            for (int j=0; j<5; j++){
                cin >> num[j];
            }
            sort (num, num+5);
            for (int j=0; j<5; j++){
                s[i]+=(to_string(num[j]));
            }
        }
        sort (s, s+n);
        int sum=0, b=0;
        for (int k=n; k>=1; k--){
            for (int l=0; l
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }
        cout << sum << '\n';
    }
    return 0;
}

第二個測資TLE了

 

 




排序好之後就能用其他方法來計算了。

用一個陣列儲存課程組合數量,迴圈從1開始,檢查s[i]是否等於s[i-1],相等數量加1,不相等數量就從1重新開始,把數量存到陣列的下一個位置

 
#31478: Re: RE了欸...


jason096727@gmail.com (Jason Ho)

學校 : 高雄市苓雅區福東國民小學
編號 : 189939
來源 : [150.116.71.76]
最後登入時間 :
2023-07-15 21:32:51
b265. Q11286 - Conformity | From: [150.116.71.227] | 發表日期 : 2022-08-03 19:09

        for (int k=n; k>=1; k--){
            for (int l=0; l
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }


這裡感覺效率不高,可以先對s排序再計算

#include

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        if (n==0){
            break;
        }
        string s[n];
        for (int i=0; i
            int num[5];
            for (int j=0; j<5; j++){
                cin >> num[j];
            }
            sort (num, num+5);
            for (int j=0; j<5; j++){
                s[i]+=(to_string(num[j]));
            }
        }
        sort (s, s+n);
        int sum=0, b=0;
        for (int k=n; k>=1; k--){
            for (int l=0; l
                if (k==count (s, s+n, s[l])){
                    sum+=k;
                    b=1;
                    s[l]='0';
                }
            }
            if (b==1){
                break;
            }
        }
        cout << sum << '\n';
    }
    return 0;
}

第二個測資TLE了

 

 




排序好之後就能用其他方法來計算了。

用一個陣列儲存課程組合數量,迴圈從1開始,檢查s[i]是否等於s[i-1],相等數量加1,不相等數量就從1重新開始,把數量存到陣列的下一個位置

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    while (cin >> n){
        if (n==0){
            break;
        }
        string s[n];
        for (int i=0; i<n; i++){
            int num[5];
            for (int j=0; j<5; j++){
                cin >> num[j];
            }
            sort (num, num+5);
            for (int j=0; j<5; j++){
                s[i]+=(to_string(num[j]));
            }
        }
        sort (s, s+n);
        int sum=1, output;
        vector<int>v;
        for (int k=1; k<=n; k++){
            if (s[k]==s[k-1]){
                sum++;
            }
            else {
                v.push_back(sum);
                sum=1;
            }
        }
        output=*max_element(v.begin(), v.end())*count(v.begin(), v.end(), *max_element(v.begin(), v.end()));
        cout << output << '\n';
    }
    return 0;
}

我不知道這和你的想法一不一樣,但AC了

謝謝🙏



 
ZeroJudge Forum