2018蓝桥模拟赛·天上的星星 暴力|二维树状数组

在一个星光摧残的夜晚,蒜头君一颗一颗的数这天上的星星。

蒜头君给在天上巧妙的画了一个直角坐标系,让所有的星星都分布在第一象。天上有 nn 颗星星,他能知道每一颗星星的坐标和亮度。

现在,蒜头君问自己 qq 次,每次他问自己每个矩形区域的星星的亮度和是多少(包含边界上的星星)。

输入格式

第一行输入一个整数 n(1 \le n \le 50000)n(1n50000) 表示星星的数量。

接下里 nn 行,每行输入三个整数 x,y,w(0 \le x, y, w\le 2000)x,y,w(0x,y,w2000),表示在坐标 (x,y)(x,y) 有一颗亮度为 ww 的星星。注意一个点可能有多个星星。

接下来一行输入一个整数 q(1 \le q \le 50000)q(1q50000),表示查询的次数。

接下来 qq 行,每行输入四个整数 x_1, y_1, x_2, y_2x1,y1,x2,y2,其中 (x_1, y_1)(x1,y1) 表示查询的矩形的左下角的坐标,(x_2, y_2)(x2,y2) 表示查询的矩形的右上角的坐标,0 \le x_1 \le x_2 \le 20000x1x220000 \le y_1 \le y_2 \le 20000y1y22000

输出格式

对于每一次查询,输出一行一个整数,表示查询的矩形区域内的星星的亮度总和。

样例输入

5
5 0 6
7 9 7
8 6 13
9 7 1
3 0 19
4
0 8 7 9
0 0 7 10
2 7 10 9
5 4 7 5

样例输出

7
32
8
0

给出第一象限下的坐标并给出这个坐标下的值 给我们多个矩形的范围 求这个

虽然暴力能过

但是树状数组 也可以~并且更快~

复杂度O(q*log(x)*log(y))

x,y<=2000

