BZOJ1176[Balkan2007] Mokia

Yolov5自学笔记之一--从入门到入狱,功能强大不要乱用(实现yolov5的基本功能使用流程及训练自己的数据集) 零基础自学yolov5,学会简单使用和训练自己的数据集,在自己工作中使用 阅读详情

原题链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1176

Mokia

Description

维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000.

Input

第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小

接下来每行为一下三种输入之一(不包含引号):

“1 x y a”

“2 x1 y1 x2 y2”

“3”

输入1:你需要把(x,y)(第x行第y列)的格子权值增加a

输入2:你需要求出以左下角为(x1,y1),右上角为(x2,y2)的矩阵内所有格子的权值和,并输出

输入3:表示输入结束

Output

对于每个输入2,输出一行,即输入2的答案

Sample Input

0 4
1 2 3 3
2 1 1 3 3
1 2 2 2
2 2 2 3 4
3

Sample Output

3
5

HINT

保证答案不会超过int范围

题解

树套树是不可能树套树了,这辈子都不可能树套树了, KD Tree K D   T r e e 又不会,只能用 cdq c d q 才能勉强 AC A C 这样子。。。

将一个询问以四个顶点拆成四个询问,其他的正常做就好了。

代码
#include<bits/stdc++.h>
using namespace std;
struct sd{int op,x,y,val,id,t;};
const int M=2e6;
int w,s,base=1,sum[M<<2],ans[M],tot,cot;
sd tmp[M],ope[M];
bool operator <(sd a,sd b)
{
    if(a.x!=b.x)return a.x<b.x;
    if(a.y!=b.y)return a.y<b.y;
    return a.op<b.op;
}
void add(int v,int s){v+=base;for(;v;v>>=1)sum[v]+=s;}
int query(int ri)
{
    int ans=0,le=base;ri+=base+1;
    for(;le^ri^1;le>>=1,ri>>=1)
    {
        if(le&1^1)ans+=sum[le+1];
        if(ri&1)ans+=sum[ri-1];
    }
    return ans;
}
void cdq(int le,int ri)
{
    if(le==ri)return;
    int mid=le+ri>>1,p1=le,p2=mid+1;
    for(int i=le;i<=ri;++i)
    {
        if(ope[i].t<=mid&&!ope[i].op)add(ope[i].y,ope[i].val);
        if(ope[i].t>mid&&ope[i].op)ans[ope[i].id]+=ope[i].val*query(ope[i].y);
    }
    for(int i=le;i<=ri;++i)if(ope[i].t<=mid&&!ope[i].op)add(ope[i].y,-ope[i].val);
    for(int i=le;i<=ri;++i)
    if(ope[i].t<=mid)tmp[p1++]=ope[i];
    else tmp[p2++]=ope[i];
    for(int i=le;i<=ri;++i)ope[i]=tmp[i];
    cdq(le,mid);cdq(mid+1,ri);
}
void in()
{
    int op,a,b,c,d;
    scanf("%d%d",&s,&w);
    while(base<w)base<<=1;
    while(1)
    {
        scanf("%d",&op);
        if(op==1)scanf("%d%d%d",&a,&b,&c),ope[++tot]=(sd){0,a,b,c,0,tot};
        else if(op==2)
        {   
            scanf("%d%d%d%d",&a,&b,&c,&d);
            ope[++tot]=(sd){1,a-1,b-1,1,++cot,tot};
            ope[++tot]=(sd){1,a-1,d,-1,cot,tot};
            ope[++tot]=(sd){1,c,b-1,-1,cot,tot};
            ope[++tot]=(sd){1,c,d,1,cot,tot};
        }
        else break;
    }
}
void ac()
{
    sort(ope+1,ope+1+tot);
    cdq(1,tot);
    for(int i=1;i<=cot;++i)
    printf("%d\n",ans[i]);
}
int main()
{
    in();ac();
    return 0;
}
基于STM32设计的4G远程视频侦查小车(图传+远程控制+EMQX+MQTT)(204) 当前设计了一款基于STM32F103ZET6主控芯片和废旧Android手机改造的4G侦查小车。该设计充分利用已有的智能手机硬件资源,实现摄像头画面的实时采集与上传,以及远程控制功能。这样的设计不仅降低了成本,而且充分利用了废旧手机中高性能的硬件资源,如摄像头、4G通信模块和电池等,实现了资源的有效循环利用。 阅读详情

相关推荐

从智能家居到智慧城市:AI Agent Harness Engineering 作为统一控制中枢

我们可以把每个独立的智能系统看作一根带有独立功能的电线:智能家居Agent是负责家庭设备控制的电线,社区Agent是负责社区管理的电线,城市交通Agent是负责交通调度的电线,而AHE就是把这些分散的电线整合起来的「智能线束」:它不仅负责把不同接口、不同协议、不同层级的Agent连接起来,还提供统一的编排、调度、协同、观测能力,实现全局效用最大化的智能决策。

