bzoj1452】的更多相关文章

[BZOJ1452][JSOI2009]Count(树状数组) 题面 BZOJ 洛谷 题解 数据范围这么小?不是对于每个颜色开一个什么东西记一下就好了吗. 然而我不会二维树状数组? 不存在的,凭借多年树套树经验自己\(yy\)一下就好了. 一维是后缀加法,二维当然就是给整个矩阵加法了啊. #include<iostream> #include<cstdio> using namespace std; inline int read() { int x=0;bool t=false;…
一道比较水的二维树状数组,开100个即可,只有100种颜色还是比较EZ的. Program BZOJ1452; ; maxc=; ..maxn,..maxn,..maxc] of longint; f:..maxn,..maxn] of longint; m,n,i,j,x,y,x1,y1,x2,y2,z,Q,ch,sum:longint; procedure add(i,j,c,k:longint); var x,y:longint; begin x:=i; while x<=m do beg…
Count bzoj-1452 JSOI-2009 题目大意:请维护一个平面内的数据结构,支持:单点修改,查询矩形内给定权值出现次数. 注释:$1\le n,m\le 300$,$1\le Q \le 5000$,n和m分别是长和宽,Q是操作次数. 想法:显然,我们根据权值线段树,给这种数据结构起个名字... ... 二维权值树状数组. 我们对树状数组上的节点开一个桶,Tree[i][j][val]表示再以(i,j)右下端点.以(1,1)为左上端点的矩阵中权值为val的数的个数. 对于每个修改直…
1.题目大意: 就是给一个n×m的方格,然后一些平面上的 求和 修改操作 2.分析:二维树状数组裸题 #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; int C[110][310][310]; int a[310][310]; int n, m; inline void add(int c, int x, int…
1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2057  Solved: 1216[Submit][Status][Discuss] Description Input Output Sample Input Sample Output 1 2 HINT Source 裸得不能再裸了 暴力100个二维即可 #include<stdio.h> #include<stdlib.h> #inclu…
1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1769  Solved: 1059[Submit][Status][Discuss] Description Input Output Sample Input Sample Output 1 2 HINT Source Solution 忽略标题的说法...撞壁用的.... 简单题,裸树状数组套树状数组 颜色数目$c<=100$很小,考虑对于每种颜色单独进…
Description Input Output Sample Input Sample Output 1 2 HINT 正解:二维树状数组 解题报告: 这是一道送肉题.二维树状数组直接维护每种颜色的出现次数,颜色编号也很小,所以直接开数组存就可以了. //It is made by jump~ #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #inclu…
中文题面,给你一个矩阵,每一个格子有数字,有两种操作. 1. 把i行j列的值更改 2. 询问两个角坐标分别为(x1,y1) (x2,y2)的矩形内有几个值为z的点. 这一题的特点就是给出的z的数据范围很小,只有1~100,所以我们可以开100个300X300的二维树状数组来解决问题. #include<bits/stdc++.h> using namespace std; ][][]; ][]; int n,m,k; int lowbit(int x) { return x&-x; }…
题解: 二位树状数组 然后我开了300*300*300就T了 代码: #include<bits/stdc++.h> using namespace std; ; ],q; int find(int x,int y,int z) { ; for (;x;x-=x&-x) for (int i=y;i;i-=i&-i) ans+=f[x][i][z]; return ans; } void insert(int x,int y,int z,int s) { for (;x<…
暴力出奇迹……原题: 图片题面好评(图片样例差评 我最开始的思路: 容斥,变成每次询问((1,1),(x,y))这个矩阵中颜色为c的个数,然后三维偏序!cdq分治! 但是2e5的询问好像并不大丈夫?乘个4就变成8e5了 然后搜题解……woc原来还可以这么玩…… 因为每次值查询一个值所以直接开100个树状数组xjb搞就行了,复杂度没问题 那么如果把询问减小,然后每次询问的是一个区间的值要怎么做呢嘿嘿嘿 代码: #include<iostream> #include<cstdio> #…