hdu 4819 二维线段树,单点修改区间查询

英飞凌TC3xx的GTM模块到底有多强?从PWM生成到电机驱动,一篇讲透车载定时器核心 本文深入解析英飞凌TC3xx系列中的GTM模块在汽车电子领域的强大功能,从PWM生成到电机驱动的全链路设计。通过模块化架构和硬件级解决方案,GTM显著提升系统精度和响应速度,适用于电机控制、电源管理等复杂场景。文章结合实战经验,详细拆解GTM的技术实现和性能优势。 阅读详情


Mosaic

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)
Total Submission(s): 916    Accepted Submission(s): 402


Problem Description
The God of sheep decides to pixelate some pictures (i.e., change them into pictures with mosaic). Here's how he is gonna make it: for each picture, he divides the picture into n x n cells, where each cell is assigned a color value. Then he chooses a cell, and checks the color values in the L x L region whose center is at this specific cell. Assuming the maximum and minimum color values in the region is A and B respectively, he will replace the color value in the chosen cell with floor((A + B) / 2).

Can you help the God of sheep?
 

Input
The first line contains an integer T (T ≤ 5) indicating the number of test cases. Then T test cases follow.

Each test case begins with an integer n (5 < n < 800). Then the following n rows describe the picture to pixelate, where each row has n integers representing the original color values. The j-th integer in the i-th row is the color value of cell (i, j) of the picture. Color values are nonnegative integers and will not exceed 1,000,000,000 (10^9).

After the description of the picture, there is an integer Q (Q ≤ 100000 (10^5)), indicating the number of mosaics.

Then Q actions follow: the i-th row gives the i-th replacement made by the God of sheep: xi, yi, Li (1 ≤ xi, yi ≤ n, 1 ≤ Li < 10000, Li is odd). This means the God of sheep will change the color value in (xi, yi) (located at row xi and column yi) according to the Li x Li region as described above. For example, an query (2, 3, 3) means changing the color value of the cell at the second row and the third column according to region (1, 2) (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 2), (3, 3), (3, 4). Notice that if the region is not entirely inside the picture, only cells that are both in the region and the picture are considered.

Note that the God of sheep will do the replacement one by one in the order given in the input.
 

Output
For each test case, print a line "Case #t:"(without quotes, t means the index of the test case) at the beginning.

For each action, print the new color value of the updated cell.
 

Sample Input
  
1 3 1 2 3 4 5 6 7 8 9 5 2 2 1 3 2 3 1 1 3 1 2 3 2 2 3
 

Sample Output
  
Case #1: 5 6 3 4 6
 

Source
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:   5201  5200  5199  5198  5197 
 

二维线段树题。

二维线段树有两种,一种是线段树嵌套线段树。第二种是矩形树,将区间分成上下左右两个区间

第一种,常数较小速度比较快写起来也相对没那么长。但是缺点是外层线段树无法懒惰更新(或者是我不会吧?),只能用于区间查询单点更新或者单点查询区间更新。

第二种,常数大速度慢情况比较多,但是能懒惰更新,因为其实还是同一个线段树,只不过二叉变为四叉罢了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

#define maxn 801
#define inf 0x3f3f3f3f
int maxi[maxn*3][maxn*3];
int mini[maxn*3][maxn*3];
int a[maxn][maxn];
int n;
int val;  //修改的值
int x, y; //修改点,设为全局变量就不用传到参数里
int x1, x2, y1, y2; //查询的区间
int crx;  //只表示一行的外层线段树节点编号
int cmax, cmin; //记录查询区间的最大值最小值

void buildy(int rx, int ry, int l, int r)
{
  if(l == r){
    if(rx == crx){        //外层线段树只表示一行,l==r,则这个为点,直接赋值
        maxi[rx][ry] = mini[rx][ry] = a[x][l];
    }
    else{                 //外层线段树是一段,则为一列的值,所以由rx(外层)的左子树和右子树更新(也就是同一列的上下区域)
        int lrx = rx<<1, rrx = rx<<1|1;       
        maxi[rx][ry] = max(maxi[lrx][ry], maxi[rrx][ry]);
        mini[rx][ry] = min(mini[lrx][ry], mini[rrx][ry]);
    }
    return;
  }

  int m =(l+r)>>1;
  int lc = ry<<1, rc = ry<<1|1;
  buildy(rx, lc, l, m);
  buildy(rx, rc, m+1,r);
  maxi[rx][ry] = max(maxi[rx][lc], maxi[rx][rc]);
  mini[rx][ry] = min(mini[rx][lc], mini[rx][rc]);
}

