比赛 |
EYOI暨SBOI暑假快乐赛3rd |
评测结果 |
AWWWTTTTTT |
题目名称 |
移动电话 |
最终得分 |
10 |
用户昵称 |
湖岸与夜与咸鱼 |
运行时间 |
6.831 s |
代码语言 |
C++ |
内存使用 |
13.38 MiB |
提交时间 |
2022-06-27 09:26:40 |
显示代码纯文本
// 河南省实验中学 2021级高中 关天泽
#include<bits/stdc++.h>
#define ll long long;
#define ull unsigned long long;
using namespace std;
int s[1200][1200] = {0} , minx = 1 , miny = 1 , S , q[1200][1200] = {0};
bool qzh(int x , int y){
q[x][y] = q[x - 1][y] + q[x][y - 1] - q[x - 1][y - 1] + s[x][y];
}
bool step_2(){
if(minx == 1 && miny == 1){
q[1][1] = s[1][1];
for(int i = 2;i <= S;i++){
q[1][i] = q[1][i - 1] + s[1][i];
q[i][1] = q[i - 1][1] + s[1][i];
}
for(int i = 2;i <= S;i++){
for(int j = 2;j <= S;j++){
qzh(i , j);
}
}
}
if(minx == 1 && miny != 1){
q[1][1] = s[1][1];
for(int i = 2;i <= S;i++){
q[1][i] = q[1][i - 1] + s[1][i];
}
for(int i = 2;i <= S;i++){
for(int j = miny;j <= S;j++){
qzh(i , j);
}
}
}
if(minx != 1 && miny == 1){
q[1][1] = s[1][1];
for(int i = 2;i <= S;i++){
q[i][1] = q[i - 1][1] + s[1][i];
}
for(int i = minx;i <= S;i++){
for(int j = 2;j <= S;j++){
qzh(i , j);
}
}
}
if(minx != 1 && miny != 1){
for(int i = minx;i <= S;i++){
for(int j = miny;j <= S;j++){
qzh(i , j);
}
}
}
}
int out_2(int L , int B , int R , int T){
if(L == 1 && B == 1){
return q[R][T];
}
if(L == 1 && B != 1){
return q[R][T] - q[R][B - 1];
}
if(L != 1 && B == 1){
return q[R][T] - q[L - 1][T];
}
if(L != 1 && R != 1){
return q[R][T] - q[L - 1][T] - q[R][B - 1] + q[L - 1][B - 1];
}
}
int main(){
freopen("mobilephones.in","r",stdin);
freopen("mobilephones.out","w",stdout);
cin >> S >> S;
for(;;){
int lins;
cin >> lins;
if(lins == 1){
int X , Y , A;
cin >> X >> Y >> A;
X++;
Y++;
s[X][Y] += A;
minx = min(X , minx);
miny = min(Y , miny);
}
if(lins == 2){
int pig , L , B , R , T;
step_2();
cin >> L >> B >> R >> T;
L++;B++;R++;T++;
pig = out_2(L , B , R , T);
cout << pig << endl;
}
if(lins == 3){
break;
}
}
return 0;
}