首页 > 其他分享 >离散化

离散化

时间:2024-03-02 17:34:55浏览次数:12  
标签:大法 int scanf 离散 STL main

结构体:

int n,i,b[N];
struct stu{
    int x,id;
    bool operator<(stu &stu1)const{
         return x<stu1.x;
    }
}s[N];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
    	scanf("%d",&s[i].x);
	s[i].id=i;
    }
    sort(s+1,s+1+n);
    for(i=1;i<=n;i++)b[s[i].id]=i;
    for(i=1;i<=n;i++)printf("%d ",b[i]);
}

STL(unique大法)

int n,i,a[N],b[N];
int main(){
    scanf("%d"&n);
    for(i=1;i<=n;i++){
        scanf("%d",&a[i]);
        b[i]=a[i];
    }
    sort(a+1,a+1+n);
    int len=unique(a+1,a+1+n)-a-1;
    for(i=1;i<=n;i++){
        b[i]=lower_bound(a+1,a+1+n,b[i])-a;
    }
    for(i=1;i<=n;i++)printf("%d ",b[i]);
    return 0;
}

STL(map大法)

int n,i,a[N],b[N],cnt;
map<int,int>mp;
int main(){
    scanf("%d"&n);
    for(i=1;i<=n;i++){
        scanf("%d",&a[i]);
        b[i]=a[i];
    }
    sort(a+1,a+1+n);
    for(i=1;i<=n;i++)
        mp[a[i]]=++cnt;
    for(i=1;i<=n;i++)
        printf("%d ",mp[b[i]]);
    return 0;
}

标签:大法,int,scanf,离散,STL,main
From: https://www.cnblogs.com/0shadow0/p/18048941

相关文章

  • 离散数学(上)
    第一章命题逻辑的基本概念命题与联结词命题命题:非真即假的陈述句真值:命题的判断结果,取值为真或假简单命题(原子命题):不能再拆分的命题复合命题:简单命题通过联结词联结而成的命题联结词否定联结词(\(\neg\)):当且仅当\(p\)为假时,\(\negp\)为真合取联结词......
  • 离散微积分学习笔记
    后向差分对于函数\(f(x)\)定义等距节点\(x_k=x_0+k\Deltax\)。有:\[\Deltaf(x_k)=f(x_{k})-f(x_{k-1})\]下文简称差分。高阶差分一般来说,\(k\)阶差分的定义如下:\[\Delta^ka_n=\Delta(\Delta^{k-1}a_n)\]易得\(k\)阶差分公式:\[\Delta^ka_n=\sum_......
  • 2.7 离散时间样本训练的统计决策
    马尔可夫模型(离散时间序列样本)指第i时刻的取值依赖于且仅依赖于第i-1时刻的取值的样本串转移率在前一时刻某取值下当前时刻取值的条件概率马尔可夫模型状态转移矩阵用于查找某一状态的转移率离散变量的概率模型估计1、确定概率模型类型2、根据训练样本分别估计各类中......
  • 离散化(Discretization Algorithm)
    简介离散化——把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率,即:在不改变数据相对大小的条件下,对数据进行相应的缩小。离散化本质上可以看成是一种\(哈希\),其保证数据在哈希以后仍然保持原来的全/偏序关系。描述离散化用于处理一些个数不多,但是数......
  • 基础算法(十四)离散化+二分 ---以题为例
    假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行包含两个整数 n 和 m。接下来 ......
  • 【离散数学】第一章 命题逻辑
    第一章命题逻辑真值"地球是行星"这句话(命题)是正确的,我们称它的真值为真,通常记作T或者1;这句话也被称作真命题。"2是无理数"这句话(命题)是错误的的,我们称它的真值为假,通常记作F或者0;这句话也被称作假命题。1.命题的真值一定是唯一的;如果一句话不确定真假或者有时候真有时候假,那这句话......
  • R语言中的模拟过程和离散化:泊松过程和维纳过程
    全文链接:http://tecdat.cn/?p=17303 原文出处:拓端数据部落公众号本文中,我们讨论了一个将Poisson过程与Wiener过程结合在一起的最佳算法的问题。实际上,为了生成泊松过程,我们总是习惯于模拟跳跃之间的持续时间。我们使用给定时间间隔内跳跃的均匀性,该条件取决于跳跃的次数。首先......
  • 离散化
    关于离散化的那些事离散化,本质上就是一种hash,我们需要用到的只是数据的排名而不是数据本身,通过映射的方法把跨度大又疏松的数据转化为跨度小的数据。离散化一般有两种形式,一种是sort+unique,另一种是map。sort+unique首先就是直接用数组排序后去重,将需要用的所有数塞到一个......
  • 离散数学 第1章 数理逻辑
    1.1命题1.1.1基本概念断言:一个陈述语句。祈使句、疑问句一定不是断言。命题:要么为真,要么为假,不能二者都是的断言。原子命题(本源命题):一个命题已不能分解成更简单的命题命题和本源命题常用大写字母P、Q、R表示eg.P:4是质数1.1.2命题联结词复合命题:命题和原子命题可通过......
  • 离散化
    不少问题需要将数据范围很大的一些数"缩小"到1~n的范围例如a=[100,-5000,20,9,3]可以离散化到[5,1,4,3,2]其实也就是把这个数组按照从小到大排后之后的排名又有一种就是数组中含有多项重复的值a=[19,19,18,20,20,100,5]可以离......