洛谷P1816 忠诚 题解

题目描述

老管家是一个聪明能干的人。他为财主工作了整整10年,财主为了让自已账目更加清楚。要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意。但是由于一些人的挑拨,财主还是对管家产生了怀疑。于是他决定用一种特别的方法来判断管家的忠诚,他把每次的账目按1,2,3…编号,然后不定时的问管家问题,问题是这样的:在a到b号账中最少的一笔是多少?为了让管家没时间作假他总是一次问多个问题。

输入输出格式

输入格式:

输入中第一行有两个数m,n表示有m(m<=100000)笔账,n表示有n个问题,n<=100000。

第二行为m个数,分别是账目的钱数

后面n行分别是n个问题,每行有2个数字说明开始结束的账目编号。

输出格式:

输出文件中为每个问题的答案。具体查看样例。

输入输出样例

输入样例#1: 复制

10 3
1 2 3 4 5 6 7 8 9 10
2 7
3 9
1 10

输出样例#1: 复制

2 3 1

解析:

一看题目求区间最小值,哈,那必然是线段树维护区间最小值。

依靠线段树来求区间最小值,线段树板子上进行稍微改动。

将区间求和改为区间求最小值,然后进行询问,就完了。。

 1 #include <bits/stdc++.h>
 2 #define Max 500009
 3 #include <deque>
 4 int a[Max],n,m;
 5 struct Tree
 6 {
 7     int l,r,min;
 8 }t[Max];
 9 void build(int x,int l,int r)
10 {
11     t[x].l=l;t[x].r=r;
12     if(l==r) {
13         t[x].min=a[l];
14         return;
15     }
16     int mid=(l+r)/2;
17     build(x*2,l,mid);build(x*2+1,mid+1,r);
18     t[x].min=std::min(t[x*2].min,t[x*2+1].min);
19 }
20 int query(int x,int l,int r)
21 {
22     int ans=0x7fffffff;
23     if(l <= t[x].l && t[x].r <= r) return t[x].min;
24     int mid=(t[x].l+t[x].r) / 2;
25     if(l <= mid) ans = std::min(ans,query(x*2,l,r));
26     if(r > mid) ans = std::min(ans,query(x*2+1,l,r));
27     return ans;
28 }
29 int main()
30 {
31     scanf("%d%d",&n,&m);int l,r;
32     for(int i = 1 ; i <= n ; ++ i) scanf("%d",&a[i]);
33     build(1,1,n);
34     for(int i = 1 ; i <= m ; ++ i) {
35         scanf("%d%d",&l,&r);
36         printf("%d ",query(1,l,r));
37     }
38     return 0;
39 }

AC代码

转载于:https://www.cnblogs.com/handsomegodzilla/p/11240242.html

洛谷P1816 忠诚 题解相关推荐

  1. 洛谷 P1816 忠诚题解

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  2. 洛谷 P1816 忠诚

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  3. 【洛谷P1816 忠诚】线段树

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  4. 洛谷 P1816 忠诚 ST函数

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  5. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  6. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  7. 洛谷P2108学英语题解

    来我的博客里拥有更好的阅读体验:https://yyxi.ml/2020/07/23/luogu-p2108-xueyingyu/ 洛谷P2108学英语题解(c++) 题目描述 代码.思路 踩过的坑 ...

  8. 洛谷 P1077 摆花 题解

    洛谷 P1077 摆花 题解 洛谷 P1077 题目 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mmm盆.通过调查顾客的喜好,小明列出了顾客最喜欢的nnn种花,从1到nnn标号.为 ...

  9. 修改数组(洛谷P7285题题解,C++语言描述)

    题目要求 P7285题目链接 分析 这题虽然是红题,但是因为很有趣且是 Special Judge ,所以写篇题解. 乍一看,这题好麻烦啊,要综合考虑xxx和yyy,达到x−yx-yx−y的最优化. ...

最新文章

  1. kail安装和vmtools安装
  2. 后台开发必读书籍--算法导论
  3. mac远程桌面Microsoft Remote Desktop for Mac的安装与使用
  4. android studio查看字节码,使用Android studio查看Kotlin的字节码教程
  5. python的numpy库的基本用法_python numpy库np.percentile用法说明
  6. Arduino学习笔记07
  7. 如何让代码更易于维护_如何轻松地使您的网站更易于访问
  8. ADOCE打包到WinCE NK.bin镜像中
  9. POJ 1789(最小生成树)
  10. iOS 两种不同的图片无限轮播
  11. Android轻松实现语音识别
  12. Java UTC时间与本地时间互相转换
  13. Day_03——MySQL数据库查询语句练习
  14. java生成圆形二维码logo
  15. 一个包含学生信息的顺序表
  16. 深入理解SR-IOV和IO虚拟化
  17. 个人工作总结与业绩报告
  18. 加密流量分类-论文6:Learning to Classify A Flow-Based Relation Network for Encrypted Traffic Classification
  19. 什么是API网关, API 网关的作用
  20. 安川机器人程序还原_安川机器人使用说明书.pdf

热门文章

  1. C++自学笔记_文本查询程序_《C++ Primer》
  2. Use DynamicXElement to create xml
  3. Perl 变量(1)--纯变量
  4. AJAX ControlToolkit学习日志-ResizableControlExtender(23)
  5. SSH暴力破解IP大曝光
  6. 一篇文章讲清楚人工智能、机器学习和深度学习的区别和联系
  7. 阿里云学生计划领取攻略
  8. mfc作为服务端,android作为客服端进行socket通讯,android在wifi下手机与电脑的socket通信...
  9. ConcurrentHashMap 和 Hashtable 的区别
  10. java.io.file()_Java IO(一):IO和File