题目描述

老管家是一个聪明能干的人。他为财主工作了整整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

题解

这是一道线段树的模板题目。我参考的线段树模板来自:https://baijiahao.baidu.com/s?id=1605870136961096251&wfr=spider&for=pc。原来的模板是线段区间求和,现在改为区间求最小值。

 #include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
#define ll long long const int MAXN = ; using namespace std; ll n, m, a[MAXN], ans[MAXN<<], tag[MAXN<<]; ll ls(ll x)
{
return x<<;
} ll rs(ll x)
{
return x<<|;
} void push_up(ll p)
{
ans[p] = min(ans[ls(p)], ans[rs(p)]);
} void build(ll p, ll l, ll r)
{
tag[p] = ;
if(l == r)
{
ans[p] = a[l];
return;
}
ll mid = (l + r) >> ;
build(ls(p), l, mid);
build(rs(p), mid + , r);
push_up(p);
} void f(ll p, ll l, ll r, ll k)
{
tag[p] = tag[p] + k;
ans[p] = ans[p] + k * (r - l + );
} void push_down(ll p, ll l, ll r)
{
ll mid = (l + r)>>;
f(ls(p), l, mid, tag[p]);
f(rs(p), mid + , r, tag[p]);
tag[p] = ;
} ll query(ll q_x, ll q_y, ll l, ll r, ll p)
{
ll res = ;
if(q_x <= l && r <= q_y)
{
return ans[p];
}
ll mid = (l + r)>>;
push_down(p, l, r);
if(q_x <= mid)
{
res = min(res, query(q_x, q_y, l, mid, ls(p)));
}
if(q_y > mid)
{
res = min(res, query(q_x, q_y, mid + , r, rs(p)));
}
return res;
} int main()
{
ll e, f;
scanf("%lld%lld", &n, &m);
for(ll i = ; i <= n; i++)
{
scanf("%lld", &a[i]);
}
build(, , n);
for(ll i = ; i <= m; i++)
{
scanf("%lld%lld", &e, &f);
printf("%lld ", query(e, f, , n, ));
}
return ;
}

洛谷 P1816 忠诚题解的更多相关文章

  1. 洛谷P1816 忠诚 题解

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

  2. 洛谷 P1816 忠诚 题解

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

  3. 洛谷P1816 忠诚

    P1816 忠诚 569通过 1.5K提交 题目提供者该用户不存在 标签云端 难度普及+/提高 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 主席树的常数貌似大于线段树… TL ...

  4. 【模板】ST表 洛谷P1816 忠诚

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

  5. 洛谷——P1816 忠诚

    https://www.luogu.org/problem/show?pid=1816#sub 题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记 ...

  6. 洛谷 P1816 忠诚 ST函数

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

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

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

  8. 洛谷 P1816 忠诚

    https://www.luogu.org/problemnew/show/1816 st表模板 #include<cstdio> #include<algorithm> us ...

  9. 洛谷P1816 忠诚 分块

    分块真的是很暴力呀… 暴力查询左端,暴力查询又端点,中间整体部分直接 $O(1)$ 求出. 注意编程细节:belong[i]=(i−1)/block+1,这样可以保证序列被分成这样的: Code: # ...

随机推荐

  1. setup_function和teardown_function

    setup_function和teardown_function 所有用例开始和所有用例结束只调用一次

  2. java导出pdf功能记录

    这几天已在做处理导出pdf文件的功能,摸索了几天总算可以了.记录下这几天遇到的问题. 1.网上基本都是基于Itext5和Itext7来处理的.我最终是在Itext5上成功了,itext7应该是模板出问 ...

  3. VB.NET 读写XML

    Public Class CSysXML Dim mXmlDoc As New System.Xml.XmlDocument Public XmlFile As String Public Sub N ...

  4. CLRS10.1-7练习 - 用双队列实现栈

    算法中心思想: 始终向非空队列进行入队操作 初始化时两个队列都为空,我们对q1进行入队操作 入栈: 只需执行其中一个队列入队操作即可, 具体操作哪一个队列,用一个标记变量标记 出栈流程图 代码实现 p ...

  5. sublime text 打开总是弹框报错Unable to download ChineseLocalizations. Please view the console for more details.解决办法

    本文链接:https://blog.csdn.net/qq_36435508/article/details/92805256 依次点击软件的    Preferences->Package S ...

  6. php中的htmlspecialchars_decode()函数

    htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符. <?php $str = "This is some <b>bold&l ...

  7. 【转载】WPS通过设置密码的方式对Excel文件加密

    有时候Excel文件中可能包含一些敏感数据,此时希望对Excel文件进行加入密码的形式进行加密保护,在WPS软件和Office Excel软件中都支持对Excel文件进行密码保护,设置了密码保护的Ex ...

  8. Docker 基础篇 入门篇

    1.Docker入门 1.为什么要用docker? 相比于传统: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 由于物理机的诸多问题,后来出现了虚拟机 一个物理机可以部署多个 ...

  9. 【转】Vue.js——60分钟组件快速入门(上篇)

    文章作者:keepfool 文章出处:http://www.cnblogs.com/keepfool/ 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的 ...

  10. 把项目中的vant UI组件升级

    首先把之前 的VANT 卸载掉 npm uninstall vant 然后重新安装 一次vant npm i vant -S