AI Agent Harness Engineering 202

【bzoj】【1176】【mokia】【cdq分治】

Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M Input 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号): "1 x y a" "2 x1 y1 x2 y2" "3" 输入1:你需要把(x,y)(第x行第y列)的格子

sunshinezff的专栏 673

大尺寸智能车的CAN驱动控制器制作(一)

本驱动板使用8个半H桥BTS7960驱动,使用CAN接口于车体主控制器通讯,最大承受电压48V 电流20A ,主控为STM32F103VET6,电机控制频率为18KHz,CAN通讯芯片为TJA1042T,全驱动板6-24V宽电压供电,采用24V降5V,5V降3.3V的方案供电,其中经过AMS1117作为降压芯片,可以有效降低主控损毁几率。在这里可以看到555电机相比于其他电机的功率大很多,所以需要大功率的电机驱动,在以往的电机驱动选型中选择了TB6612,L298N等小功率电机驱动。

技术的力量能够改变世界 569

Mokia【题解】

前言 刚开始开心的二维树状数组(真裸),后面发现他在故意卡树状数组(W有200w)离散化都不行. 所以~~开心~~CDQ。 题面 戳一下就好了。 吐槽 特意上网搜了一下mokia,发现是盗版nokia。这年头,洛基亚还有盗版,盗版比正版还火,都用来出题 sol CDQ除了能用来解决N维偏序以外,好像就没什么了,所以转换成三位偏序就好了。 具体来说就是,对于加人这种操作,记一下加的...

JH_2002的博客 366

audio框架学习-Audio_Flinger分析

文章目录一、代码位置二、audio服务启动2.1 main服务2.2 audioflinger添加到系统服务中2.3 audioflinger的对外接口 之前记录过audioTrack的笔记,这次继续参考audioFlinger相关的代码并做笔记; 参考文档:https://www.cnblogs.com/innost/archive/2011/01/15/1936425.html和https://blog.youkuaiyun.com/zyuanyun/article/details/60890534?spm=100

永不秃头的程序员的博客 2135

0欧电阻、电感、磁珠单点接地时有什么区别?

0欧电阻、电感、磁珠单点接地时有什么区别? #电阻,#电感,#磁珠 一、0欧姆电阻 重点介绍:模拟地和数字地单点接地。 只要是地,最终都要接到一起,然后入大地。如果不接在一起就是“浮地”,存在压差,容易积累电荷,造成静电。地是参考0电位,所有电压都是参考地得出的,地的标准要一致,故各种地应短接在一起。 人们认为大地能够吸收所有电荷,始终维持稳定,是最终的地参考点。虽然有些板子没有接大地,但发电厂是接大地的,板子上的电源最终还是会返回发电厂入地。如果把模拟地和数字地大面积直...

FAguangdeer的博客 447

BZOJ1176: [Balkan2007]Mokia

BZOJ1176算得上是CDQ分治三维偏序的模板题了吧QAQ。 我们就把查询操作容斥一下,就变成了求sum(1,1,x2,y2)−sum(1,1,x1−1,y2)−sum(1,1,x2,y1−1)+sum(1,1,x1−1,y1−1)sum(1,1,x2,y2)-sum(1,1,x1-1,y2)-sum(1,1,x2,y1-1)+sum(1,1,x1-1,y1-1) 那么相当于我们只需要维护一个

Heret1c 809

基于MYD-YT153与AD7616的16通道高速ADC采集系统实战指南

在嵌入式系统与工业数据采集领域,模拟信号采集是连接物理世界与数字系统的关键技术。其核心原理是通过模数转换器(ADC)将连续的模拟电压信号转换为离散的数字码值,供处理器处理。这项技术的价值在于实现了对温度、压力、振动等关键物理量的精确感知与数字化,是工业自动化、设备监测、科学实验等场景的基石。本文聚焦于**多通道**、**高精度**采集这一常见需求,深入剖析如何利用全志T153处理器的LocalBus并行总线接口,高效驱动ADI的16位、16通道同步采样ADC芯片AD7616,构建一个稳定可靠的高速数据采集系

weixin_30335353的博客 443

bzoj1176【Balkan2007】Mokia

树状数组+CDQ分治

AaronPolaris 5079

基于电子海图的水面无人艇全局路径规划

Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基于电子海图的水面无人艇全局路径规划)   该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Gl...

weixin_30797199的博客 1590

流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)

流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)

qw225967的博客 7339

[BZOJ1176] [Balkan2007]Mokia/[BZOJ2683] 简单题

