tyvj1039忠诚2
描述 Description
老管家是一个聪明能干的人。他为财主工作了整整10年,财主为了让自已账目更加清楚。要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意。但是由于一些人的挑拨,财主还是对管家产生了怀疑。于是他决定用一种特别的方法来判断管家的忠诚,他把每次的账目按1,2,3…编号,然后不定时的问管家问题,问题是这样的:在a到b号账中最少的一笔是多少?为了让管家没时间作假他总是一次问多个问题。
在询问过程中账本的内容可能会被修改
输入格式 InputFormat
输入中第一行有两个数m,n表示有m(m<=100000)笔账,n表示有n个问题,n<=100000。
接下来每行为3个数字,第一个p为数字1或数字2,第二个数为x,第三个数为y
当p=1 则查询x,y区间
当p=2 则改变第x个数为y
输出格式 OutputFormat
输出文件中为每个问题的答案。具体查看样例。
样例输入 SampleInput
10 3
1 2 3 4 5 6 7 8 9 10
1 2 7
2 2 0
1 1 10
样例输出 SampleOutput
2 0
忠诚的升级版。加了个插入操作……
#include<cstdio>
#include<iostream>
#define maxn 200000
using namespace std;
struct trees{
int l,r,lson,rson,mini;
}tree[4*maxn];
int answer[maxn];
int a[maxn];
int n,m,treesize,len;
void buildtree(int &k,int l,int r)
{
treesize++;
k=treesize;
tree[treesize].l=l;
tree[treesize].r=r;
if(l==r)
{
tree[treesize].mini=a[l];
return;
}
int mid=(l+r)>>1;
buildtree(tree[k].lson,l,mid);
buildtree(tree[k].rson,mid+1,r);
tree[k].mini=min(tree[tree[k].lson].mini,tree[tree[k].rson].mini);
}
int ask(int k,int s,int t)
{
int l=tree[k].l,r=tree[k].r;
if(s==l&&t==r)return tree[k].mini;
int mid=(l+r)>>1;
if(t<=mid)return ask(tree[k].lson,s,t);
if(s>mid)return ask(tree[k].rson,s,t);
return min(ask(tree[k].lson,s,mid),ask(tree[k].rson,mid+1,t));
}
void change(int k,int address,int into)
{
int l=tree[k].l;
int r=tree[k].r;
if (l==r) {tree[k].mini=into;return;}
int mid=(l+r)>>1;
if (address<=mid) change(tree[k].lson,address,into);
if (address>mid) change(tree[k].rson,address,into);
tree[k].mini=min(tree[tree[k].lson].mini,tree[tree[k].rson].mini);
}
void work()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
int useless;
buildtree(useless,1,n);
for (int i=1;i<=m;i++)
{
int opr,askl,askr;
scanf("%d%d%d",&opr,&askl,&askr);
if (opr==1)answer[++len]=ask(1,askl,askr);
if (opr==2)change(1,askl,askr);
}
for (int i=1;i<=len;i++) printf("%d ",answer[i]);
}
int main()
{
work();
}
tyvj1039忠诚2的更多相关文章
- AC日记——忠诚 洛谷 P1816
题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...
- TYVJ1038 忠诚
hzw学长博客里的2048,根本停不下来! 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要 求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意. ...
- 【Tyvj1038】忠诚 线段树
题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...
- TYVJ P1038/P1039 忠诚 标签:线段树
做题记录:2016-08-12 16:30:14 //P1038 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家 ...
- RMQ——忠诚题解
题目:忠诚 描述: [题目描述] 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满 意.但是由于一些人的 ...
- tyvj1038忠诚
描述 Description 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨, ...
- TYVJ P1039 【忠诚2】
题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...
- 问题 H: 老管家的忠诚(线段树)
问题 H: 老管家的忠诚 时间限制: 0 Sec 内存限制: 128 MB提交: 54 解决: 21[提交][状态][讨论版][命题人:外部导入] 题目描述 老管家是一个聪明能干的 ...
- Tyvj1038 忠诚 (线段树)
[Tyvj1038]忠诚 线段树 题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是 ...
随机推荐
- O - 覆盖的面积 - hdu 1255(求面积)
分析:求一层的面积覆盖是非常简单的事情,不过多层面积覆盖应该怎么搞???也是比较简单的事情,只需要用两个变量记录就好了,一个记录覆盖一次的,一个记录覆盖两次的,就很容易解决了 ************ ...
- Myeclipse自动生成javabean的get和set方法
用Myeclipse开发java web程序,写javabean的时候,如果字段很多的话,写get和set方法是一件很无语和浪费时间的事情,所以Myeclipse提供了一个自动生成这些方法的功能. 首 ...
- 开发日志_Jan.9
今天主要工作为修改昨天的碰撞引擎不符合预期的部分. 经过了昨天的工作,碰撞算法已经初见雏形.但是主要有两个问题: 碰撞反弹的方向与预期不符合 碰撞后球与机器人存在一个"黏在一起"的 ...
- DataGrid( 数据表格) 组件[1]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- DNN Module - Responsive Html Tabs 3 介绍
Responsive Html Tabs 模块可以运行于DNN7及以上版本,支持响应式.用户界面较为友好,可以插入自定义的HTML. Demo This is a user-friendly, ful ...
- IFeatureClass.Search中的 Recycling 参数 - 浅谈.
语法: public IFeatureCursor Search ( IQueryFilter filter, bool Recycling); 当 Recycling 为true时,调用NextFe ...
- 随机获取oracle数据库中的任意一行数据(rownum)
最近看oracle资料的时候,了解rownum的概念,以前只知道对数据库表进行简单的增删改查: 看到了rownum的概念后,突然想到了好多业务场景应该都可以适用的,比如在进行随机发奖的时候, 我们就可 ...
- java日期操作
//字符串转日期 public static void dt7() throws ParseException { String str_date="2015---08---08" ...
- linux下enum的使用
enum T { status1, status2, } Linux下: 1.做函数返回值时enum T f():不能写成T f(): 2.if(i == status1)不能写成 if(i == T ...
- uva 10894 - Save Hridoy
#include <iostream> #include <string> #include <cstring> #include <cmath> us ...