codeforces1093G Multidimensional Queries 【线段树】
题目分析:
搜索2^k种情况,线段树分别处理就行了,正确性明显。
代码:
#include<bits/stdc++.h>
using namespace std; const int maxn = ; int n,k;
struct node{int x[];}a[maxn]; int Tmax[<<][maxn*],Tmin[<<][maxn*]; void Modify(int now,int tl,int tr,int dt,int pos){
if(tl == tr){
int ans = ;
for(int i=;i<k;i++){
if(dt & (<<i))ans += a[tl].x[i];
else ans -= a[tl].x[i];
}
Tmax[dt][now] = Tmin[dt][now] = ans;
}else{
int mid = (tl+tr)/;
if(pos <= mid) Modify(now<<,tl,mid,dt,pos);
else Modify(now<<|,mid+,tr,dt,pos);
Tmax[dt][now] = max(Tmax[dt][now<<],Tmax[dt][now<<|]);
Tmin[dt][now] = min(Tmin[dt][now<<],Tmin[dt][now<<|]);
}
} void Modifydfs(int now,int dt,int pos){
if(now == k) Modify(,,n,dt,pos);
else{Modifydfs(now+,dt,pos); Modifydfs(now+,dt+(<<now),pos);}
} pair<int,int> query(int now,int tl,int tr,int l,int r,int dt){
if(tl >= l && tr <= r) return make_pair(Tmax[dt][now],Tmin[dt][now]);
if(tl > r || tr < l) return make_pair(-1e9,1e9);
int mid = (tl+tr)/;
pair<int,int> a1 = query(now<<,tl,mid,l,r,dt);
pair<int,int> a2 = query(now<<|,mid+,tr,l,r,dt);
return make_pair(max(a1.first,a2.first),min(a1.second,a2.second));
} int dfs2(int now,int dt,int l,int r){
if(now == k) {
pair<int,int> ans = query(,,n,l,r,dt);
return ans.first-ans.second;
}else{return max(dfs2(now+,dt,l,r),dfs2(now+,dt+(<<now),l,r));}
} void read(){
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++){
for(int j=;j<k;j++) scanf("%d",&a[i].x[j]);
}
for(int i=;i<=n;i++) Modifydfs(,,i);
} void work(){
int q; scanf("%d",&q);
for(int i=;i<=q;i++){
int cas; scanf("%d",&cas);
if(cas == ){
int now; scanf("%d",&now);
for(int j=;j<k;j++) scanf("%d",&a[now].x[j]);
Modifydfs(,,now);
}else{
int l,r; scanf("%d%d",&l,&r);
int maxmum = dfs2(,,l,r);
printf("%d\n",maxmum);
}
}
} int main(){
read();
work();
return ;
}
codeforces1093G Multidimensional Queries 【线段树】的更多相关文章
- CF 1093G Multidimensional Queries——线段树(消去绝对值符号)
题目:http://codeforces.com/contest/1093/problem/G 只好看看题解:https://codeforces.com/blog/entry/63877 主要是把绝 ...
- HDU 4027 Can you answer these queries? (线段树区间修改查询)
描述 A lot of battleships of evil are arranged in a line before the battle. Our commander decides to u ...
- hdu 4027 Can you answer these queries? 线段树区间开根号,区间求和
Can you answer these queries? Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/sho ...
- Light OJ-1082 - Array Queries,线段树区间查询最大值,哈哈,水过~~
...
- HDU4027 Can you answer these queries? —— 线段树 区间修改
题目链接:https://vjudge.net/problem/HDU-4027 A lot of battleships of evil are arranged in a line before ...
- HDU-4027-Can you answer these queries?线段树+区间根号+剪枝
传送门Can you answer these queries? 题意:线段树,只是区间修改变成 把每个点的值开根号: 思路:对[X,Y]的值开根号,由于最大为 263.可以观察到最多开根号7次即为1 ...
- Codeforces Round #590 (Div. 3) D. Distinct Characters Queries(线段树, 位运算)
链接: https://codeforces.com/contest/1234/problem/D 题意: You are given a string s consisting of lowerca ...
- HDU 4027 Can you answer these queries?(线段树,区间更新,区间查询)
题目 线段树 简单题意: 区间(单点?)更新,区间求和 更新是区间内的数开根号并向下取整 这道题不用延迟操作 //注意: //1:查询时的区间端点可能前面的比后面的大: //2:优化:因为每次更新都 ...
- hdu 4027 Can you answer these queries? 线段树
线段树+剪枝优化!!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #includ ...
随机推荐
- RabbitMQ 惰性队列Lazy Queue
RabbitMQ 队列分为几种类型,按照不同维度来分,可以分为排他性队列.普通队列.延迟队列.惰性队列.发布订阅队列等. 今天我们讨论的主角是惰性队列 Lazy Queue.众所周知,队列可以存储消息 ...
- linux if -d -e -f表达的意思
文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L ...
- mariadb(第五章)视图、事物、索引、外键
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...
- python之面向对象3
面向对象介绍 一.面向对象和面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点 ...
- Leetcode 665. Non-decreasing Array(Easy)
Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...
- Python-常见面试题-持续更新
1.请你简要介绍一下Python的生成器是什么 答:Python生成器是一个返回可以迭代对象的函数,可以被用作控制循环的迭代行为. 生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用 ...
- Python 内置库 sys用法
sys模块功能众多,这边先学习几个常用的方法sys常见函数列表① sys.argv: 实现从程序外部向程序传递参数.其实sys.argv[]就是一个列表,里面的项为用户输入的参数,但是sys.argv ...
- 分布式Tomcat session会话Sticky Sessions问题
分布式session会话Sticky Sessions - tomcat_baby的专栏 - CSDN博客https://blog.csdn.net/tomcat_baby/article/detai ...
- mongoDB 安装和配置环境变量,超详细版本
下载mongoDB进行安装:https://www.mongodb.com/ 到Community Se ...
- 调整分区大小 转载--------------http://blog.csdn.net/perfectzq/article/details/73606119
centos7重新调整分区大小 centos 7 调整 root 和 home 的容量大小 查看磁盘的空间大小: df -h 备份/home : cp -r /home/ homebak/ 卸载 ...