1047 vector

来源:互联网 发布:恺英网络王悦老婆是谁 编辑:程序博客网 时间:2024/06/16 06:21

这就是1039的反转,结果我还是超时了。。。

就没有学会用int存吗?不知道string很慢吗?

#include<iostream>#include<algorithm>#include<cstdio>#include<vector>#include<map>#include<set>using namespace std;int main(){    int n,k,a,b;    string s;    scanf("%d%d",&n,&k);    vector<string> v[2505];    for(int i=0;i<n;i++){        cin>>s>>a;        for(int j=0;j<a;j++){            cin>>b;            v[b].push_back(s);        }    }    for(int i=1;i<=k;i++){   //从1开始存的        int num=v[i].size();        cout<<i<<" "<<num<<endl;        sort(v[i].begin(),v[i].end());        for(int j=0;j<num;j++)            cout<<v[i][j]<<endl;    }    return 0;}
对比满分代码;

按名字的字典序排course[ i ]里的数值,使 j 从0开始排的时候对应的值,刚好是名字字典序对应的下标

#include <cstdio>#include <vector>#include <algorithm>#include <string.h>using namespace std;char name[40010][5];vector<int> course[2510];bool cmp1(int a, int b) {    return strcmp(name[a], name[b]) < 0;}int main() {    int n, k;    scanf("%d %d", &n, &k);    for(int i = 0; i < n; i++) {        int cnt, temp;        scanf("%s %d", name[i], &cnt);        for(int j = 0; j < cnt; j++) {            scanf("%d", &temp);            course[temp].push_back(i);        }    }    for(int i = 1; i <= k; i++) {        printf("%d %d\n", i, course[i].size());        sort(course[i].begin(), course[i].end(), cmp1);        for(int j = 0; j < course[i].size(); j++) {            printf("%s\n", name[course[i][j]]);        }    }    return 0;}



原创粉丝点击