#49076: vector 0.6s code比較亂見諒


king960129@gmail.com (吳瑞宸)

學校 : 新北市立新莊高級中學
編號 : 216021
來源 : [140.138.224.147]
最後登入時間 :
2025-10-02 02:07:19

#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#include <bits/stdc++.h>
using namespace std;

int main(){
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(0);

    int N;
    cin>>N;
    cin.ignore();
    cin.ignore();
    while(N--){

        vector<string>li;

        string A;
        while(getline(cin,A)){
            if(A.empty()){break;}
            else{li.push_back(A);}
        }
        sort(li.begin(),li.end());

        if(li.size()==1){
            cout<<li[0]<<" "<<fixed<<setprecision(4)<<(((double)1/(double)li.size())*100)<<"\n";
        }

        int same=1;
        for(int i=0;i<li.size()-1;i++){
            if(same==1){
                cout<<li[i]<<" ";
            }
            if(li[i]==li[i+1]){
                same++;
            }else{
                cout<<fixed<<setprecision(4)<<(((double)same/(double)li.size())*100)<<"\n";
                same=1;
            }
            if(i==li.size()-2){
                if(same==1){
                    cout<<li[i+1]<<" "<<fixed<<setprecision(4)<<(((double)same/(double)li.size())*100)<<"\n";
                }else{
                    cout<<fixed<<setprecision(4)<<((((double)same)/(double)li.size())*100)<<"\n";
                }
            }
        }
        cout<<"\n";
    }
    return 0;
}

#49416: Re: vector 0.6s code比較亂見諒


kenny980721.tu@gmail.com (有事直接私)

學校 : 國立中興大學附屬高級中學
編號 : 290039
來源 : [220.134.29.87]
最後登入時間 :
2025-09-13 17:26:11

    int N;
    cin>>N;
    cin.ignore();
    cin.ignore();

為什麼要cin.ignore()兩次?

#50862: Re: vector 0.6s code比較亂見諒


king960129@gmail.com (吳瑞宸)

學校 : 新北市立新莊高級中學
編號 : 216021
來源 : [140.138.224.147]
最後登入時間 :
2025-10-02 02:07:19

    int N;
    cin>>N;
    cin.ignore();
    cin.ignore();

為什麼要cin.ignore()兩次?

第一個用來清cin>>N的緩衝區 具體看下面那個

https://justimchung.blogspot.com/2016/11/c-cin-getline.html

第二個是處理題目那個多餘的換行