【问题背景】
      zhx 给他的妹子们排序。
【问题描述】
      zhx有N个妹子,他对第i个妹子的好感度为ai, 且所有ai两两不相等。现在N个妹子随意站成一
排,他要将她们根据好感度从小到大排序。 他使用的是冒泡排序算法。如果排序过程中
好感度为ai的妹子和好感度为aj的妹子发生了交换, 那么她们之间会发生一场口角。
      现在 zhx 想知道, 给定妹子的初始排列, 在排序完成后, 最多存在多少个妹子, 她们任意两
人之间没发生过口角。
      正式地, 考虑对数组ai进行冒泡排序, 如果ai和aj在排序过程中发生交换,那么在两个元素之
间连一条边。你需要求出,排序结束后,最多存在多少个元素,其中任意两个元素之间不存在连边。
【输入格式】
      第一行两个整数 N, 表示妹子数量。
      接下来一行 N 个整数ai,表示初始第 i 个妹子的好感度。
【输出格式】
      一行一个整数, 表示最多满足要求的妹子的个数。
【样例输入】
3
3 1 2
【样例输出】
2
【样例解释】
{1, 2}。
【数据规模与约定】
      对于30%的数据, 1 ≤n≤ 16。
      对于70%的数据, 1 ≤n≤ 5000。
      对于100%的数据, 1 ≤n≤ 100000, 0 ≤ai<n。

(当时看到实在不会做啊,还是QTY_YTQ神说这就是求最长上升子序列长度,好劲啊)
      就是i和j两个妹子不交换,当且仅当ai<aj,所以只要求最长上升子序列长度就行了。
     (然而当时我只会n2算法70分,QTY_YTQ神写了个线段树维护A了,%%%)

正解是nlogn的最长上升子序列:

 program sort(input,output);
const
inf=;
var
a,f,c:array[..]of longint;
i,k,n:longint;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
function find(x:longint):longint;
var
l,r,mid:longint;
begin
if x<c[] then exit();
l:=;r:=k;
while l<r- do
begin
mid:=(l+r)>>;
if c[mid]>x then r:=mid- else l:=mid;
end;
if c[r]<x then exit(r) else exit(l);
end;
begin
assign(input,'sort.in');assign(output,'sort.out');reset(input);rewrite(output);
readln(n);
for i:= to n do read(a[i]);
for i:= to n do c[i]:=inf;
k:=;
for i:= to n do begin f[i]:=find(a[i])+;if c[f[i]]=inf then inc(k);c[f[i]]:=min(c[f[i]],a[i]); end;
write(k);
close(input);close(output);
end.

noip模拟题《序》sort的更多相关文章

  1. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  2. 【入门OJ】2003: [Noip模拟题]寻找羔羊

    这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...

  3. 9.9 NOIP模拟题

    9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算 ...

  4. 8.22 NOIP 模拟题

      8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...

  5. NOIP模拟题17.9.26

    B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...

  6. noip模拟题题解集

    最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...

  7. 9.22 NOIP模拟题

    吉林省信息学奥赛 2017 冬令营                                                                                    ...

  8. NOIP 模拟题

    目录 T1 : grid T2 : ling T3 : threebody 数据可私信我. T1 : grid 题目:在一个\(n*n\)的方格中,你只能斜着走.为了让问题更简单,你还有一次上下左右走 ...

  9. 6.19 noip模拟题(题目及解析转自 hzwer 2014-3-15 NOIP模拟赛)

    Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...

随机推荐

  1. day4 基础

    1.变量 2.打印名片 3.raw_input() 和 input() 4.变量类型 type 5. if-else 6.标示符的规则 7.关键字 8.运算符 9.print打印多个值 1.变量 sc ...

  2. java 通过内存映射文件来提高IO读取文件性能

    MappedByteBuffer out = new RandomAccessFile("src/demo20/test.dat", "rw"). getCha ...

  3. 优先队列(堆) -数据结构(C语言实现)

    数据结构与算法分析 优先队列 模型 Insert(插入) == Enqueue(入队) DeleteMin(删除最小者) == Dequeue(出队) 基本实现 简单链表:在表头插入,并遍历该链表以删 ...

  4. Spark任务执行期间写临时文件报错导致失败

    spark任务在执行期间,有时候会遇到临时目录创建失败,导致任务执行错误. java.io.IOException: Failed to create local dir in -- spark执行过 ...

  5. Openstack 10 云环境安装

    概述 资源规划 Undercloud Installation Overcloud Installation Trouble Shooting 附录 本指南介绍了如何使用 Red Hat OpenSt ...

  6. docker应用容器化准则—12 factor

    在云的时代,越来越多的传统应用需要迁移到云环境下,新应用也要求能适应云的架构设计和开发模式.而12-factor提供了一套标准的云原生应用开发的最佳原则. 在容器云项目中应用容器化主要参考12-Fac ...

  7. Pycharm实现服务器端代码的远程调试

     Pycharm是很多人在学习机器学习时的常用IDE.但是,当代码需要庞大计算资源的时候,我们往往需要借助远程服务器的GPU资源.很多人都是将代码拷贝到服务器,然后运行,但是当修改调试的时候,很不方便 ...

  8. DOM---文档对象模型(Document Object Model)的基本使用

    一.DOM简介 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.它是一种与平台和语言无关的应用程序接口(API),它可以动态 ...

  9. php分页类学习

    分页是目前在显示大量结果时所采用的最好的方式.有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据.在互联网上,分​页是一般用于搜索结果或是浏览全部信息(比如:一个论坛主题).几乎在每一个W ...

  10. Java 通过先序中序序列生成二叉树

    题目 二叉树的前序以及后续序列,以空格间隔每个元素,重构二叉树,最后输出二叉树的三种遍历方式的序列以验证. 输入: 1 2 3 4 5 6 7 8 9 10 3 2 5 4 1 7 8 6 10 9 ...