求助P5587打字练习
  • 板块P5587 打字练习
  • 楼主Haber
  • 当前回复19
  • 已保存回复19
  • 发布时间2022/5/21 20:19
  • 上次更新2023/10/28 00:55:41
查看原帖
求助P5587打字练习
345900
Haber楼主2022/5/21 20:19

喜提40分,过了自造的所有样例。能改尽量改,给个HACK也行。解决了无条件关注。

#include<bits/stdc++.h>
using namespace std;
int main(){
    string a1[10005];
    string a2[10005];
    int i=0,i2=0,time;
    long long sum=0;
    while(1){
        getline(cin,a1[i]);
        if(a1[i]=="EOF") break;
        for(int q=0,len=a1[i].length();q<len;q++){
            if(a1[i][q]=='<'){
                if(q>=1){
                    a1[i].erase(q-1,2);
                    len-=2;
                    q-=2;
                }
                else{
                    a1[i].erase(q,1);
                    len--;
                    q--;
                }
            }
        }
        i++;
    }
    while(1){
        getline(cin,a2[i2]);
        if(a2[i2]=="EOF") {
            cin>>time;
            break;
        }
        i2++;
    }
    for(int q=0;q<i2;q++){
        for(int k=0,len=a2[q].length();k<len;k++){
            if(a1[q][k]==a2[q][k]) sum++;
            if(a2[q][k]=='<'){
                if(k>=1){
                    if(a1[q][k-1]==a2[q][k-1]) sum--;
                    a2[q].erase(k-1,2);
                    len-=2;
                    k-=2; 
                }
                else{
                    a2[q].erase(k,1);
                    len--;
                    k--;
                }
            }

        }
    }
    int kmp=sum*60.0/time+0.5;
    printf("%d\n",kmp);
    return 0;
}

码风略丑

2022/5/21 20:19
加载中...