poj 1195 Mobile phones

点击打开链接poj 1195

思路: 二维树状数组
分析:
1 给定一个矩阵和三种操作 1 a b x表示把[a,b]值加上x,2 L B R T表示L <= x <= R , B <= y <= T
求这个小矩形的面积 3表示输入结束
2 简单的二维树状数组,但是这边要注意的是操作2的时候一定不能够把维度给弄反了,L R表示的是x的范围而B T表示
的是y的范围
3 题目还有一个trick就是当[a,b]加上x后如果值为负数,那么应该把值设为0

代码:


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 1030;

int s;
int num[MAXN][MAXN];
long long treeNum[MAXN][MAXN];

int lowbit(int x){
    return x&(-x);
}

void add(int x , int y , int val){
    if(num[x][y]+val < 0)
        val = -num[x][y];    
    num[x][y] += val;    
    for(int i = x ; i < MAXN ; i += lowbit(i))
        for(int j = y ; j < MAXN ; j += lowbit(j))
            treeNum[i][j] += val; 
}

long long getSum(int x , int y){
    long long sum = 0;
    for(int i = x ; i > 0 ; i -= lowbit(i))
        for(int j = y ; j > 0 ; j -= lowbit(j))
            sum += treeNum[i][j]; 
    return sum;
}

int main(){
    int x , i , j , val;
    int l , r , u , d;
    while(scanf("%d%d" , &x , &s) != EOF){
        memset(treeNum , 0 , sizeof(treeNum));
        memset(num , 0 , sizeof(num));
        while(scanf("%d" , &x) && x != 3){
            if(x == 1){
                scanf("%d%d%d" , &i , &j , &val); 
                add(i+1 , j+1 , val);
            }
            else{
                scanf("%d%d%d%d" , &u , &l , &d , &r);
                l++ , u++ , r++ , d++;
                long long sum = getSum(d , r);
                sum -= getSum(u-1 , r);
                sum -= getSum(d , l-1);
                sum += getSum(u-1 , l-1);
                printf("%lld\n" , sum);
            }
        }
    }
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值