bzoj2683&&bzoj4066】的更多相关文章

[BZOJ2683][BZOJ4066]简单题 试题描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x,y<=N,A是正整数 将格子x,y里的数字加上A 2 x1 y1 x2 y2 1<=x1<= x2<=N 1<=y1<= y2<=N 输出x1 y1 x2 y2这个矩形内的数字和 3 无 终止程序 输入 输入文件第一行一个正整数N. 接下来每行一个操作.每条命令除第…
题解: 前一题不是强制在线,后一题是强制在线 树套树空间会炸 说一下cdq分治+树状数组 首先我们利用cdq分治使得查询和操作保证先后关系 然后矩阵查询变成4个矩阵的差 那么我们就可以运用扫描线的方法来维护了 时间nlogn^2,空间O(n) 后一题是kd-tree 查询的方法和线段树基本一样 如果矩阵被包含就返回答案,如果不被包含就直接退出 否则递归下去 然后修改的话和替罪羊树一样 达到一定时候就重构 注意一下x相同insert和build要保证y的顺序区分左右 另外学习了一下map中用str…
概念就不说了吧,网上教程满天飞 学了半天才知道,kd 树实质上只干了两件事情: 1.快速定位一个点 / 矩形 2.有理有据地优化暴力 第一点大概是可以来做二维平面上给点/矩形打标记的问题 第二点大概是平面最远点对? bzoj1941 Hide and Seek 求每个点除自己以外的最近点和最远点 sol: kd 树优化暴力,对于暴力,考虑这样一个剪枝:如果一个点在某一维上隔的太远,就不搜比它远的了 把这个东西放到 kd 树上就可以了 #include<bits/stdc++.h> #defin…
Time Limit: 50 Sec  Memory Limit: 20 MBSubmit: 2185  Solved: 581 Description 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x,y<=N,A是正整数 将格子x,y里的数字加上A 2 x1 y1 x2 y2 1<=x1<= x2<=N 1<=y1<= y2<=N 输出x1 y1 x2 y2这个矩形内…
板子题. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<cassert> using namespace std; #define ll long long #define N 200010 #define inf 2000000000…
http://www.lydsy.com/JudgeOnline/problem.php?id=4066 (题目链接) 题意 维护一个矩阵,两个操作,给某一个元素加上A,求其中一个子矩阵的元素之和.强制在线. Solution KDtree,其它的就是跟平衡树的维护差不多. //然而我现在还是TLE啊T_T,但是正确性拍过没问题,求大佬帮忙看看哪里挂了T_T UPD 2016.1.9:终于是卡着时限过去了→_→ 细节 注意重新构树的时候,叶子节点的左右儿子要重新赋为0,因为最初它们的左右儿子并不…
[BZOJ2683]简单题 题目大意: 一个\(n\times n(n\le5\times10^5)\)的矩阵,初始时每个格子里的数全为\(0\).\(m(m\le2\times10^5)\)次操作,操作包含以下两种: 将某个格子加上一个数: 询问某个子矩阵的值. 思路: CDQ分治+树状数组. 源代码: #include<cstdio> #include<cctype> #include<algorithm> inline int getint() { registe…
[BZOJ1176][Balkan2007]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:你需要把(…
[BZOJ4066]简单题(KD-Tree) 题面 BZOJ 题解 如果这题不卡空间,并且不强制在线的话 显然可以用\(CDQ\)分治做 但是它又卡空间又强制在线,于是我们欢快的来用\(KD-Tree\)吧. 用\(KD-Tree\)维护每一个点,每次询问的时候 判断询问的矩形和当前矩形的交 如果全部覆盖直接加上所有的和 如果没有交则直接返回 如果有部分交则递归处理. 我用了两种方案防止\(KD-Tree\)被卡 第一种:定时重构.大概就是每插入\(10000\)次后就重构一次 #include…
bzoj1176 题目描述 维护一个W*W的矩阵,初始值均为S(题目描述有误,这里的S没有任何作用!).每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. 输入 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小接下来每行为一下三种输入之一(不包含引号):1 x y a2 x1 y1 x2 y23输入1:你需要把(x,y)(第x行第y列)的格子权值增加a输入2:你需要求出以左下角为(x1,y1),右上角…