题目:

忠诚

来源:

Tyvj 1038

题目大意:

给出N个数,M次询问,每次输出(a,b)中的最小值

数据范围:

m<=100000,n<=100000

样例:

10 3

1 2 3 4 5 6 7 8 9 10

2 7

3 9

1 10

2 3 1

做题思路:

曾经痴迷的线段树,现在才感到st的伟大,没有了线段树的繁琐,却依存那光速的时  间。纯RMQ不解释

知识点:

RMQ,st算法,线段树

//线段树做法

const MaxN=100010;
typetre=recordl,r,lc,rc,min:longint;{<左右边界、左右儿子、区间最小值>}end;//tre
vartree:array[0..MaxN*4] of tre;n,m,i,j,x,a,b,root,tot,ans:longint;
procedure build(vart:longint;l,r:longint);{<建树>}
begininc(tot);t:=tot;tree[t].l:=l;tree[t].r:=r;tree[t].min:=maxlongint;ifl<>r thenbeginbuild(tree[t].lc,l,(l+r)div 2);build(tree[t].rc,(l+r)div 2+1,r);end;//if
end;
procedure insert(t,i:longint);{<伪插入,其实是不断更新i到叶子前所经过的枝干的最小值>}
beginift=0 then exit;ifx<tree[t].min then tree[t].min:=x;{<更新>}iftree[tree[t].lc].r>=i then insert(tree[t].lc,i)else insert(tree[t].rc,i);
end;
procedure find(t,l,r:longint);{<查找对应区间>}
beginift=0 then exit;if(tree[t].l=l)and(tree[t].r=r) thenbeginifans>tree[t].min then ans:=tree[t].min;{<由于该区间可能跨越子树,所以做下比较>}exit;end;iftree[tree[t].lc].r>=r then find(tree[t].lc,l,r)elseiftree[tree[t].rc].l<=l then find(tree[t].rc,l,r)elsebeginfind(tree[t].lc,l,tree[tree[t].lc].r);find(tree[t].rc,tree[tree[t].rc].l,r);end;
end;
beginreadln(m,n);root:=0;tot:=0; build(root,1,m);fori:=1 to m dobeginread(x);insert(root,i);end;fori:=1 to n dobeginreadln(a,b);ans:=maxlongint;{<初始化maxlongint才能不断更新>}find(root,a,b);write(ans,' ');end;
end.

//ST做法

varf:array[0..100010,0..20]of longint;n,m,i,j,x,y,k:longint;
function min(a,b:longint):longint;
beginifa>b then exit(b);exit(a);
end;
beginreadln(n,m);fori:=1 to n doread(f[i,0]);readln;forj:=1 to trunc(ln(n)/ln(2)) dofori:=1 to n+1-1 shl j dobeginf[i,j]:=min(f[i,j-1],f[i+1 shl (j-1),j-1]);end;fori:=1 to m dobeginreadln(x,y);k:=trunc(ln(y-x+1)/ln(2));write(min(f[x,k],f[y+1-1 shl k,k]));ifi<>m then write(' ') else writeln;end;
end.

题目来源: http://www.tyvj.cn:8080/Problem_Show.asp?id=1038

Tyvj 1038 忠诚相关推荐

  1. Tyvj 1039 忠诚2

    题目: 忠诚2 来源: Tyvj 1039 题目大意: 给出N个数,M次操作,p=1时输出(a,b)中的最小值,p=2时把第x个数改成y 数据范围: m<=100000,n<=100000 ...

  2. 洛谷 P1816 忠诚

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

  3. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  4. TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘

    描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...

  5. 关于如何发现忠诚的下属的讨论

    说点我的看法,一家之言,不一定准确哈. 我觉得抛去外界的物质因素,精神因素,社会因素,来谈论忠诚,其实是不准确的.因为人是社会型的动物,且人是变化性的动物,是没有办法用简单的什么公式来推导的. 有的时 ...

  6. |Tyvj|动态规划|P1004 滑雪

    http://tyvj.cn/p/1004 由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索. #include<cstdio> #include<cstring> ...

  7. BZOJ 3224: Tyvj 1728 普通平衡树 treap

    3224: Tyvj 1728 普通平衡树 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  8. BZOJ 3223: Tyvj 1729 文艺平衡树(splay)

    速度居然进前十了...第八... splay, 区间翻转,用一个类似线段树的lazy标记表示是否翻转 ------------------------------------------------- ...

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

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

最新文章

  1. java环境变量设置
  2. 最短路径算法整理(二)
  3. Linux中vi显示中文乱码的问题
  4. 草稿-调试让本地的django项目上线到云服务器-不完整版
  5. Linux运维人员成长之路学习书籍推荐(未删减版)
  6. iptables的详细介绍及配置方法
  7. Kubernetes证书相关(CFSSL)
  8. Spring源码全解
  9. 结构梁配筋最牛插件_结构设计常识分享!结构抗震概念——强柱弱梁
  10. 有道计算机网络知识,网易有道推广介绍1 让你了解到网易的知识。。。.pptx
  11. HTML中span标签使用详解含多种实例(转)
  12. java中Decimal 小数和百分比的转换
  13. java,png,jpg,如何合并图片进行盖章,并且对印章的位置进行定位。
  14. 计算机软考证书全面分析
  15. 5G应用创新发展策略研究
  16. Sublime Text 2 - 程序员必备神器!跨平台支持Win/Mac/Linux
  17. 限制VB文本框输入的代码
  18. 2016-04-13T16:00:00.000Z时间格式转换(时差)
  19. 监理人员是否知道的电源设备安装及设备接地相关知识?
  20. MT6765/p40处理器性能/芯片参数分析

热门文章

  1. 【文献阅读】Fixed-Point-GAN,不动点GAN(2019,ICCV)
  2. 清华快速充电_什么是快速充电
  3. Vue仿饿了么app项目总结
  4. 【Arduino学习笔记】E18-D50NK红外避障传感器使用说明
  5. 二叉树的遍历(二叉树与递归算法)
  6. PyTorch快餐教程2019 (1) - 从Transformer说起
  7. 成都学python哪个机构好_成都学python人工智能哪个机构好
  8. c语言丢手帕,题手帕原文_李希圣古诗_古诗文网
  9. 视频怎么消除人声?一款视频去人声软件,轻松去除视频人声
  10. 【xinfanqie】解决网络出现“正在连接”的问题