See you~

Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4768    Accepted Submission(s): 1521

Problem Description
Now
I am leaving hust acm. In the past two and half years, I learned so
many knowledge about Algorithm and Programming, and I met so many good
friends. I want to say sorry to Mr, Yin, I must leave now ~~>.<~~.
I am very sorry, we could not advanced to the World Finals last year.
When
coming into our training room, a lot of books are in my eyes. And every
time the books are moving from one place to another one. Now give you
the position of the books at the early of the day. And the moving
information of the books the day, your work is to tell me how many books
are stayed in some rectangles.
To make the problem easier, we
divide the room into different grids and a book can only stayed in one
grid. The length and the width of the room are less than 1000. I can
move one book from one position to another position, take away one book
from a position or bring in one book and put it on one position.
 
Input
In
the first line of the input file there is an Integer T(1<=T<=10),
which means the number of test cases in the input file. Then N test
cases are followed.
For each test case, in the first line there is
an Integer Q(1<Q<=100,000), means the queries of the case. Then
followed by Q queries.
There are 4 kind of queries, sum, add, delete and move.
For example:
S
x1 y1 x2 y2 means you should tell me the total books of the rectangle
used (x1,y1)-(x2,y2) as the diagonal, including the two points.
A x1 y1 n1 means I put n1 books on the position (x1,y1)
D x1 y1 n1 means I move away n1 books on the position (x1,y1), if less than n1 books at that position, move away all of them.
M
x1 y1 x2 y2 n1 means you move n1 books from (x1,y1) to (x2,y2), if less
than n1 books at that position, move away all of them.
Make sure that at first, there is one book on every grid and 0<=x1,y1,x2,y2<=1000,1<=n1<=100.
 
Output
At the beginning of each case, output "Case X:" where X is the index of the test case, then followed by the "S" queries.
For each "S" query, just print out the total number of books in that area.
 
Sample Input
2
3
S 1 1 1 1
A 1 1 2
S 1 1 1 1
3
S 1 1 1 1
A 1 1 2
S 1 1 1 2
 
Sample Output
Case 1:
1
3
Case 2:
1
4
 
Author
Sempr|CrazyBird|hust07p43
思路:二维树状数组;
套个二维的模板就行,注意给的两个点的大小关系;
  1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<queue>
6 #include<string.h>
7 #include<map>
8 #include<vector>
9 #include<queue>
10 using namespace std;
11 typedef long long LL;
12 int ma[1005][1005];
13 int bit[1005][1005];
14 int cit[1005][1005];
15 int lowbit(int x);
16 void add(int x,int y,int c,int v);
17 int ask(int x,int y);
18 int main(void)
19 {
20 int n;
21 scanf("%d",&n);
22 int __ca = 0;
23 int i,j;
24 for(i = 1; i <= 1001; i++)
25 {
26 for(j = 1; j <= 1001; j++)
27 {
28 ma[i][j] = 1;
29 add(i,j,1,0);
30 }
31 }
32 while(n--)
33 {
34 memset(bit,0,sizeof(bit));
35 int m;
36 for(i = 0; i <= 1001; i++)
37 {
38 for(j = 0; j <= 1001; j++)
39 {
40 bit[i][j] = cit[i][j];
41 }
42 }
43 for(i = 0; i <= 1001; i++)
44 {
45 for(j = 0; j <= 1001; j++)
46 {
47 ma[i][j] = 1;
48 }
49 }
50 char ans[10];
51 scanf("%d",&m);
52 printf("Case %d:\n",++__ca);
53 while(m--)
54 {
55 scanf("%s",ans);
56 int x,y,x1,y1;
57 if(ans[0]=='S')
58 {
59 scanf("%d %d %d %d",&x,&y,&x1,&y1);
60 if(x > x1)
61 swap(x,x1),swap(y,y1);
62 if(y > y1)
63 {
64 swap(y,y1);
65 }
66 x++;
67 y++;
68 x1++;
69 y1++;
70 int sum = ask(x1,y1);
71 sum -= ask(x-1,y1);
72 sum -= ask(x1,y-1);
73 sum += ask(x-1,y-1);
74 printf("%d\n",sum);
75 }
76 else if(ans[0] == 'A')
77 {
78 int c;
79 scanf("%d %d %d",&x,&y,&c);
80 x++;
81 y++;
82 ma[x][y] += c;
83 add(x,y,c,1);
84 }
85 else if(ans[0] == 'M')
86 {
87 int c;
88 scanf("%d %d %d %d %d",&x,&y,&x1,&y1,&c);
89 x++;
90 y++;
91 x1++;
92 y1++;
93 if(ma[x][y] < c)
94 c = ma[x][y];
95 ma[x][y] -= c;
96 ma[x1][y1]+=c;
97 add(x,y,-c,1);
98 add(x1,y1,c,1);
99 }
100 else
101 {
102 int c;
103 scanf("%d %d %d",&x,&y,&c);
104 x++;
105 y++;
106 if(ma[x][y] < c)
107 c = ma[x][y];
108 ma[x][y] -= c;
109 add(x,y,-c,1);
110 }
111 }
112 }
113 return 0;
114 }
115 int lowbit(int x)
116 {
117 return x&(-x);
118 }
119 void add(int x,int y,int c,int v)
120 {
121 int i,j;
122 for(i = x; i <= 1001; i += lowbit(i))
123 {
124 for(j = y; j <= 1001; j += lowbit(j))
125 {
126 if(v)
127 bit[i][j] += c;
128 else cit[i][j]+=c;
129 }
130 }
131 }
132 int ask(int x,int y)
133 {
134 int i,j;
135 int sum = 0;
136 for(i = x; i > 0; i -= lowbit(i))
137 {
138 for(j = y; j > 0; j -= lowbit(j))
139 {
140 sum += bit[i][j];
141 }
142 }
143 return sum;
144 }

