栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

电影(算法竞赛进阶指南)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

电影(算法竞赛进阶指南)

#include 
#include 
using namespace std;

const int N  = 2000010;

int a[N],b[N],c[N],idx,f[N * 3];//原始数据总集
int silt[N * 3],idx2;//散列表最终集合
int en[N * 3];//对应每门语言专家的人数
int n,m;

int find(int x)//查找离散化之后点的位置
{
   int l = 1,r = idx2;
   while(l < r)
   {
       int mid = l + r >> 1;
       if(silt[mid] >= x) r = mid;
       else l = mid + 1;
   }
   return r;
}

int main()
{
    cin >> n;
    for(int i = 1;i <= n;i ++ )//读入科学家
    {
        scanf("%d",&a[i]);
        f[++idx] = a[i];
    }
    
    cin >> m;
    for (int i = 1;i <= m;i ++ )//读入语音
    {
        scanf("%d",&b[i]);
        f[++idx] = b[i];
    }
    for (int i = 1;i <= m;i ++ )//读入字幕
    {
        scanf("%d",&c[i]);
        f[++idx] = c[i];
    }
    sort(f + 1,f + 1 + idx);//排列散列表
    
    
    
    
    for (int i = 1;i <= idx;i ++ )//去重
    {
        if (i == 1 || f[i] != f[i - 1])
        {
            silt[++idx2] = f[i];
        }
    }
    //for (int i = 1;i <= idx2;i ++ )cout << silt[i] << ' ' ;
    
    for (int i = 1;i <= n;i ++ ) en[find(a[i])] ++;
    
    int ans = 0,x = 0 ,y = 0;//x与y分别记录 懂语言和懂字幕的
    //for (int i = 1;i <= n;i ++ )cout << en[find(a[i])] << ' ' << find(i) << ' ';
    //cout << endl;
    for (int i = 1;i <= m;i ++ )
    {
        int x1 = en[find(b[i])] , y1 = en[find(c[i])];
        //cout << i << ' ' << x1 << ' ' << y1 << ' ' << x << ' ' << y << endl;
       if(x1 > x || (x1 == x && y1 > y))
       {
           x = x1,y = y1;
           ans = i;
       }
    }
    if(ans == 0)cout << 1 << endl;
    else 
    cout << ans << endl;
    
    
}

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864816.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号