【线段树】hihocoder 1586 ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 I. Minimum
题意:给你一个序列(长度不超过2^17),支持两种操作:单点修改;询问区间中最小的ai*aj是多少(i可以等于j)。
只需要线段树维护区间最小值和最大值,如果最小值大于等于0,那答案就是minv*minv;
如果最大值小于等于零,那么答案就是maxv*maxv;
要是最小值小于零,最大值大于零,答案就是minv*maxv。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
#define N 140000
int maxv[N<<2],minv[N<<2];
int T,n;
void buildtree(int rt,int l,int r){
if(l==r){
scanf("%d",&minv[rt]);
maxv[rt]=minv[rt];
return;
}
int m=(l+r>>1);
buildtree(rt<<1,l,m);
buildtree(rt<<1|1,m+1,r);
maxv[rt]=max(maxv[rt<<1],maxv[rt<<1|1]);
minv[rt]=min(minv[rt<<1],minv[rt<<1|1]);
}
void update(int p,int v,int rt,int l,int r){
if(l==r){
minv[rt]=maxv[rt]=v;
return;
}
int m=(l+r>>1);
if(p<=m){
update(p,v,rt<<1,l,m);
}
else{
update(p,v,rt<<1|1,m+1,r);
}
maxv[rt]=max(maxv[rt<<1],maxv[rt<<1|1]);
minv[rt]=min(minv[rt<<1],minv[rt<<1|1]);
}
int qmin(int ql,int qr,int rt,int l,int r){
if(ql<=l && r<=qr){
return minv[rt];
}
int m=(l+r>>1),res=2147483647;
if(ql<=m){
res=min(res,qmin(ql,qr,rt<<1,l,m));
}
if(m<qr){
res=min(res,qmin(ql,qr,rt<<1|1,m+1,r));
}
return res;
}
int qmax(int ql,int qr,int rt,int l,int r){
if(ql<=l && r<=qr){
return maxv[rt];
}
int m=(l+r>>1),res=-2147483647;
if(ql<=m){
res=max(res,qmax(ql,qr,rt<<1,l,m));
}
if(m<qr){
res=max(res,qmax(ql,qr,rt<<1|1,m+1,r));
}
return res;
}
int q;
int main(){
int op,x,y;
scanf("%d",&T);
for(;T;--T){
scanf("%d",&n);
n=(1<<n);
memset(minv,0,sizeof(minv));
memset(maxv,0,sizeof(maxv));
buildtree(1,1,n);
scanf("%d",&q);
for(int i=1;i<=q;++i){
scanf("%d%d%d",&op,&x,&y);
if(op==1){
++x; ++y;
int minn=qmin(x,y,1,1,n);
int maxx=qmax(x,y,1,1,n);
if(minn>=0){
printf("%lld\n",(ll)minn*(ll)minn);
}
else if(maxx<=0){
printf("%lld\n",(ll)maxx*(ll)maxx);
}
else{
printf("%lld\n",(ll)minn*(ll)maxx);
}
}
else{
++x;
update(x,y,1,1,n);
}
}
}
return 0;
}
【线段树】hihocoder 1586 ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 I. Minimum的更多相关文章
- hihoCoder 1586 Minimum 【线段树】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1586 : Minimum 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 You are given a list of integers a0, a1, …, a2 ...
- hihocoder 1586 ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛-题目9 : Minimum【线段树】
https://hihocoder.com/problemset/problem/1586 线段树操作,原来题并不难..... 当时忽略了一个重要问题,就是ax*ay要最小时,x.y可以相等,那就简单 ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 题目9 : Minimum
时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 You are given a list of integers a0, a1, …, a2^k-1. You need t ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛
编号 名称 通过率 通过人数 提交人数 A√水题(队友写的 Visiting Peking University 91% 1122 1228 B— Reverse Suffix Array 57% 6 ...
- hihoCoder #1586 : Minimum-结构体版线段树(单点更新+区间最值求区间两数最小乘积) (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1586 : Minimum Time Limit:1000ms Case Time Limit:1000ms Memory Limit:256MB Description You are give ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 i题 Minimum(线段树)
描述 You are given a list of integers a0, a1, …, a2^k-1. You need to support two types of queries: 1. ...
- hihoCoder 1582 Territorial Dispute 【凸包】(ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1582 : Territorial Dispute 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In 2333, the C++ Empire and the Ja ...
- hihoCoder 1584 Bounce 【数学规律】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1584 : Bounce 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 For Argo, it is very interesting watching a cir ...
- hihoCoder 1578 Visiting Peking University 【贪心】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1578 : Visiting Peking University 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Ming is going to travel for ...
随机推荐
- 虚拟机出现intel vt -x 处于禁用状态打不开处理方式
处理方式 . 1 进入bios 以华硕主板为例 进入高级模式找到cpu虚拟技术 打开虚拟技术支持 其它电脑找到这个
- 海量数据排序——如果有1TB的数据需要排序,但只有32GB的内存如何排序处理?
转载:https://blog.csdn.net/fx677588/article/details/72471357 1.外排序 传统的排序算法一般指内排序算法,针对的是数据可以一次全部载入内存中的 ...
- web前端教程:用 CSS 实现三角形与平行四边形
最近在逛某个技术网站的时候,感觉文章关键词上的样式好酷炫啊,分页的样式.来张截图: 你在首页的底部也可以看到这样一个分页栏:是不是看上去还不错?下面就来看看这是如何实现的吧~ 第一种方法:利用bord ...
- 如何设置static tableview的section区域高度
重写代理方法- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { i ...
- HA集群
//硬件准备: .两个机器,相同系统 .网卡ip为:aming 192.168.11.24 aming1 192.168.11.23 //实验准备: . hostname : aming , amin ...
- java-增强for循环
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); lis ...
- Nginx-请求处理与响应
void ngx_http_init_connection(ngx_connection_t *c) { ngx_uint_t i; ngx_event_t *rev; struct sockaddr ...
- hdu 1671(字典树判断前缀)
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- AC日记——NOI2016区间 bzoj 4653
4653 思路: 线段树,指针滑动: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1000005 #def ...
- 走进 MvvmLight for Xamarin.Forms
一.Xamarin.Forms 不使用框架时的绑定 需要注意的是BindingContent,不是DataContent <ContentPage xmlns="http://xama ...