void buildx(int rx, int l, int r)
{
  int m = (l+r)>>1;
  if(r > l){
    buildx(rx<<1, l, m);
    buildx(rx<<1|1, m+1,r);
  }
  if(l == r) {crx = rx; x = l;}
  buildy(rx, 1, 1, n);
}

void updatey(int rx, int ry, int l, int r)
{
  if(l == r){
    if(rx == crx)
        maxi[rx][ry] = mini[rx][ry] = val;
    else{
        int lrx = rx<<1, rrx = rx<<1|1;
        maxi[rx][ry] = max(maxi[lrx][ry], maxi[rrx][ry]);
        mini[rx][ry] = min(mini[lrx][ry], mini[rrx][ry]);
    }
    return;
  }

  int m = (l+r)>>1;
  int lc = ry<<1, rc =ry<<1|1;
  if(y <= m)
    updatey(rx, lc, l, m);
  else
    updatey(rx, rc, m+1, r);
  maxi[rx][ry] = max(maxi[rx][lc], maxi[rx][rc]);
  mini[rx][ry] = min(mini[rx][lc], mini[rx][rc]);
}

void updatex(int rx, int l, int r)
{
  int m = (l+r)>>1;
  int lc = rx<<1, rc =rx<<1|1;
  if(r > l){
    if(x <= m)
        updatex(lc, l ,m);
    else
        updatex(rc, m+1, r);
  }
  if(l == r) crx = rx;
  updatey(rx, 1, 1, n);
}

void qy(int rx, int ry, int l, int r)
{
  if(y1 <= l && y2 >= r){
    cmin = min(cmin, mini[rx][ry]);
    cmax = max(cmax, maxi[rx][ry]);
    return;
  }

  int m = (l+r)>>1;
  int lc = ry<<1, rc =ry<<1|1;
  if(y1 <= m)
    qy(rx, lc, l, m);
  if(y2 > m)
    qy(rx, rc, m+1, r);
}

void qx(int rx, int l, int r)
{
  if(x1 <= l && x2 >= r){
    qy(rx, 1, 1, n);
    return;
  }


  int m = (l+r)>>1;
  int lc = rx<<1, rc =rx<<1|1;
  if(x1 <= m)
    qx(lc, l, m);
  if(x2 > m)
    qx(rc, m+1, r);

}

int main()
{
  int t, cnt = 1;
  scanf("%d", &t);
  while(t--){
    memset(maxi, -inf, sizeof(maxi));
    memset(mini, inf, sizeof(mini));
    printf("Case #%d:\n", cnt++);

    scanf("%d", &n);
    buildx(1, 1, n);
    for(int i = 1; i<=n; i++)
      for(int j=1; j<=n; j++)
        scanf("%d", &a[i][j]);
    buildx(1, 1, n);

    int  l;
    int q;
    scanf("%d",&q);
    while(q--){
      scanf("%d%d%d", &x, &y, &l);
      l>>=1;
      x1 = max(1, x-l); x2 = min(n, x+l);
      y1 = max(1, y-l); y2 = min(n, y+l);
      cmax = -inf, cmin = inf; qx(1, 1, n);
      val = (cmin+cmax)>>1;
      printf("%d\n", val);
      crx=-1; updatex(1, 1, n);
    }
  }
}



YOLOv8改进:卷积篇 | 保姆级探索动态蛇形卷积 (Dynamic Snake Convolution) 的实现与应用 动态蛇形卷积是一种新的卷积操作,它能够更好地捕捉图像中的细节信息。传统卷积核的形状和大小是固定的,而动态蛇形卷积则允许卷积核在不同的位置动态调整其形状,以更好地适应输入数据的特点。这种灵活性使得动态蛇形卷积在处理复杂背景和细节丰富的图像时具有显著优势。我们先定义一个基本的动态蛇形卷积模块。这个模块将作为YOLOv8卷积层的替代。为了全面集成动态蛇形卷积,我们需要修改YOLOv8的模型定义,将所有的基础卷积层替换为我们的SnakeConv模块。 阅读详情

相关推荐

图生文【学习中】

图生文:提供图像,把图像对应的信息用文本描述出来

qq_19072921的博客 1787

线段树详解(单点修改+区间修改和查询)

【...】 把之前做的线段树的理论总结做了一个整合和一点修改。 线段树不能只是会用板子而已,要理解并且熟练,不假思索分分钟就能敲出来才行。 单点修改+区间修改和查询 例题+代码 目录 【线段树】 【引入】 【概述】 【单点修改和查询】 【建树】 【单点修改】 【区间查询最小值】 【区间查询区间和】 【区间修改和查询】 【延迟标记】 【标记下传】 【标记永久化】 ...