See you~(hdu1892)的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ASP.NET Core 之 Identity 入门(一)

    前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...

  4. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  5. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

  6. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  7. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  8. 【.net 深呼吸】细说CodeDom(5):类型成员

    前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成 ...

  9. 【.net 深呼吸】细说CodeDom(4):类型定义

    上一篇文章中说了命名空间,你猜猜接下来该说啥.是了,命名空间下面就是类型,知道了如何生成命名空间的定义代码,之后就该学会如何声明类型了. CLR的类型通常有这么几种:类.接口.结构.枚举.委托.是这么 ...

随机推荐

  1. 使用Postman轻松实现接口数据关联

    Postman Postman是一款非常流行的HTTP(s)接口测试工具,入门简单,界面美观,功能强大.作为一个测试/开发工程师,这是一款必须要会用的工具.今天以一个实际的案例,来介绍下Postman ...

  2. 分布式服务治理框架Dubbo的前世今生及应用实战

    Dubbo的出现背景 Dubbo从开源到现在,已经出现了接近10年时间,在国内各大企业被广泛应用. 它到底有什么魔力值得大家去追捧呢?本篇文章给大家做一个详细的说明. 大规模服务化对于服务治理的要求 ...

  3. Erda 1.1 版本发布|3 大亮点特性最新解读

    来源|尔达 Erda 公众号 ​ Erda v1.1 Changelog: https://github.com/erda-project/erda/blob/master/CHANGELOG/CHA ...

  4. oracle 锁查询

    --v$lock中 id1 在锁模式是 TX 时保存的是 实物id 的前2段SELECT * FROM (SELECT s.SID, TRUNC(id1 / power(2, 16)) rbs, bi ...

  5. mysql锁相关讲解及其应用

    一.mysql的锁类型 了解Mysql的表级锁 了解Mysql的行级锁 (1) 共享/排它锁(Shared and Exclusive Locks) 共享锁和排他锁是InnoDB引擎实现的标准行级别锁 ...

  6. mysql死锁com.mysql.cj.jdbc.exception.MYSQLTransactionRollbackException Deadlock found when trying to get lock;try restarting transaction

    1.生产环境出现以下报错 该错误发生在update操作中,该表并未建立索引,也就是只有InnoDB默认的主键索引,发生错误的程序是for循环中update. 什么情况下会出现Deadlock foun ...

  7. 时间同步之pxe,cobbler,dhcp

    ntpdate 时间同步 同步方法 ntpdate ntp服务器IP 例: ntpdate 192.168.37.11 自动运行同步时间脚本 crontab -e * */1 * * * /usr/s ...

  8. Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录

    背景 :在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnectio ...

  9. 从一次解决Nancy参数绑定“bug”开始发布自己的第一个nuget包(上篇)

    起因 最近,同事跟我说,他们负责的一个Api程序出现了一些很奇怪的事情.这个Api是为环保局做的一个扬尘质控大屏提供数据的,底层是基于Nancy做的.因为发现有些接口的数据出现异常,他就去调试了一下, ...

  10. QPS和TPS的区别于理解

    TPS: (每秒事务处理量(TransactionPerSecond)) 一个表达系统处理能力的性能指标,每秒处理的消息数(Transaction Per Second),每秒事务处理量 - 性能测试 ...