pearl(二分查找,stl)
最近大概把有关二分的题目都看了一遍...
嗯..这题是二分查找...二分查找的代码都类似,所以打起来会水很多
但是刚开始打二分还是很容易写挂..所以依旧需要注意
题2 天堂的珍珠
【题目描述】
我有很多很多(n条)用魔法合成的珍珠项链……(其实神仙比凡人更爱美),每天起来我都要从中挑一条戴上……挑哪条很有讲究,如果比情敌**的难看,那么就会被**(-_-),如果比天后Hera的好看,那么就完蛋了(-_-)。所以我希望你能帮帮我,解决这个令人头疼的问题——每天帮我算算,那天我能戴的项链有多少条。
【输入文件】(pearl.in):
第一行为正整数n(项链总条数)。
第二行有n个整数(代表每条项链晶的好看程度Xi,<=Xi<=maxlongint。)
第三行为正整数m,表示总天数(也就是总询问次数)。
以下m行,每行两个整数Ai,Bi(<=Ai,Bi<=maxlongint),询问好看程度在Ai到Bi之间的项链条数(含等于Ai或Bi的,Ai与Bi大小关系不确定)。
【输出文件】(pearl.out):
输出m行,对于每次询问输出一行,从Ai到Bi(含Ai,Bi)好看程度在Ai到Bi之间的项链条数。
【输入样例1】: 【输出样例1】: 【数据规模】
对于25%数据,有m,n<=。
对于100%数据,有m,n<=。
pearl
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100001],b[100001],s=0,p=0,n,mid;
int main(){
int i,j,t,m,x,y;
freopen("pearl.in","r",stdin);freopen("pearl.out","w",stdout); scanf("%d",&n);
for (int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
scanf("%d",&m);
for (int i=0;i<m;i++){
int r=n-1,l=0;
scanf("%d%d",&x,&y);
if (x>y) {t=x;x=y;y=t;}
if (x<a[0]) x=a[0];if (y>a[n-1]) y=a[n-1];
while(l!=r){
mid=(l+r)>>1;
if(x>a[mid])l=l+1;
else r=mid;
}
if(a[l]<x) l=l+1;
s=l;
r=n-1,l=0;
while(l!=r){
mid=(l+r)>>1;
if(y>=a[mid])l=l+1;
else r=mid;
}
if(a[l]>y)l=l-1;
p=l;
if(s>p)b[i]=0;
else b[i]=p-s+1;
}
for(i=0;i<m;i++) printf("%d\n",b[i]);
return 0;
}
表示调用sort简直爽
以及自己年轻了一下,以为cena不会这么傻缺输入的时候逗比了一下
还有自己的代码能力需要加强啦
哦。。之后看到了这题调用stl的方法...这里mark一下
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int v[100001],w[100001];
int main(){
int n,m,a,b;
freopen("pearl.in","r",stdin);freopen("pearl.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&v[i]);
sort(v,v+n);
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
w[i]=upper_bound(v,v+n,b)-lower_bound(v,v+n,a);
}
for (int i=0;i<m;i++) printf("%d\n",w[i]);
fclose(stdin);fclose(stdout);
return 0;
}
pearl(二分查找,stl)的更多相关文章
- [USACO09DEC]音符Music Notes (二分、STL)
https://www.luogu.org/problem/P2969 题目描述 FJ is going to teach his cows how to play a song. The song ...
- 【转】STL之二分查找 (Binary search in STL)
Section I正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound,equal_range 本文是对Effective STL第4 ...
- STL之二分查找 (Binary search in STL)
STL之二分查找 (Binary search in STL) Section I正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound ...
- STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())
一:起因 (1)STL中关于二分查找的函数有三个:lower_bound .upper_bound .binary_search -- 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),以 ...
- STL中的二分查找———lower_bound,upper_bound,binary_search
关于STL中的排序和检索,排序一般用sort函数即可,今天来整理一下检索中常用的函数——lower_bound , upper_bound 和 binary_search . STL中关于二分查找的函 ...
- STL中的二分查找
本文转载于https://blog.csdn.net/riba2534/article/details/69240450 使用的时候注意:必须用在非递减的区间中 二分查找的原理非常简单,但写出的代码中 ...
- C++ STL中的Binary search(二分查找)
这篇博客转自爱国师哥,这里给出连接https://www.cnblogs.com/aiguona/p/7281856.html 一.解释 以前遇到二分的题目都是手动实现二分,不得不说错误比较多,关于返 ...
- STL模板整理 Binary search(二分查找)
前言: 之前做题二分都是手动二分造轮子,用起来总是差强人意,后来看到STL才发现前辈们早就把轮子造好了,不得不说比自己手动实现好多了. 常用操作 1.头文件 #include <algorith ...
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
STL中的二分查找函数 1.lower_bound函数 在一个非递减序列的前闭后开区间[first,last)中.进行二分查找查找某一元素val.函数lower_bound()返回大于或等于val的第 ...
随机推荐
- SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数
原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...
- 第4章 建造者模式(Builder Pattern)
原文 第4章 建造者模式(Builder Pattern) 定义 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式. 实用范围 1 当创建复杂对象 ...
- int有符号和无符号类型内存 -- C
/* int 有符号 0xffffffff == -1 0xfffffffe == -2 最小 0x80000000 == -21 4748 3648 最大 0x7fffffff == 21 4748 ...
- CII-2.4指针常量和常量指针
#define T Stack_T typedef struct T *T; struct T { int count; struct elem { void *x; struct elem *lin ...
- vim_编码配置文件_utf8乱码解决
1:简化步奏 调整 :vimrc的脚本配置 编辑~/.vimrc文件,(没有的话新建个)加上如下几行: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb23 ...
- windows下利用OpenVPN搭建VPNserver
一.OpenVPN是一款功能强大,可跨平台(支持Win 2000/XP/2003, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, 和 OpenBSD)使用的SS ...
- JavaScript中,关于new的那些事
这篇文章是自己对new学习过程中的一些理解,有不对的地方希望指出,接受组织的批评教育. 导火线,前段时间学习jQuery的时候,看到源码中有这样一段: jQuery = function(select ...
- 枚举 UIButton补充
一.URL 1.什么是URL? URL是某个资源的唯一路径,通过这个路径就能访问对应的资源 2.URL的组成 协议头://全路径 * 协议头就代表资源的类型,比如http代表网络服务器资源,ftp代表 ...
- Android 记录的(MediaRecorder)而播放(MediaPlayer)
经MediaRecorder和MediaPlayer实现声音记录和回放,代码比较简单,直接附着到代码. xml文档面对只有四个button不贴. UI watermark/2/text/aHR0cDo ...
- CentOS 使用yum命令安装Java SDK(openjdk)
CentOS 6.X 和 5.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的java 平台.CentOS yum 命令 安装 ...