zoukankan      html  css  js  c++  java
  • 【题解】【CF670C】cinema

    毫无意义题解系列

    Description(中文翻译)

    莫斯科正在举办一个大型国际会议,有n个来自不同国家的科学家参会。 每个科学家都只懂得一种语言。 为了方便起见,我们把世界上的所有语言用1到10^9之间的整数编号。 在会议结束后,所有的科学家决定一起去看场电影放松一下。 他们去的电影院里一共有m部电影正在上映,每部电影的语音和字幕都采用不同的语言。 对于观影的科学家来说,如果能听懂电影的语音,他就会很开心;如果能看懂字幕,他就会比较开心;如果全都不懂,他就会不开心。 现在科学家们决定大家看同一场电影。 请你帮忙选择一部电影,可以让观影很开心的人最多。 如果有多部电影满足条件,则在这些电影中挑选观影比较开心的人最多的那一部。

    sol

    简单离散化

    为了偷懒使用map

    时间复杂度(O(nlogm))

    (注意:以下是排序代码,会非常愉快的T掉第125个点)

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <map>
    using namespace std;
    
    const int N=200010;
    
    inline void read(int &x) {
        x=0;
        int f=1;
        char ch=getchar();
        while(ch<'0'||ch>'9') {
            if (ch=='-') {
                f=-1;
            }
            ch=getchar();
        }
        while(ch>='0'&&ch<='9') {
            x=x*10+ch-'0';
            ch=getchar();
        }
        x*=f;
    }
    
    struct note {
        int x;
        int y;
        int id;
    };
    
    int n,m;
    int a[N];
    note da[N];
    map<int,int> mp;
    
    inline bool comp(const note &x,const note &y) {
        int p1=mp[x.x],p2=mp[y.x];
        int u1=mp[x.y],u2=mp[y.y];
        return p1==p2?(u1==u2?x.id>y.id:u1>u2):p1>p2;
    }
    
    int main() {
        read(n);
        for(int i=1;i<=n;i++) {
            read(a[i]);
            mp[a[i]]++;
        }
        read(m);
        for(int i=1;i<=m;i++) {
            read(da[i].x);
        }
        for(int i=1;i<=m;i++) {
            read(da[i].y);
            da[i].id=i;
        }
        sort(da+1,da+m+1,comp);
        printf("%d
    ",da[1].id);
        return 0;
    }
    

    调了1min的代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <map>
    using namespace std;
    
    const int N=200010;
    
    inline void read(int &x) {
        x=0;
        int f=1;
        char ch=getchar();
        while(ch<'0'||ch>'9') {
            if (ch=='-') {
                f=-1;
            }
            ch=getchar();
        }
        while(ch>='0'&&ch<='9') {
            x=x*10+ch-'0';
            ch=getchar();
        }
        x*=f;
    }
    
    struct note {
        int x;
        int y;
        int id;
    };
    
    int n,m;
    int a[N];
    note da[N];
    map<int,int> mp;
    
    inline bool comp(const note &x,const note &y) {
        int p1=mp[x.x],p2=mp[y.x];
        int u1=mp[x.y],u2=mp[y.y];
        return p1==p2?(u1==u2?x.id>y.id:u1>u2):p1>p2;
    }
    
    int main() {
        read(n);
        for(int i=1;i<=n;i++) {
            read(a[i]);
            mp[a[i]]++;
        }
        read(m);
        for(int i=1;i<=m;i++) {
            read(da[i].x);
        }
        for(int i=1;i<=m;i++) {
            read(da[i].y);
            da[i].id=i;
        }
        note ans=da[1];
        for(int i=2;i<=m;i++) {
            if (!comp(ans,da[i])) {
                ans=da[i];
            }
        }
        printf("%d
    ",ans.id);
        return 0;
    }
    
  • 相关阅读:
    Java中Vector和ArrayList的区别
    多线程
    集合框架
    5种运行时异常+1道面试题
    事务,视图,索引,备份和恢复
    MYSQL常用函数
    SQL数据库表字段明细导入导出
    SqlServer 命令方式备份与还原
    .NetCore IIS发布后PUT、DELETE请求错误405.0
    大数据中HBase的Java接口封装
  • 原文地址:https://www.cnblogs.com/tt66ea-blog/p/11822721.html
Copyright © 2011-2022 走看看