离散化

作者: Tsukinousag | 来源:发表于2021-01-30 19:23 被阅读0次

电影

原题链接

具体离散化的用处—>传送门

给出一堆科学家擅长的语言,给出电影,电影有科学家喜欢的,一般的,否则都不喜欢,进行匹配,将所有信息放到一个数组里,排序去重离散化,再用科学家的信息去二分查找匹配用sum数组记录,最后优先让喜欢的匹配的多,其次是比较喜欢的

#include <iostream>
#include <algorithm>

using namespace std;

const int N=1e6+10;

int a[N],b[N],c[N];
int arr[3*N],cnt[3*N],sum[3*N];
int n,t=0,mm=0,m;

//离散化
void discrete()
{
    sort(arr+1,arr+t+1);
    for(int i=1;i<=t;i++)
    {
        if(i==1||arr[i]!=arr[i-1])
            cnt[++mm]=arr[i];
    }
}

//二分查找离散化的位置
int query(int x)
{
    return lower_bound(cnt+1,cnt+mm+1,x)-cnt;
}


int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        arr[++t]=a[i];
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d",&b[i]);
        arr[++t]=b[i];
    }
    for(int i=1;i<=m;i++)
    {
        scanf("%d",&c[i]);
        arr[++t]=c[i];
    }
    //离散化
    discrete();
    //二分查找统计
    for(int i=1;i<=n;i++)//统计每种语言的人的数量
    {
        int id=query(a[i]);
        ++sum[id];
    }
    //开始匹配
    //bmax很高兴的人多,cmax让比较开心的人多
    int bmax=-1,cmax=-1,ans=0;
    for(int i=1;i<=m;i++)
    {
        int s1=query(b[i]);
        int s2=query(c[i]);
        if(sum[s1]>bmax)//高兴的人多的情况下就选
        {
            bmax=sum[s1];
            cmax=sum[s2];
            ans=i;
        }
        else if(sum[s1]==bmax&&sum[s2]>cmax)//高兴的人相同时,就选比较开心的人多的那边
        {
            bmax=sum[s1];
            cmax=sum[s2];
            ans=i;
        }
    }
    printf("%d\n",ans);
    return 0;
}

相关文章

  • 使用spark ml做离散化(分位数离散化)

    单列离散化: 多列同时离散化: 不同离散化方式:http://www.javashuo.com/article/p...

  • 标准化和离散化总结

    离散化总结 等距离散化是根据连续型变量的取值,等频离散化根据连续型变量的总个数。

  • 离散化

    离散化指把连续型数据切分为若干“段”,也称bin,是数据分析中常用的手段。切分的原则有等距,等频,优化,或根据数据...

  • 离散化

    电影 原题链接[https://www.acwing.com/problem/content/105/] 具体离散...

  • 数据预处理_数据离散化

    一、数据离散化 1、所谓离散化,就是把无限空间中的有限个体映射到一个有限的空间中。 2、数据离散化大多针对连续数据...

  • 特征离散化

    详情可看https://wenku.baidu.com/view/9e45b337011ca300a6c390d2...

  • 连续属性离散化实例

    连续属性离散化,就是将数值型变量转化为离散型变量类似于指标转维度的那种感觉 前面说过,连续属性离散化有几种方式: ...

  • 2019-04-08

    一、离散化 简单离散 通过定义一些划分规则,将原来连续的数据划分成不同的类别,从而将数据离散化。 分桶后平滑 先根...

  • 机器学习中的特征工程(四)---- 特征离散化处理方法

    简介 特征离散化指的是将连续特征划分离散的过程:将原始定量特征的一个区间一一映射到单一的值。离散化过程也被表述成分...

  • 5.4 数据连续属性离散化.cut()、qcut()、pd.v

    连续属性变换成分类属性,即连续属性离散化在数值的取值范围内设定若干个离散划分点,将取值范围划分为一些离散化的区间,...

网友评论

      本文标题:离散化

      本文链接:https://www.haomeiwen.com/subject/frektltx.html