博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4819 Mosaic D区段树
阅读量:6942 次
发布时间:2019-06-27

本文共 1873 字,大约阅读时间需要 6 分钟。

连接:

意:给出一个800×800下面的矩阵。每次更新一个点的值为以这个点为中心的长度为Li的矩阵内的最大值和最小值的平均值。而且输出这个值。

思路:线段树模板题。二维线段树就是一个树套树的情况。

题的意义就在于给我带了一个二维线段树的模板,跑了2359ms。结构体的线段树不会被卡。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PI acos(-1.0)#define maxn 1000#define INF 0x7fffffff#define eps 1e-16#define MOD 1000000009typedef long long LL;typedef unsigned long long ULL;using namespace std;int x_pos[maxn],y_pos[maxn];int n;//y最大范围struct y_line{ int left,right; int Max,Min; //int sum; int mid(){return (left+right)>>1;}};struct x_line{ int left,right; y_line yy[maxn*4]; int mid(){return (left+right)>>1;} void build_ytree(int i,int l,int r) { yy[i].Max=-INF; yy[i].Min=INF; yy[i].left=l; yy[i].right=r; if(l==r) { y_pos[l]=i; return ; } build_ytree(i<<1,l,yy[i].mid()); build_ytree(i<<1|1,yy[i].mid()+1,r); } int query_Min(int i,int y1,int y2) { if(yy[i].left==y1&&yy[i].right==y2) return yy[i].Min; if(yy[i].mid()>=y2) return query_Min(i<<1,y1,y2); if(yy[i].mid()
=y2) return query_Max(i<<1,y1,y2); if(yy[i].mid()
0;i>>=1) for(int j=y_p;j>0;j>>=1) if(j==y_p&&i==x_p) { xx[i].yy[j].Max=xx[i].yy[j].Min=num; } else if(j==y_p) { xx[i].yy[j].Max=max(xx[i<<1].yy[j].Max,xx[i<<1|1].yy[j].Max); xx[i].yy[j].Min=min(xx[i<<1].yy[j].Min,xx[i<<1|1].yy[j].Min); } else { xx[i].yy[j].Max=max(xx[i].yy[j<<1].Max,xx[i].yy[j<<1|1].Max); xx[i].yy[j].Min=min(xx[i].yy[j<<1].Min,xx[i].yy[j<<1|1].Min); }}int query_Min(int i,int x1,int y1,int x2,int y2){ if(xx[i].left==x1&&xx[i].right==x2) return xx[i].query_Min(1,y1,y2); if(xx[i].mid()>=x2) return query_Min(i<<1,x1,y1,x2,y2); if(xx[i].mid()
=x2) return query_Max(i<<1,x1,y1,x2,y2); if(xx[i].mid()
>1; change(c_x,c_y,t_need); printf("%d\n",t_need); } } return 0;}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
查看>>
训练效能提升2-4倍!京东携SparkGBM成果亮相Spark Summit 2018
查看>>
VeeValidate在vue项目里表单校验应用案例
查看>>
源码分析之ThreadLocal
查看>>
浏览器内核渲染:重建引擎
查看>>
在互联网中,每个人都是裸体的
查看>>
根据Promise/A+规范模拟实现Promise
查看>>
一个浏览器, 三分钟搭建个人博客
查看>>
[译] 基于 Metal 的 ARKit 使用指南(上)
查看>>
当代码变更遇上精准测试的总结
查看>>
Unity引擎与C#脚本简介
查看>>
细数Android系统那些DOS漏洞
查看>>
检测 TextView 是否因为设置 ellipsize 属性而显示省略号
查看>>
算法?
查看>>
SQLite 笔记
查看>>
Android插件化开发核心类ClassLoader相关详解
查看>>
Vue番外篇 -- vue.nextTick()浅析
查看>>
从放弃到入门-Yaf(细说model)
查看>>
Android数据库查看库---Android-Debug-Database
查看>>
后端小白的我,是如何成功搭建 express+mongodb 的简洁博客网站后端的
查看>>