【问题背景】
      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. python 逆波兰式

    逆波兰式,也叫后缀表达式 技巧:为简化代码,引入一个不存在的运算符#,优先级最低.置于堆栈底部 class Stack(object): '''堆栈''' def __init__(self): se ...

  2. tkinter事件高级用法实例

    from tkinter import * import threading, time trace = 0 class CanvasEventsDemo: def __init__(self, pa ...

  3. CF543E Listening to Music

    题面 空间只有$64\text{MB}$!!! 题解 (据说正解是毒瘤分块套分块) 按照权值从大到小排序,对所有能够覆盖到它的区间的左端点打个标记 按照值域建一棵主席树就可以了 区间查询最大值,用$m ...

  4. 9.15 DP合集水表

    9.15 DP合集水表 显然难了一些啊. 凸多边形的三角剖分 瞄了一眼题解. 和蛤蛤的烦恼一样,裸的区间dp. 设f[i][j]表示i~j的点三角剖分最小代价. 显然\(f[i][i+1]=0,f[i ...

  5. 洛谷P2831 愤怒的小鸟

    洛谷P2831 愤怒的小鸟 原题链接 题解 首先简单数学公式送上. \(ax_1^2+bx_1=y_1\) \(ax_2^2+bx_2=y_2\) \(ax_1^2x_2+bx_1x_2=y_1x_2 ...

  6. JAVA高级之路----JAVA多线程

    介绍 这段时间一直在学习和整理一些通往java高级程序猿必备的知识点,有些是工作中必须要知道的,有些是面试必须要知道的, 但是不管怎么样,学习了就不会有坏处,不可能全部记得住,最起码得雁过留痕,知识不 ...

  7. 关于Python的装饰器(2)

    Python中被装饰器修饰的函数,解析后会生成一个参数是被修饰函数的装饰器函数对象,可以调用,可以接受传参(如果被修饰的函数定义了参数),实际调用的时候,尽管代码里值写了被修饰的函数,被调用的却是最终 ...

  8. 2019年猪年颁奖典礼、公司年会、跨年晚会、科技会议、年终答谢会之幕布背景展板PSD模板-第三部分

    16套--2019年猪年颁奖典礼.公司年会.跨年晚会.科技会议.年终答谢会之幕布.背景和展板PSD模板,免费颁奖典礼PSD展板背景幕布,下载地址:百度网盘,https://pan.baidu.com/ ...

  9. macOS中启动Tomcat提示Cannot find ./catalina.sh

    首先查看Tomcat目录下是否存在catalina.sh,如果文件不存在,文件丢失,最好的方式是重装Tomcat Tomcat官网:http://tomcat.apache.org/ 如果文件存在,那 ...

  10. python-编程从入门到实践

    python-编程从入门到实践 1.python文件后缀名: .py 是Python的源码文件,由Python.exe解释. .pyc 是Python的编译文件.pyc 文件往往代替 py 文件发布: ...