分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

bzoj1452: [JSOI2009]Count

发布时间:2023-09-06 01:38责任编辑:彭小芳关键词:暂无标签

PS:c<=100 (原谅像我一样眼瞎的人吧

这题就是一个二维树状数组的模板啊,然后不会,然后学了学,然后好像没难度,自己看代码就会了。。

#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;int n,m,a[310][310],s[310][310][110];int lowbit(int x){return x&-x;}void add(int x,int y,int c,int k){ ???int yy=y; ???while(x<=n) ???{ ???????y=yy; ???????while(y<=n) ???????{ ???????????s[x][y][c]+=k; ???????????y+=lowbit(y); ???????} ???????x+=lowbit(x); ???}}int getsum(int x,int y,int c){ ???int ret=0,yy=y; ???while(x>0) ???{ ???????y=yy; ???????while(y>0) ???????{ ???????????ret+=s[x][y][c]; ???????????y-=lowbit(y); ???????} ???????x-=lowbit(x); ???} ???return ret;}int main(){ ???scanf("%d%d",&n,&m); ???for(int i=1;i<=n;i++) ???????for(int j=1;j<=m;j++) ???????{ ???????????scanf("%d",&a[i][j]); ???????????add(i,j,a[i][j],1); ???????} ???????????int Q,op,x1,y1,x2,y2,c; ???scanf("%d",&Q); ???while(Q--) ???{ ???????scanf("%d",&op); ???????if(op==1) ???????{ ???????????scanf("%d%d%d",&x1,&y1,&c); ???????????add(x1,y1,a[x1][y1],-1); ????????????a[x1][y1]=c; ???????????add(x1,y1,a[x1][y1],1); ???????} ???????else ???????{ ???????????scanf("%d%d%d%d%d",&x1,&x2,&y1,&y2,&c); ???????????printf("%d\n",getsum(x2,y2,c)-getsum(x1-1,y2,c)-getsum(x2,y1-1,c)+getsum(x1-1,y1-1,c)); ???????} ???} ???return 0;}

bzoj1452: [JSOI2009]Count

原文地址:https://www.cnblogs.com/AKCqhzdy/p/8324615.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved