头像

orzorz


访客:4402

离线:3小时前


活动打卡代码 AcWing 1563. Kuchiguse

orzorz
3天前
#include<iostream>
#include<string>
using namespace std;

int main(){
    int n;
    cin>>n;
    string a,b;
    getline(cin,a);
    getline(cin,a);
    getline(cin,b);
    string suffix="";
    for(int i=a.size()-1,j=b.size()-1;i>=0&&j>=0;i--,j--){
        if(a[i]=='\n'||b[j]=='\n') continue;
        if(a[i]==b[j]){
            suffix=a[i]+suffix;
        }else{
            break;
        }
    }
    bool suc=true;
    //每次把新的字符串的后缀同已经得到的suffix后缀进行比较
    for(int i=3;i<=n;i++){
        string s;
        getline(cin,s);
        string temp="";
        for(int k=s.size()-1,j=suffix.size()-1;k>=0&&j>=0;k--,j--){
            if(s[k]=='\n'||suffix[j]=='\n') continue;
            if(s[k]==suffix[j]){
                temp=s[k]+temp;
            }else{
                break;
            }
        }
        suffix=temp;
       // if(suffix==""||s.find(suffix)==string::npos) suc=false; 
    }
    if(suffix=="") suc=false;
    if(suc) cout<<suffix;
    else puts("nai");
    return 0;
}


活动打卡代码 AcWing 1559. 科学计数法

orzorz
3天前
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main(){
    string s;
    cin>>s;
    int e=s.find('E');
    string num=s.substr(0,e);
    int mi=stoi(s.substr(e+1));
    //  cout<<mi<<endl;
    bool sign=false;

    if(num[0]=='+') sign=true;



    num=num.substr(1);
    string lin=num;
    int fac=num.substr(2).size();
    num=num.substr(0,1)+num.substr(2);



    if(mi>0){
        if(fac<mi)
            num+=string(mi-fac,'0');
        else if(fac>mi) num=num.substr(0,mi+1)+'.'+num.substr(mi+1);
    } 
    else if(mi<0) num="0."+string(abs(mi)-1,'0')+num;
    else if(mi==0) num=lin;

    if(!sign) cout<<"-";
    cout<<num;
    return 0;
}


活动打卡代码 AcWing 1546. 它们是否相等

orzorz
3天前
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

string toans(string s,int n){
    int k=s.find('.');//找到小数点的位置
    if(k==-1) s+='.',k=s.find('.');//如果数字没有小数点则在末尾加上一个小数点
    s=s.substr(0,k)+s.substr(k+1);

    //去除前导0
    while(s.size()&&s[0]=='0') s.erase(0,1),k--;//每去掉一个0就少一位
    if(!s.size()) k=0;//如果s的长度等于0,那么k=0
    //截取n位有效数字
    s=s.substr(0,n);
    //如果剩下数字不足n位要在末尾补0
    s+=string(n-s.size(),'0');
    s="0."+s+"*10^"+to_string(k);
    return s;
}

int main(){
    int n;
    string a,b;
    cin>>n>>a>>b;

    a=toans(a,n);
    b=toans(b,n);

    if(a==b) cout<<"YES "<<a;
    else cout<<"NO "<<a<<" "<<b;

    return 0;
}


活动打卡代码 AcWing 1540. 主导颜色

orzorz
6天前
#include<iostream>
#include<map>
using namespace std;
map<int,int> mmp;
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int x;
            scanf("%d",&x);
            mmp[x]++;
        }
    }

    for(auto t:mmp){
        if(t.second>n*m/2) printf("%d",t.first);
    }
    return 0;
}


活动打卡代码 AcWing 1531. 课程学生列表

orzorz
6天前
#include<iostream>
#include<map>
#include<string>
#include<set>
#include<vector>
#include<algorithm>

using namespace std;

map<int,vector<string>> mmp;

int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        char s[5];
        int m;
        scanf("%s%d",s,&m);
        string name(s);
        while(m--){
            int cid;
            scanf("%d",&cid);
            mmp[cid].push_back(name);
        }
    }

    for(int i=1;i<=k;i++){
        printf("%d ",i);
        if(mmp.count(i)){
            printf("%d\n",mmp[i].size());
            sort(mmp[i].begin(),mmp[i].end());
            for(auto t:mmp[i]){
                printf("%s\n",t.c_str());
            }
        }else puts("0");
    }

    return 0;
}


活动打卡代码 AcWing 1526. 洗牌机