传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1176题目大意支持对二维平面上的点加以及查询矩形内的权值和题解范围达到不能建二维树状数组,所以CDQ分治来做 首先把每个查询拆成4个,即用二维前缀和求解矩阵权值和的方式拆解 然后CDQ就好了,注意细节const maxn=2000000; maxm=200000; var

slongle的专栏 682

Gromacs 模拟昆虫 P450 解毒酶与农药结合完整指南,仅供参考!

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1240

bzoj 1176 [Balkan2007]Mokia

CDQ分治+树状数组

我要吃熊猫 366

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

bzoj1176: [Balkan2007]Mokia

题目链接 bzoj1176: [Balkan2007]Mokia 题解 cdq分治 代码 #include<cstdio> #include<algorithm> inline int read() { int x = 0,f = 1; char c = getchar(); while(c < '0' || c >...

agtvo48266的专栏 172

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

bzoj1176 [Balkan2007]Mokia

http://www.elijahqi.win/2018/01/14/bzoj1176-balkan2007mokia/ ‎ Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M Input 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号): “1 x y a”

Elijahqi 336

[BZOJ1176] [Balkan2007]Mokia

CDQ分治 树状数组

srand(time(0)) 528

bzoj 1176: [Balkan2007]Mokia

1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MB Submit: 2020  Solved: 901 [Submit][Status][Discuss] Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M Input

lethalboy 332

BZOJ1176: [Balkan2007]Mokia【CDQ+树状数组】

1176: [Balkan2007]Mokia 将询问分成四部分,然后CDQ分治+树状数组就可以了,三个关键字为{t,x,y} #include<cstdio> #include<algorithm> using namespace std; const int MAXN=200005; struct xcw{int x,y,f,t,p;}a[MAXN],t[MAXN]; ...

XSamsara的博客 AFO 304

【BZOJ 1176】【Balkan 2007】Mokia

http://www.lydsy.com/JudgeOnline/problem.php?id=1176 分治的例题 把每个询问拆成四个询问,整体二分里x坐标递增,按x坐标扫的时候用树状数组维护y坐标前缀和。 一开始想复杂了,按cdq分治先solve左边再处理中间再solve右边,这样每次都要对x坐标排序,常数巨大,T了好几次TwT 后来参考了别人的代码,发现自己一开始就想复杂了...

as2886089的博客 145

BZOJ 1176 [Balkan2007]Mokia CDQ分治

题目大意: 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M POJ1195的加强版 没记错的话上午这题还没有中文题目描述的说0.0 好迅速 首先这题看到W就知道二维树状数组挂了 看到M就发现离散化了也搞不了 0.0 这题似乎是CDQ分治被发现之后第二个解决的题目。。。不过只有会员才知道的世界,今天反应过来刷刷。。。 修改和询问

世界 3516

BZOJ 1176: [Balkan2007]Mokia CDQ分治

第一道CDQ分治.... 以下来自  陈丹琦 的 从《Cash》谈一类分治算法的应用: 算法分析 这个问题是IOI 2000 Mobile的加强版:Mobile中W≤1000,就可以利用二树状数组在O(log22n)的时间复杂度内维护出操作1)和操作2).这个问题中W很大,开二维树状数组O(W2)的空间显然吃不消,考虑使用动态空间的线段树,最多可能达到操作次数 * (log2W)

码代码的猿猿 1009

Bzoj1176 [Balkan2007]Mokia

Time Limit:30 SecMemory Limit:162 MBSubmit:2000Solved:890 Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Input 第一行两个整...

dezhen7015的博客 206

[BZOJ1176][[Balkan2007]Mokia][CDQ分治]

[BZOJ1176][[Balkan2007]Mokia][CDQ分治]题目大意:维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000.思路:一道双倍经验题,另一题提交地址:http://www.lydsy.com/JudgeOnline/problem.php?id=2683这应该是一道

羽裳 315

BZOJ1176 [Balkan2007]Mokia cdq分治

复习一下cdq分治,寒假过去忘的差不多了。 cdq分治有时候可以用来代替复杂的数据结构,比如说树套树,并且具有更好的时间复杂度和空间复杂度。 cdq分治一般用来处理多维偏序问题,一般是三维,一般题目中都会明显地指出两个维度,另一个维度则是时间维度。 比如这个题目就是一个很好的例子。 题目连接:https://www.lydsy.com/JudgeOnline/problem.php?id=1176...

Monster_ixx的博客 322

【bzoj1176】[Balkan2007]Mokia

题目描述: 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. 输入: 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号): "1 x y a" "2 x1 y1 x2 y2" "3" ...

diaopinshuo4087的博客 144
上一篇: Luogu3810 三维偏序(陌上花开)
下一篇: BZOJ2989 数列
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值