1532. [IOI2001]移动电话

★☆   输入文件:mobilephones.in   输出文件:mobilephones.out   简单对比
时间限制:5 s   内存限制:256 MB

【题目描述】

假设Tampere地区的4G移动通信基站以如下方式运行。整个地区被划分成若干正方形格子。这些格子构成一个S*S的矩阵,它们的行,列编号都是从0到S-1.每一个格子中都有一个基站。每个格子中激活的手机数量可能改变,因为一部手机可能从一个格子移动到另一个格子,打开或者关闭。有时,某一座基站会向总站报告自己的行列坐标,以及该格中激活手机数目的变化。

【输入格式】

输入指令编码如下。

每个指令占一行,包含一个指令码和一些参数,见下表。

指令码 参数 意义
0 S 初始化一个S*S的全零矩阵。这个指令只会出现一次,即第一条指令。
1 X Y A 将格子(X,Y)中激活的手机数量增加A。A有可能是正数或负数。
2 L B R T 询问当前所有坐标(X,Y)满足:L<=X<=R,B<=Y<=T的格子中激活的手机数量之和。
3   结束程序。这个指令只会出现一次,即最后一条指令。

【输出格式】

你的程序不应该对指令2外的所有指令进行回答。对于每个指令2,你的程序需要输出一行一个正整数,即该指令的答案。

【样例输入】

0 4

1 1 2 3

2 0 0 2 2

1 1 1 2

1 1 2 -1

2 1 1 2 3

3

【样例

3

4

【提示】

矩阵大小:1<=S<=1024

任意时刻,每个格子中的激活手机数量V:0<=V<=32767

格子中激活手机数量的变化值:-32768<=A<=32767

输入的指令数目:3<=U<=60002

整个矩阵中的最大手机数量:M=2^30

【来源】

IOI 2001

二维BIT维护区间和

#include<cstdio>
const int N=;
int opt,n,c[N][N];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int lowbit(int x){
return x&-x;
}
void updata(int x,int y,int val){
for(int i=x;i<=n;i+=lowbit(i)){
for(int j=y;j<=n;j+=lowbit(j)){
c[i][j]+=val;
}
}
}
int query(int x,int y){
int res=;
for(int i=x;i>=;i-=lowbit(i)){
for(int j=y;j>=;j-=lowbit(j)){
res+=c[i][j];
}
}
return res;
}
int main(){
freopen("mobilephones.in","r",stdin);
freopen("mobilephones.out","w",stdout);
opt=read();n=read();
for(int x1,x2,y1,y2,val;(opt=read())!=;){
if(opt==){
x1=read();y1=read();val=read();x1++;y1++;
updata(x1,y1,val);
}
else{
x1=read();y1=read();x1++;y1++;
x2=read();y2=read();x2++;y2++;
printf("%d\n",query(x2,y2)-query(x2,y1-)-query(x1-,y2)+query(x1-,y1-));
}
}
return ;
}

COGS1532. [IOI2001]移动电话的更多相关文章

  1. 树状数组(二维):COGS 1532 [IOI2001]移动电话

    1532. [IOI2001]移动电话 ★☆   输入文件:mobilephones.in   输出文件:mobilephones.out   简单对比 时间限制:5 s   内存限制:256 MB ...

  2. nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证

    http模块内部封装了http服务器和客户端,因此Node.js不需要借助Apache.IIS.Nginx.Tomcat等传统HTTP服务器,就可以构建http服务器,亦可以用来做一些爬虫.下面简单介 ...

  3. Mono for Android—初体验之“电话拨号器”

    1.Main.axml文件: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmln ...

  4. Android无需申请权限拨打电话

    Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data ...

  5. ContentProvider中央档案馆,以及获取联系人电话的示例

    Android官方文档介绍的数据存储方式共有五种,sqlite,SharedPreferences,网络存储,外储存储,文件存储,但是这些数据都无法进行共享,那么我们就引入了今天的主角:Content ...

  6. [LeetCode] Design Phone Directory 设计电话目录

    Design a Phone Directory which supports the following operations: get: Provide a number which is not ...

  7. 【原】iOS学习之三种拨打电话方式的比较

    拨打电话小编从网上找到三种,在这里做一些总结和比较 1.基本使用 NSString *str = [[NSMutableString alloc] initWithFormat:@"tel: ...

  8. 使用JAVA编写电话薄程序,具备添加,查找,删除等功能

    //该程序需要连接数据库.根据word文档要求所有功能均已实现.//大部分方法基本差不多,//在查询修改的时候能输出 最大ID号 和最小ID号,并且可以对输入的ID号进行判断是否存在(具体方法请查看 ...

  9. 拨打电话tel: 跳转到邮件mailto:(html)

    拨打电话 <a href="tel://0571866000">0571-866000</a> 跳转到邮件 <a href="mailto: ...

随机推荐

  1. js链式调用 柯里化

    var d = 1; d.add(2).add(3).add(4) //输出10 写出这个add函数 Number.prototype.add = function(x){ return this + ...

  2. FZU 1057 a^b 【数论/九余定理】

    Accept: 1164    Submit: 3722Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description 对于任 ...

  3. [Python Cookbook] Numpy: Multiple Ways to Create an Array

    Convert from list Apply np.array() method to convert a list to a numpy array: import numpy as np myl ...

  4. Word Break - LeetCode

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  5. luogu P1260 工程规划(luogu wa)don't know way

    题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...

  6. andriod GridLayout

    来自:http://blog.csdn.net/jianghuiquan/article/details/8299973 GridLayout网格布局 android4.0以上版本出现的GridLay ...

  7. vue-cli配置文件详解

    转自: https://blog.csdn.net/Mr_YanYan/article/details/79233188

  8. java debug

    java debug 模式下各button作用 F5:跳入方法  Step Into F6:向下逐行调试  Step Over F7:跳出方法  Step Return F8:直接跳转到下一个断点 D ...

  9. scramble-string——两个字符串经过树化并旋转后是否一致、递归、动态规划

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  10. 【Excle数据透视表】如何移动数据透视表的位置

    数据透视表创建完成了,现在需要将它移动到D5位置,如何移动呢? 解决办法 通过"移动数据透视表"功能实现数据透视表的位置移动 步骤1 单击数据透视表任意单元格→数据透视表工具→分析 ...