博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】
阅读量:5064 次
发布时间:2019-06-12

本文共 1822 字,大约阅读时间需要 6 分钟。

1452: [JSOI2009]Count

Time Limit: 10 Sec  
Memory Limit: 64 MB
Submit: 2693  
Solved: 1574
[ ][ ][ ]

Description

Input

Output

Sample Input



Sample Output

1
2

HINT

开心~自己写出了树套树【蒟蒻的欢愉】

颜色很少,区间也很小,对每种颜色开一个二维树状数组就好了

第一维表示x,对应x行的第二维树状数组

复杂度O(Qlog^2n)

#include
#include
#include
#include
#define LL long long int#define REP(i,n) for (int i = 1; i <= (n); i++)#define Redge(u) for (int k = head[u]; k != -1; k = edge[k].next)#define lbt(x) (x & -x)using namespace std;const int maxn = 305,maxm = 105,INF = 1000000000;inline int RD(){ int out = 0,flag = 1; char c = getchar(); while (c < 48 || c > 57) {if (c == '-') flag = -1; c = getchar();} while (c >= 48 && c <= 57) {out = (out << 1) + (out << 3) + c - '0'; c = getchar();} return out * flag;}int A[maxm][maxn][maxn],s[maxn][maxn],n,m,Q;inline void add(int c,int p,int u,int v){while (u <= m) A[c][p][u] += v,u += lbt(u);}inline int query(int c,int p,int u){int ans = 0; while (u) ans += A[c][p][u],u -= lbt(u); return ans;}inline int sum(int c,int p,int l,int r){return query(c,p,r) - query(c,p,l - 1);}inline void modify(int c,int x,int y,int v){while (x <= n) add(c,x,y,v),x += lbt(x);}inline int Query(int c,int x,int l,int r){int ans = 0; while (x) ans += sum(c,x,l,r),x -= lbt(x); return ans;}inline int Sum(int c,int xl,int xr,int yl,int yr){return Query(c,xr,yl,yr) - Query(c,xl - 1,yl,yr);}int main(){ n = RD(); m = RD(); int x,y,x1,y1,c,cmd; REP(i,n) REP(j,m) s[i][j] = RD(),modify(s[i][j],i,j,1); Q = RD(); while (Q--){ cmd = RD(); if (cmd & 1){ x = RD(); y = RD(); c = RD(); modify(s[x][y],x,y,-1); modify(c,x,y,1); s[x][y] = c; }else { x = RD(); x1 = RD(); y = RD(); y1 = RD(); c = RD(); printf("%d\n",Sum(c,x,x1,y,y1)); } } return 0;}

转载于:https://www.cnblogs.com/Mychael/p/8282762.html

你可能感兴趣的文章
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
html 简介
查看>>
python使用上下文对代码片段进行计时,非装饰器
查看>>
【bzoj5099】[POI2018]Pionek 双指针法
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
选择器
查看>>
Mysql与Oracle 的对比
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
如何获取Android系统时间是24小时制还是12小时制
查看>>
fur168.com 改成5917电影
查看>>
PHP上传RAR压缩包并解压目录
查看>>