菜鸡成长史 1万+

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4377

HDU 4819 —— Mosaic(二维线段树)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4819

hongrock的专栏 738

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar

新建虚拟屏幕参考文献。

专注机器学习之路 7485

西门子AI面试问答(STAR法则回答实例)

通过建立良好的沟通渠道、倡导透明和积极的沟通,并建立信任和共享目标的文化,我成功地改善了团队合作的氛围和效果。对于一些存在分歧和冲突的情况,我采用了积极的解决问题的态度,促进双方的沟通和理解,寻找共同的利益点和解决方案。我的成果得到了评委和观众的认可,并为我的学术发展和进一步的科学研究奠定了基础。首先,我主动与团队成员进行一对一的沟通,倾听他们的观点和意见,了解他们在合作中遇到的问题和需求。我还参加了学校组织的科学俱乐部和研究小组,与其他热衷科学的同学一起进行讨论和实验,加深我的理解和实践技能。

kashine的博客 7249

HDU---4819:Mosaic【二维线段树】

题意: 给定一个N*N的矩阵,每个格子都有一个数,再给出Q个询问,每次询问以(x,y)为中心的边长为L的正方形矩阵中的最大值和最小值,并修改(x,y)的值为(MAX+MIN)/2 分析: 1)四叉树 对于查询矩阵的最值+修改问题,考虑二维线段树,参照一维线段树的写法:每次将区间二分成两个子区间,对应矩阵应对X,Y同时二分,也就是4个子矩阵,即左上、右上、左下,右下四部分,所以要建一颗四叉树...

KobeDuu 444

RT-DETR训练前的准备,将数据集划分成训练集、测试集验证集(附完整脚本及使用说明)

在计算机视觉领域,当我们着手训练一个模型时,。其中,将数据集划分为和更是一项基础性且关键的操作。这篇博客分析了这一划分背后的原因、其重要意义以及如何通过代码实现,帮助大家更好地理解和运用这一技巧,。

Limiiiing的博客 906

hdu 4819(裸二维线段树)

树套树,这里查询方块的最大值+最小值/2,并在x,y处更新它 #include using namespace std; typedef long long ll; typedef unsigned long long ull; #define clr(x,y) memset(x,y,sizeof x) #define INF 0x3f3f3f3f const int maxn = 800

Everything can be done! 447

【x265编码器】章节6——x265的码率控制

对于CRF模式而言,右边这部分是是固定值m_rateFactorConstant,在初始化的时候确定,跟分辨率,qCompress这个参数是外部可设参数,默认值0.6,因此QP的选择只跟编码复杂度有关,跟码率无关,编码复杂度越高,QP值越高,因此可以一定程度上说CRF模式是恒定质量的编码模式。其中Complex表示当前帧的编码复杂度,x265中用lookahead模块计算的SATD作为衡量当前帧的复杂度,c为模型参数,qscale是率失真优化中的拉格朗日乘子,R为编码当前帧需要的比特数。

vcvdv123的博客 1万+

PCL点云DBSCAN聚类算法:基于密度的点云聚类

核心点是在给定半径内拥有足够多邻居点的点,边界点是在给定半径内没有足够多邻居点但是位于核心点的邻域内的点,噪声点是既不是核心点也不是边界点的点。本文将介绍PCL中的DBSCAN(基于密度的空间聚类应用噪声)算法,用于点云数据的聚类。上述示例代码首先从PCD文件中读取点云数据,并设置了DBSCAN聚类的参数,包括邻域搜索半径(epsilon)和邻域内最小点数(min_points)。需要注意的是,示例代码中的点云数据格式为pcl::PointXYZ,如果使用其他类型的点云数据,需要相应地修改代码。

LpmShell的博客 1238

二维线段树——区间最值系列

最近这几天学习了一下二维线段树,二维线段树主要有两种写法,四分树和树套树,暂时还没写过四分树,因为这个东西确实不常用,而且不好写也不好调。 树套树的写法思路其实不难,首先我们知道,我们通常的线段树的操作都是在线段上进行的,即一维的,当推广到二维上,即矩阵时,我们就把它叫做二维线段树。 二维线段树其实就是我们再操作时先找到对应x轴的区间(即第一维),之后再找到对应y轴的区间(即第二维),进行相...

mumei的博客 2854

Android16 自定义HAL层适配一些VINTF和SELINUX问题修改