orzorz
7天前
#include<iostream>
#include<vector>
#include<string>
using namespace std;
const int N = 64;
vector<int> p2p;
int main(){
    int k,c,cnt=0;
    cin>>k;
    for(int i=0;i<54;i++){
        int x;
        cin>>x;
        p2p.push_back(x);   
    } 
    vector<string> res;
    string att[] = {"S","H","C","D"};
    string dig[] = {"1","2","3","4","5","6","7","8","9","10","11","12","13"};
    for(int i=0;i<4;i++){
        for(int j = 0;j <13;j++){
            string s="";
            s+=att[i]+dig[j];
            res.push_back(s);
        }
    }
    res.push_back("J1");res.push_back("J2");
    vector<string> cur(54);
    while(k--){
        for(int i = 0;i<p2p.size();i++){
            cur[p2p[i]-1] = res[i];
        }
        res=cur;
    }
    for(int i=0;i<res.size();i++){
        if(i) cout<<" ";
        cout<<res[i];
    } 
    return 0;
}


活动打卡代码 AcWing 1525. 独一无二

orzorz
7天前
#include<iostream>
#include<algorithm>
using namespace std;

const int N=1e4+10;
struct Lot{
    int seq;
    int x;
    int times=0;
}lot[N];

bool cmp(Lot &l1,Lot &l2){
    return l1.seq<l2.seq;
}

int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        int x;
        scanf("%d",&x);
        lot[x].x=x;
        lot[x].times++;
        lot[x].seq=i;
    }
    sort(lot,lot+N,cmp);
    bool isprint=false;
    for(int i=0;i<N;i++){
        if(lot[i].times==1){
            cout<<lot[i].x;
            isprint=true;
            break;
        }
    }
    if(!isprint) puts("None");
    return 0;
}


活动打卡代码 AcWing 1486. 排队等候

orzorz
7天前
#include<iostream>
#include<queue>
#include<algorithm>
#include<map>

using namespace std;

const int N = 30;
int n,m,k,Q;
int fin[N];//每个窗口服务完当前队列的时间
map<int,int> res;//顾客,完成时间
queue<int> q[N];//每个队列队头的人完成的时间

int main(){
    cin>>n>>m>>k>>Q;
    for(int i=1;i<=k;i++){
        int c;
        cin>>c;
        int t=0;
        for(int j=0;j<n;j++){
            if(i<=n*m){//顾客在黄线内
                if(q[t].size()>q[j].size()) t=j;                
            }else{//顾客在黄线外
                if(q[t].front()>q[j].front()) t=j;
            }
        }
        fin[t]+=c;
        if(i>n*m) q[t].pop();
        q[t].push(fin[t]);
        //这里减c是因为五点前开始被服务的顾客可以被服务,
        //而不是五点前可以完成服务的顾客才可以被服务
        if(fin[t]-c<540) res[i]=fin[t];
    }

    for(int i=0;i<Q;i++){
        int c;
        cin>>c;
        if(res.count(c)) printf("%02d:%02d\n",res[c]/60+8,res[c]%60);
        else puts("Sorry");
    }

    return 0;
}


活动打卡代码 AcWing 1515. U 形 Hello World

orzorz
7天前
#include<iostream>
#include<string>
using namespace std;

int main(){
    string s;
    cin>>s;
    int n=s.size()+2;
    int n2=(n+1)/3;
    while((n-n2)%2){
        n2++;
    }
    int n1=(n-n2)/2;
    int i,k;
    for(i=0,k=n-3;i<n1-1;i++,k--){
        cout<<s[i];
        for(int j=0;j<(n2-2);j++) cout<<" ";
        cout<<s[k]<<endl;
    }
    for(;i<=k;i++) cout<<s[i];
    return 0;
}


活动打卡代码 AcWing 1483. 世界杯投注

orzorz
7天前
#include<iostream>

using namespace std;

char odd[]={'W','T','L'};

int main(){
    double max1 = -1,max2 = -1,max3 = -1;
    int ind1,ind2,ind3;
    for(int i=0;i<3;i++){
        double x;
        cin>>x;
        if(max1==-1||max1<x){
            ind1=i;
            max1=x;
        }
    }
    for(int i=0;i<3;i++){
        double x;
        cin>>x;
        if(max2==-1||max2<x){
            ind2=i;
            max2=x;
        }
    }for(int i=0;i<3;i++){
        double x;
        cin>>x;
        if(max3==-1||max3<x){
            ind3=i;
            max3=x;
        }
    }
    cout<<odd[ind1]<<" "<<odd[ind2]<<" "<<odd[ind3]<<" ";
    printf("%.2lf",(max1*max2*max3*0.65-1)*2);
    return 0;
}