博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最敏捷的机器人
阅读量:5215 次
发布时间:2019-06-14

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

最敏捷的机器人

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 88  Solved: 39
[][][][] []

Description

Wind设计了很多机器人。但是它们都认为自己是最强的,于是,一场比赛开始了……机器人们都想知道谁是最敏捷
的,于是它们进行了如下一个比赛。首先,他们面前会有一排共n个数,它们比赛看谁能最先把每连续k个数中最大
和最小值写下来,当然,这些机器人运算速度都很快,它们比赛的是谁写得快。但是Wind也想知道答案,你能帮助
他吗? 

Input

每组测试数据 
第1行为n,k(1<=k<=n<=100000) 
第2行共n个数,为数字序列,所有数字均在longint范围内。 

Output

共n-k+1行 
第i行为第i~i+k-1这k个数中的最大和最小值 

Sample Input

5 31 2 3 4 5

Sample Output

3 14 25 3 【注释】由于输入文件太大。特将数据范围缩小10倍,希望大家努力优化算法。

HINT

陷入被printf坑成疯狂RE的INF洞

 

1 #include 
2 #include
3 #include
4 #include
5 #define inf INT_MAX 6 using namespace std; 7 struct point{ 8 int maxv,minv; 9 }tree[400010];10 int n,k;11 int a[100001];12 struct segment_tree{13 void Build(int root,int l,int r)14 {15 if (l==r)16 {17 tree[root].maxv=tree[root].minv=a[l];18 return;19 }20 int mid=(l+r)>>1;21 Build(root*2,l,mid);22 Build(root*2+1,mid+1,r);23 tree[root].maxv=max(tree[root*2].maxv,tree[root*2+1].maxv);24 tree[root].minv=min(tree[root*2].minv,tree[root*2+1].minv);25 }26 void Query(int root,int l,int r,int x,int y,int &maxx,int &minx)27 {28 if (x<=l && y>=r)29 {30 maxx=max(tree[root].maxv,maxx);31 minx=min(tree[root].minv,minx);32 return;33 }34 int mid=(l+r)>>1;35 if (x<=mid)36 Query(root*2,l,mid,x,y,maxx,minx);37 if (y>mid)38 Query(root*2+1,mid+1,r,x,y,maxx,minx);39 }40 }S;41 int main()42 {43 scanf("%d%d",&n,&k);44 for (int i=1;i<=n*4+1;i++)45 tree[i].maxv=-inf,tree[i].minv=inf;46 for (int i=1;i<=n;i++)47 scanf("%d",&a[i]);48 S.Build(1,1,n);49 for (int i=1;i<=n-k+1;i++)50 {51 int maxx=-inf,minx=inf;52 S.Query(1,1,n,i,i+k-1,maxx,minx);53 printf("%d",maxx),putchar(' '),printf("%d\n",minx);54 }55 return 0;56 }
robot

 

转载于:https://www.cnblogs.com/LHR-HY/p/8047661.html

你可能感兴趣的文章
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
Combination Sum III -- leetcode
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
spring 解决中文乱码问题
查看>>
hdu 4268
查看>>
启动tomcat时cmd窗口一闪而过
查看>>
两个有序数列,求中间值 Median of Two Sorted Arrays
查看>>
vue路由的实现原理
查看>>
Java核心技术:Java异常处理
查看>>
Python 学习笔记一
查看>>
引入列表,将对话分类添加到对应列表中
查看>>
回文子串
查看>>
Count Numbers
查看>>
React——JSX
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
最大公约数求解
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>