博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客练习赛11
阅读量:6571 次
发布时间:2019-06-24

本文共 2880 字,大约阅读时间需要 9 分钟。

链接:

来源:牛客网

求距离
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给你一个1 -> n的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?

输入描述:

第一行一个数n 之后一行n个数表示这个排列

输出描述:

输出一行一个数表示答案
示例1

输入

54 5 1 3 2

输出

3

说明

把1和2交换后 序列为4 5 2 3 1 最大值5在数组的2位置,最小值1在数组的5位置 距离为3

备注:

对于100%的数据,1 <= n <= 100

这个题目很简单,找到最大的和最小的,看他们到1和n的最大距离就好

#include 
using namespace std;int main(){ int n,ma,mi; scanf("%d",&n); for(int i=1,x;i<=n;i++) { scanf("%d",&x); if(x==1)ma=i; if(x==n)mi=i; } if(mi>ma)swap(mi,ma); printf("%d",max(n-mi,ma-1)); return 0;}

假如不是1到n就是去维护下这个值

#include 
using namespace std;int main(){ int n,mi,ma,maf,mif; scanf("%d",&n); scanf("%d",&mi); ma=mi,maf=mif=1; for(int i=2,x;i<=n;i++) { scanf("%d",&x); if(x>ma)ma=x,maf=i; else if(x

假如有相同的,就可以直接找到这些值,然后从两头遍历啊,只要一半就好了

链接:

来源:牛客网

假的线段树
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给你一个长为n的序列a,有m次操作

1.把区间[l,r]内所有x变成y

2.查询区间[l,r]内第k小值

输入描述:

第一行两个数n,m 第二行n个数表示序列a 后面m行 1 l r x y :把区间[l,r]中所有x变成y 2 l r k :查询区间[l,r]中的第k小值

输出描述:

对于每个询问,输出一个数表示答案
示例1

输入

3 32 3 32 1 3 11 1 3 3 12 1 3 2

输出

21

备注:

对于100%的数据,1 <= n, m ,ai <= 1000

n太小了,直接上啊

#include 
using namespace std;const int N=1e3+5;int a[N],s[N];int main(){ int x,y,n,m,c,l,r; while(~scanf("%d%d",&n,&m)) { for(int i=1; i<=n; i++)scanf("%d",&a[i]); while(m--) { scanf("%d",&c); if(c==1) { scanf("%d%d%d%d",&l,&r,&x,&y); for(; l<=r; l++) { if(a[l]==x)a[l]=y; } } else { memset(s,0,sizeof s); scanf("%d%d%d",&l,&r,&x); for(; l<=r; l++)s[a[l]]++; for(int i=1; i<1001; i++) { if(s[i]>=x) { printf("%d\n",i); break; } x-=s[i]; } } } } return 0;}

慢点的做法

#include 
using namespace std;const int N=1e3+5;int a[N],s[N];int main(){ int x,y,n,m,c,l,r; while(~scanf("%d%d",&n,&m)) { for(int i=1; i<=n; i++)scanf("%d",&a[i]); while(m--) { scanf("%d",&c); if(c==1) { scanf("%d%d%d%d",&l,&r,&x,&y); for(; l<=r; l++) if(a[l]==x)a[l]=y; } else { scanf("%d%d%d",&l,&r,&x); for(int j=1; j<=(r-l+1); j++) s[j]=a[j+l-1]; sort(s+1,s+2+r-l); printf("%d\n",s[x]); } } } return 0;}

 

转载于:https://www.cnblogs.com/BobHuang/p/8366753.html

你可能感兴趣的文章
mysql允许远程登录
查看>>
js判断undefined类型
查看>>
问题账户需求分析
查看>>
HDU 5826 physics
查看>>
修改软件源为163的镜像
查看>>
你可能不知道的技术细节:存储过程参数传递的影响
查看>>
[LUOGU] P1962 斐波那契数列
查看>>
正式学习 React(三)番外篇 reactjs性能优化之shouldComponentUpdate
查看>>
后缀数组
查看>>
u3d移动游戏优化规范
查看>>
POJ1703 Find them, Catch them
查看>>
Eclipse Java注释模板设置
查看>>
基于gmap.net制作离线地图下载器
查看>>
Docker网络的基本功能操作示例
查看>>
淘宝静态页面
查看>>
Dockerfile Tomcat镜像制作
查看>>
自适应备忘录 demo
查看>>
Sharepoint 2010弹出对话框
查看>>
静态类(C#)
查看>>
linux vi
查看>>