注意边界要算进去 而且数据不能存在0,0上

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll tre[2010][2010];
void add(int x,int y,int w)
{for(int i=x;i<=2001;i+=i&(-i)){for(int j=y;j<=2001;j+=j&(-j)){tre[i][j]+=w;}
}
ll query(int x,int y){ll sum=0;for(int i=x;i>0;i-=i&(-i)){for(int j=y;j>0;j-=j&(-j)){sum+=tre[i][j];			}return sum; 
}
int main()
{int n;ios::sync_with_stdio(0);cin>>n;while(n--){int x,y,w;cin>>x>>y>>w;add(x+1,y+1,w);}int q;cin>>q;while(q--){int lx,ly,rx,ry;cin>>lx>>ly>>rx>>ry;ll ans = query(rx+1,ry+1)-query(rx+1,ly)-query(lx,ry+1)+query(lx,ly); //注意边要算在矩形内 cout<<ans<<endl;			}return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2010主题设置及插件推荐

本文主要写了个人使用 VS2010 的一些配置及实用插件&#xff0c;从而打造一个符合个人风格的开发环境。 基础设置 安装 Visual Assist X 在 VS2010 中若不安装 Visual Assist X 这个插件&#xff0c;直接开发 C 相关的项目将是非常痛苦的事情。默认环境没有对代码的不同部分进行…

[Leetcode][第785题][JAVA][判断二分图][BFS][DFS]

【问题描述】[中等] 【解答思路】 1. DFS 深度优先遍历 时间复杂度&#xff1a;O(NM) 空间复杂度&#xff1a;O(N) class Solution {private static final int UNCOLORED 0;private static final int RED 1;private static final int GREEN 2;private int[] color;privat…

[剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

【问题描述】[中等] 235/68-1 搜索二叉树 236/68-2 二叉树 【解答思路】 递归 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下。 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, Tr…

Docker 查看镜像信息

Docker 查看镜像信息 原文:Docker 查看镜像信息文章首发个人网站&#xff1a; https://www.exception.site/docker/docker-look-up-image-info 本文中&#xff0c;我们将需要学习 Docker 如何查看镜像信息&#xff1f; 一、images 命令列出镜像 通过使用如下两个命令&#xff0…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第7篇]随机性如何辅助计算和什么是BPP类问题

这篇是密码学52件事中第7篇.我们只要把问题集中在BPP复杂类问题. 目前为止,我们已经介绍了一些复杂类: P 是一类能在多项式时间内被可确定的图灵机判定的问题.NP是一类能在多项式时间内被非确定的图灵机判定的问题.BPP是一类在多项式时间内被概率图灵机解出的问题,并且对所有…

73 forward动作

定义一个logind的jsp页面 <% page language"java" import"java.util.*" contentType"text/html; charsetutf-8"%><!DOCTYPE html> <html> <head> <meta charset"ISO-8859-1"> <title>Insert tit…

Linux系统开发之路 - 下

5、Ubuntu安装好之后&#xff0c;就可以进行开发环境的搭建。&#xff08;坚持看完有彩蛋&#xff0c;(>--..--<).jpg&#xff09;。 1&#xff09;首先安装Nodejs和Npm。 打开浏览器输入nodejs.org&#xff0c;进入页面会提示下载&#xff0c;如下图&#xff0c;选择LTS…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第8篇]交互式的定义如何帮助计算和IP类问题是什么

这是系列中的第8篇&#xff0c;我们主要讨论计算中交互作用的用处和IP类问题是什么. 什么是证明 经典的证明 交互式证明系统 [1] http://dl.acm.org/citation.cfm?id63434 [2] http://www.amazon.co.uk/Introduction-Theory-Computation-Michael-Sipser/dp/0619217642 [3] h…

线段树之扫描线思路

运用线段树扫描线方式可以解决经典的求矩形面积交问题以HDU_1542 Atlantis 题为例 线段树和扫描线是这么结合的线段树统计的是有效区间段的长度 也就是扫描线 当前扫描到的区间段是哪一个 什么意思 比如当前在哪一个段扫描 那么线段树中的t[1]中的len就是多长 线段树一般…

74 param动作

定义一个logind的jsp <% page language"java" import"java.util.*" contentType"text/html; charsetutf-8"%><!DOCTYPE html> <html> <head> <meta charset"ISO-8859-1"> <title>Insert title h…

Unknown column 'user_uid' in 'field list' sql错误解决过程

在idea中运行一直有错&#xff0c;找了好多个地方都找不到&#xff0c;以为是我的字段名字写错了&#xff0c;然而都是对的。 把错误的这个字段删了再打一遍就好了&#xff0c; 转载于:https://www.cnblogs.com/zxrxzw/p/10630164.html

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第9篇]香农对熵和信息的定义是什么?

这是计算机理论的最后一篇.我们讨论信息理论的基础概念,什么是香农定义的熵和信息. 熵 熵与确定性成反比 信息 密码学实例 [1] Thomas M. Cover and Joy A. Thomas. Elements of Information Theory ​ 2nd Edition. Wiley-Interscience, 2 edition, July 2006. [2] S. Vaj…

数据结构:(5)算法分析基础

算法时间复杂度分析 算法空间复杂度分析

[Leetcode][第35题][JAVA][搜索插入位置][二分法]

【问题描述】[中等] 【解答思路】 二分法 时间复杂度&#xff1a;O(LogN) 空间复杂度&#xff1a;O(1) public class Solution {public int searchInsert(int[] nums, int target) {int len nums.length;if (len 0) {return 0;}// 特判if (nums[len - 1] < target) {re…

数据结构:(6)其他情况的算法分析

最好&#xff0c;最坏,平均复杂度分析 递归算法的时间复杂度分析

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第10篇]RSA和强RSA问题有什么区别

这个密码学52件事数学知识的第一篇,也是整个系列的第10篇.这篇介绍了RSA问题和Strong-RSA问题,指出了这两种问题的不同之处. 密码学严重依赖于这样的假设,某些数学问题难以在有限的时间内解决.让我们看公钥(非对称)密码学,这也是这篇文章中我们使用的一个假设----**单向函数(O…

第十三期:你所了解的javascript?

在介绍JavaScript之前&#xff0c;首先让我们来简单了解一下脚本语言。大家知道&#xff0c;HTML通常用于格式化和链接文本&#xff0c;各种编程语言通常用于向机器发出一系列复杂的指令&#xff0c;而脚本语言是介于HTML和C、Java等编程语言之间的语言。脚本语言是一种简单的语…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第12篇]椭圆曲线上的群理论是什么

这是系列中的第12篇,我们继续数学背景的部分,通过介绍椭圆曲线的群理论… 椭圆曲线群定律是一种在一组椭圆曲线有理点中定义的二元操作来形成一个群的方法.现在,让我们看看到底什么意思,和这个东西怎么用 椭圆曲线和它的有理点 在椭圆曲线中加入群理论 这就是全部了吗 这和密…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第13篇]概述投影点表达的用途的优点

这是52密码学系列中第13篇,我们继续数学背景部分,通过概述投影点表达的使用和优点. TLDR - 在椭圆曲线点上的翻倍和加法操作需要一个域取逆和几个乘法操作.我们考虑域K(特征值既不是2也不是3).给定K上的一个逆运算是比乘法更花费时间的,因此用投影点坐标去计算这些操作是更有效…