汕头市队赛 SRM 07 A 你的麻将会排序吗
A 你的麻将会排序吗 SRM 07
曾经有过一些沉迷日麻的小孩纸,后来呀,他们都去寻找自己的世界了。
kpm也是这样的小孩纸。他想有一只自动整理牌的机器。当麻将以给定的顺序进入机器时,通过机器的运转,使得麻将们出机器的顺序是递增的。所以kpm需要在机器中建立一些传送带 (假设这些传送带都是足够长,可以停放很多很多的麻将),问题是,现在kpm需要建立多少条传送带才能完成他的机器。
kpm大概有10^5块麻将吧。
输入格式
第一行是一个不大于10^5的数,表述麻将的总数。
第二行是麻将依次进入机器的编号,ai表示编号为ai的麻将在i时刻进入机器,保证是一个1-n的排列。
输入格式
一个数字,表示这个机器最少需要建几条传送带。
样例输入
9
8 4 2 5 3 9 1 6 7
样例输出
4 这道题其实很容易看出来是求有多少个下降序列(不重复)
就像很多人写过的导弹拦截一样 我们可以贪心
每个数x我们都可以找已知的序列中每个序列最末也就是最小的数和x比较 比x大的都符合条件
不过由贪心可得越接近x越好 所以我们的目标其实是找到比x大中最小的
然后我们发现 我们维护的序列具有单调性
比如我们每次找到一个数 x
若序列中没有符合的 那么我们会新开一个序列 而这个序列的末端就是x 一定比前面所有的序列末端都大
若找到了j个符合的n-j——n,那么n-j就是我们要找的最优解 此时x比1-n-j的末端都大 比n-j——n的末端都小 此时用x替换n-j的末端
容易证明序列仍然单调 那么我们就可以继续二分了
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define LL long long
using namespace std;
const int M=1e5+;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,w[M],cnt,k;
int find(int k){
int l=,r=cnt;
while(l<=r){
int mid=(l+r)>>;
if(w[mid]<k) l=mid+;
else r=mid-;
}
return l;
}
int main()
{
n=read();
w[++cnt]=read();
for(int i=;i<=n;i++){
k=read();
int s=find(k);
if(s>cnt) w[++cnt]=k;
else w[s]=k;
}
printf("%d\n",cnt);
return ;
}
汕头市队赛 SRM 07 A 你的麻将会排序吗的更多相关文章
- 汕头市队赛 SRM 07 B 好玩的麻将
B 好玩的麻将 SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周又打了n场麻将,又控了分使得自己的排名是1..n的一个排列. 但她 ...
- 汕头市队赛 SRM 07 D 天才麻将少女kpm
这道题放了很久还是回来补了 D 天才麻将少女KPM SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周叒打了n场麻将,但她这次又没控分,而且 ...
- 汕头市队赛 SRM 07 C 整洁的麻将桌
C 整洁的麻将桌 SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周双打了n场麻将,但她这次没控分,而且因为是全民参与的麻将大赛,所以她的名 ...
- 汕头市队赛 SRM 06 B 起伏的排名
B 起伏的排名 SRM 06 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. 在上个星期她打了n场麻将,每场麻将都有n名玩家.KPM自然记得自己的n次排名. ...
- 汕头市队赛SRM 20 T2不净的圣杯
不净的圣杯 SRM 20 背景 作为一张BUG级别的卡,官方打算把它修改得人畜无害一些…… 虽然名字还没想好,但是能力大概是对敌方所有单位造成d点伤害,d为自己牌组中所有卡的编号的最大公约数.这无疑是 ...
- 汕头市队赛 SRM 06 C 秀恩爱
C 秀恩爱 SRM 06 背景&&描述 KPM坐在直升机上俯瞰小渔村景象. 渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,s ...
- 汕头市队赛 SRM 06 A 撕书
A 撕书 SRM 06 背景&&描述 游行寺汀正在杀书. 书总共有n页,每页都可以看作是一个小写英文字母,所以我们可以把书看成长度为n的字符串s. 琉璃 ...
- 汕头市队赛 SRM 08 B
B-3 SRM 08 描述 给长度为 n 的数列 A 和长度为 m 的数列 B,问有多少长度为 m 的数列 C 满足 输入格式 第一行俩整数 n 和 m 第二行 n 个整数 ,表示数列 A 第三行 m ...
- 汕头市队赛 SRM 08 C
C-3 SRM 08 描述 给一个图,n 个点 m 条双向边,每条边有其长度.n 个点中有 k 个是特殊点,问任意两个特殊点的最短路是多少. 输入格式 第一行三个整数 n m k 第二行 k 个整数 ...
随机推荐
- PHP生成特定长度的纯字母字符串
PHP中,md5().uniqid()函数可以返回32位和13位不重复的字符串,但是这些字符串都可能包含有数字.如果需要纯字母的字符串,而且长度不定,比如8位,那么直接用这两个函数无法达到效果. 这时 ...
- OSI七层模型 学习摘要
OSI参考模型是计算机网路体系结构发展的产物.它的基本内容是开放系统通信功能的分层结构.这个模型把开放系统的通信功能划分为七个层次,从邻接物理媒体的层次开始,分别赋于1,2,……7层的顺序编号,相应地 ...
- 第4章 HDFS操作
目录 4.1 命令行操作 4.2 Java API操作 4.2.1 创建Java工程 4.2.2 读取数据 4.2.3 创建目录 4.2.4 创建文件 4.2.5 删除文件 4.2.6 遍历文件和目录 ...
- iptables v1.3.5: multiple -d flags not allowed错误已解决
今天写了一条iptables的规则 iptables -t filter -A INPUT -s 192.168.192.0/24 -d 192.168.192.140 -p tcp -dport 2 ...
- MySQL常用命令基础操作
MySQL启动与更改密码 mysql启动基本原理说明: /etc/init.d/mysqld是一个shell启动脚本,启动后最终会调用,mysqld_safe脚本,最后调用mysqld服务启动mysq ...
- TensorFlow验证码识别
本节我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里我们识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别. 验 ...
- myeclipse用maven搭建web项目后tomcat启动报找不到jar包解决办法
因为maven项目jar包放在Maven Dependencies内,用tomcat启动web项目,会找WEB-INF下的lib目录,需要部署Maven Dependencies 选中项目-prope ...
- HTML5技巧
HTML5技巧 HTML5 技巧一:当今科技发展的速度真惊人,稍不留神,就可能无法跟上它的步伐.新一代的HTML-HTML5的发展也不停的带给我们新的惊喜,我们将通过这篇文章向大家介绍一些HTML ...
- 浅析src与href的区别
src与href的区别 SRC src用于替换当前元素,href用于在当前文档和引用资源之间确立联系. src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置:在请 ...
- 【Count Complete Tree Nodes】cpp
题目: Given a complete binary tree, count the number of nodes. Definition of a complete binary tree fr ...