排序之离散化

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector> 
const int maxn =10000;
using namespace std;
int s[maxn];
int n;
vector<int>v;
int query(int x)
{
    return lower_bound(v.begin(),v.end(),x) - v.begin() +1; 
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>s[i];
        v.push_back(s[i]);
    }
    stable_sort(v.begin(),v.end());
    v.erase(unique(v.begin(),v.end()),v.end());
    for(int i=0;i<v.size();i++)
        cout<<v[i]<<' ';
    puts("");
    for(int i=1;i<=n;++i)
    {
        cout<<query(s[i])<<' ';
    }
    return 0;
}

 例题:Cinema

题意翻译

莫斯科在举办一场重要的有n 个不同国家的珂学家参与的国际会议,每个珂学家都只会一种语言。为了方便起见,我们规定一种语言用110^9 的数来描述。 在会议之后的晚上,珂学家们决定去看电影。他们去的电影院有m场电影,每场有两个不同的数字,分别代表配音的语言和字幕的语言。如果一个珂学家能听懂配音,他会非常愉悦;如果能看懂字幕,他会比较满意。如果既看不懂也听不懂,他会很生气。 珂学家们决定去看同一场电影,你必须帮助他们选择一场电影,让愉悦的人最多的前提下,比较满意的人最多。 输入格式: 第一行一个整数n(1n200000) 表示珂学家个数。 第二行n个整数a1, a2, ..., an(1ai109) 表示珂学家们会的语言。 第三行一个整数 m 1m200000 表示电影的场数。 第四行m个整数b1, b2, ..., bn(1bj109) 表示电影的配音用的语言。 第五行m 个整数c1, c2, ..., cn (1cj109) 表示电影的字幕用的语言。 输出格式: 一个整数表示安排哪一场电影。 如果有多种情况,选择比较满意的方案输出。

Examples

Input
3
2 3 2
2
3 2
2 3
Output
2
Input
6
6 3 1 1 3 7
5
1 2 3 4 5
2 3 4 5 1
Output
1
#include<bits/stdc++.h>
using namespace std;
int num,n,m,a[600050],b[600050];
int sci[200010],A[200010],S[200010];
int cnt=0;
//最常见的离散化操作:
void lisan() { sort(a+1,a+cnt+1); for(int i=1;i<=cnt;++i) { if(i==1||a[i]!=a[i-1]) b[++num]=a[i]; } } int query(int x) { return lower_bound(b+1,b+num+1,x) - b; } int p[600050]; int main() { cin>>n; for(int i=1;i<=n;i++) { scanf("%d",&sci[i]); a[++cnt]=sci[i]; } cin>>m; for(int i=1;i<=m;i++) { scanf("%d",&A[i]); a[++cnt]=A[i]; } for(int i=1;i<=m;i++) { scanf("%d",&S[i]); a[++cnt]=S[i]; } lisan(); for(int i=1;i<=n;i++) { p[query(sci[i])]++; } int maxs=-1,ans=1,max2=-1; for(int i=1;i<=m;++i) { if(p[query(A[i])]>maxs)ans=i,maxs=p[query(A[i])],max2=p[query(S[i])]; else if(p[query(A[i])]==maxs&&p[query(S[i])]>max2) { ans=i,max2=p[query(S[i])]; } } printf("%d",ans); }

 

posted @ 2018-12-22 21:48  南柯一场  阅读(245)  评论(0编辑  收藏  举报