See you~(hdu1892)
See you~
Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4768 Accepted Submission(s): 1521
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.
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.
For each "S" query, just print out the total number of books in that area.
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
1
3
Case 2:
1
4
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)的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ASP.NET Core 之 Identity 入门(一)
前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Online Judge(OJ)搭建(第一版)
搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 【.net 深呼吸】细说CodeDom(5):类型成员
前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成 ...
- 【.net 深呼吸】细说CodeDom(4):类型定义
上一篇文章中说了命名空间,你猜猜接下来该说啥.是了,命名空间下面就是类型,知道了如何生成命名空间的定义代码,之后就该学会如何声明类型了. CLR的类型通常有这么几种:类.接口.结构.枚举.委托.是这么 ...
随机推荐
- 学会这几步,简单集成视频编辑原子能力SDK
华为视频编辑服务6.2.0版本上线后,我们为大家带来了两大变化:分别是丰富多样的AI能力和灵活选择的集成方式.为让开发者更快上手使用,今天小编带来了视频编辑原子能力SDK的具体集成方法.快来试试吧! ...
- day35前端基础之BOM和DOM
day35前端基础之BOM和DOM BOM操作 简介 BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". ...
- 利用python代码获取文件特定的内容,并保存为文档
说明:有段时间需要读取上百个文件的单点能(sp),就写了下面的代码(计算化学狗努力转行中^-^) import os.path import re # 1 遍历指定目录,显示目录下的所有文件名 def ...
- 【leetcode】1293 .Shortest Path in a Grid with Obstacles
You are given an m x n integer matrix grid where each cell is either 0 (empty) or 1 (obstacle). You ...
- android studio 报 Error:(79) Error parsing XML: not well-formed (invalid token)
android studio 报 Error:(79) Error parsing XML: not well-formed (invalid token) 我的原因是因为string 里面有< ...
- Logback设置保留日志文件个数
Logback日志文件占用存储空间太多,设置保留文件个数,清理之前的文件. 主要由如下三个参数配合使用 maxHistory ,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置 ...
- Swift3.0 延时执行
//延时1s执行 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(1*NSEC_PER_SEC))/ ...
- spring boot 启动卡半天
测试服务器到期,把环境切了,早上过来 ios 和 安卓 都说 测试环境连不上,ps -ef | grep app.jar 查看了一下进程,发现没有启动,于是 重新打包.部署,一顿骚操作后,监控启动日志 ...
- Hadoop生态圈学习-1(理论基础)
一.大数据技术产生的背景 1. 计算机和信息技术(尤其是移动互联网)的迅猛发展和普及,行业应用系统的规模迅速扩大(用户数量和应用场景,比如facebook.淘宝.微信.银联.12306等),行业应用所 ...
- Actuator监控器
一.简介 Actuator(激励者;执行器)是Spring Boot提供的一个可挺拔模块,用于对工程进行监控.其通过不同的监控终端实现不同的监控功能.其功能与Dubbo的监控中心类似,不同的是,Dub ...