在RK里面一般权限矩阵在/rockchip/common/manifests/目录,我这版Android16的代码比较特殊,这里重点修改/device/rockchip/rockchip_generic/manifests/frameworks_compatibility_matrix.xml这个文件,不同的版本注册方式不同,在。hal_ruip_default.te,hal_ruip.te,attributes文件。拓展策略的方式添加,但是在Android16里面发现用不了。发现HAL层服务注册成功了。

tzj1058756809的博客 242

二维线段树

维护一个矩阵,实现以下几个需求: ①:①:①:单点修改,区间查最值 ②:②:②:区间加,区间查和 ③:③:③:区间修改(递增),区间查最值 二维线段树本质上是树套树 因此无法实现 pushdownpushdownpushdown,用标记永久化替代 暂时无法满足任意模式的区间修改,也可能是我太菜了 注意修改后的 mergemergemerge,只针对所修改区间进行 mergemergemerge 即...

Scar_Halo 2085

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdoj 4819 Mosaic 【二维线段树 单点更新 区间查询】

题目链接:hdoj 4819 MosaicMosaicTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) Total Submission(s): 1394 Accepted Submission(s): 601Problem Description The God o

世界很大 734

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU 4819:单点更新,区间查询的二维线段树

我越来越觉得之前自己的代码写的就跟shi一样…… 题意很简单,矩阵中指定一个方形

暗黑ZX Cyberwind 763

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

二维线段树(模板)+HDU 4819

好久没有研究数据结构了,今天看到了一个二位ST表的题目,心里突然就想到了二位线段树,于是决定写写,后来发现坑还是很深的……         首先,我们很容易想到的方法是对于二维的,把原本的一维二叉线段树,变成一个二维的四叉线段树。这个的话更容易理解,也貌似很好写很短很漂亮,但是当然了,有很大的缺点就是速度很慢。我试过写了一个发现 HDU 4819 直接tle了,然后非常愤怒的放弃了这种方法,当然可能是我写错了。这里关于这种方式,我给一个链接,这里面配合了很多图片,讲得很好, 点击此处打开链接 但是代码风格和

alpc_qleonardo 970

HDU4819:Mosaic(二维线段树简单模板,树套树,单独修改,区间查询)

二维线段树模板题之一

蒲公英殇的博客 371

HDU 4819 Mosaic(二维线段树)

Mosaic Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Total Submission(s): 2691    Accepted Submission(s): 1183 Problem Description The God of sheep decides t...

GYH0730的博客 329

HDU 4819 Mosaic(二维线段树单点更新+区间查询+自己的写法模板)

The God of sheep decides to pixelate some pictures (i.e., change them into pictures with mosaic). Here's how he is gonna make it: for each picture, he divides the picture into n x n cells, where each cell is assigned a color value. Then he chooses a cell,

HJY 514

HDU 4819 Mosaic(二维线段树区间查询+单点更新模板)

The God of sheep decides to pixelate some pictures (i.e., change them into pictures with mosaic). Here's how he is gonna make it: for each picture, he divides the picture into n x n cells, where each cell is assigned a color value. Then he chooses a cell,

HJY 700

HDU 4819 Mosaic (二维线段树)

题意:            二维线段树,查询区间最大最小值,修改单点。 思路:            树套树,树和树间各写各的操作,注意conbine(自下而上的结合)和trans(自上而下的连接)即可。 代码: #include using namespace std; #define ls l,mid,rt*2,id #define rs mid+1,r,rt*2+1,id #d

DT2131 408

Hdu4819 Mosaic 二维线段树维护区间最值+单点更新

Mosaic Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Total Submission(s): 2077    Accepted Submission(s): 927 Problem Description The God of sheep

kyoma的博客 508

树套树-线段树套线段树

线段树套线段树简单应用。

ZigZagK的博客 4825

HDU - 4819Mosaic (二维线段树)

最终板子(单点修改+区间查询最值/矩阵和)别用结构体写了,又乱空间复杂度又高…板子题没啥好说的,维护最值就行。注意线段树开4倍空间!

qq_53398102的博客 202

NOI数据结构:二维线段树

二维线段树专题 二维线段树专题_wangheng-优快云博客_二维线段树 二维线段树 - 英雄哪里出来 - C++博客 UVA 11297 线段树套线段树(二维线段树)_园荐_博客园 浅谈二维线段树 浅谈二维线段树 - TRTTG - 博客园 POJ 2155 Matrix (二维线段树) POJ 2155 Matrix (二维线段树)_每一次AC都是一种感动-优快云博客 [luogu3397]地毯(二维线段树组) [luogu3397]地毯(二维线段树组)_fl_334正

青少年趣味编程 467
上一篇: poj 2887 块状数组/线段树
下一篇: poj 2155 二维树状数组/区间更新单点查询
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值