zoukankan      html  css  js  c++  java
  • 序(不知道是什么时候的模拟题)

    【问题背景】

    zhx 给他的妹子们排序。

    【问题描述】

    (zhx)(N) 个妹子, 他对第 (i) 个妹子的好感度为(a_i), 且所有(a_i),两两不相等。 现在 (N) 个妹子随意站成一排, 他要将她们根据好感度从小到大排序。 他使用的是冒泡排序算法(详见下)。如果排序过程中好感度为(a_i)的妹子和好感度为(a_j)的妹子发生了交换, 那么她们之间会发生一场口角。

    现在 (zhx) 想知道, 给定妹子的初始排列, 在排序完成后, 最多存在多少个妹
    子, 她们任意两人之间没发生过口角。


    冒泡排序有一个特点:第i次使得第i大/小的数归位。同时大的数不会和小的数交换位置

    根据这个特点,我们就知道如果一个子序列是递增的,那么都不会进行交换。

    所以这个题我们求一个最长上升子序列就可以了。

    将问题转化为模型后就是模板le

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    using std::min;
    const int maxn=101000;
    int length[maxn];
    int mf;
    void ins(int val)
    {
    	int l=1,r=mf+1;
    	while(l<r)
    	{
    		int mid=(l+r)>>1;
    		if(length[mid]>val)
    			r=mid;
    		else
    			l=mid+1;
    	}
    	if(l==mf+1)
    	{
    		length[l]=val;
    		mf++;
    	}
    	else	length[l]=min(length[l],val);
    }
    int main()
    {
    	memset(length,100,sizeof(length));
    	int n;
    	scanf("%d",&n);
    	int a;
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d",&a);
    		ins(a);
    	}
    	printf("%d",mf);
    }
    
  • 相关阅读:
    centos6下安装部署hadoop2.2
    centos 卸载自带的 java
    完全分布式Hadoop2.3安装与配置
    hadoop安装与WordCount例子
    CentOS 6.5 下载地址
    碎片化
    DRM加密技术是怎么一回事
    DRM你又赢了:其API纳入HTML5标准
    java 对视频和图片进行加密解密
    HadoopDB:混合分布式系统
  • 原文地址:https://www.cnblogs.com/Lance1ot/p/9378212.html
Copyright © 2011-2022 走看看