2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)
题意
n*m的农场有若干种不同种类作物,如果作物接受了不同种类的肥料就会枯萎。现在进行t次施肥,每次对一个矩形区域施某种类的肥料。问最后枯萎的作物是多少。
分析
作者:xseventh
链接:https://www.nowcoder.com/discuss/87630?type=101
来源:牛客网
然后我们开始考虑如何求每种的植物被撒了几次肥料。
#include <bits/stdc++.h> using namespace std;
int c[];
int n,m;
int id(int i,int j){
return i*(m+)+j;
} struct nod{
int x,y,val;
bool operator < (const nod &b)const{
if(x==b.x&&y==b.y){
return abs(val)>abs(b.val);
}
if(x==b.x)
return y<b.y;
return x<b.x;
}
};
vector<nod>vd[];
int bit[];
void add(int pos,int x){
while(pos<=m+){
bit[pos]+=x;
pos+=pos&-pos;
}
}
int sum(int pos){
int Sum=;
while(pos){
Sum+=bit[pos];
pos-=pos&-pos;
}
return Sum;
}
int main(){
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int t,x;
scanf("%d%d%d",&n,&m,&t);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
scanf("%d",&x);
vd[x].push_back(nod{i,j,});
}
int x1,x2,y1,y2;
while(t--){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
int k;
scanf("%d",&k);
vd[k].push_back(nod{x1,y1,});
vd[k].push_back(nod{x2+,y2+,});
vd[k].push_back(nod{x1,y2+,-});
vd[k].push_back(nod{x2+,y1,-});
c[id(x1,y1)]++;
c[id(x2+,y2+)]++;
c[id(x1,y2+)]--;
c[id(x2+,y1)]--;
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
c[id(i,j)]+=c[id(i-,j)]+c[id(i,j-)]-c[id(i-,j-)];//被撒肥料总次数
}
}
int ans=;
for(int i=;i<=n*m;i++){
sort(vd[i].begin(),vd[i].end());
for(int j=;j<vd[i].size();j++){
if(vd[i][j].val==){
if(c[id(vd[i][j].x,vd[i][j].y)]==sum(vd[i][j].y))
ans++;
}
else {
add(vd[i][j].y,vd[i][j].val);
}
}
for(int j=;j<vd[i].size();j++)
if(vd[i][j].val)
add(vd[i][j].y,-vd[i][j].val);
}
printf("%d\n",n*m-ans);
return ;
}
2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)的更多相关文章
- 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)
2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...
- 2018牛客网暑期ACM多校训练营(第一场)D图同构,J
链接:https://www.nowcoder.com/acm/contest/139/D来源:牛客网 同构图:假设G=(V,E)和G1=(V1,E1)是两个图,如果存在一个双射m:V→V1,使得对所 ...
- 2018 牛客网暑期ACM多校训练营(第一场) E Removal (DP)
Removal 链接:https://ac.nowcoder.com/acm/contest/139/E来源:牛客网 题目描述 Bobo has a sequence of integers s1, ...
- 2018牛客网暑期ACM多校训练营(第十场)A Rikka with Lowbit (树状数组)
链接:https://ac.nowcoder.com/acm/contest/148/A 来源:牛客网 Rikka with Lowbit 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C ...
- 2018牛客网暑期ACM多校训练营(第十场)J Rikka with Nickname(二分,字符串)
链接:https://ac.nowcoder.com/acm/contest/148/J?&headNav=acm 来源:牛客网 Rikka with Nickname 时间限制:C/C++ ...
- 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)
题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...
- 2018牛客网暑期ACM多校训练营(第五场) F - take - [数学期望][树状数组]
题目链接:https://www.nowcoder.com/acm/contest/143/F 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...
- 2018牛客网暑期ACM多校训练营(第二场) J - farm - [随机数哈希+二维树状数组]
题目链接:https://www.nowcoder.com/acm/contest/140/J 时间限制:C/C++ 4秒,其他语言8秒 空间限制:C/C++ 262144K,其他语言524288K ...
- 2018牛客网暑期ACM多校训练营(第三场) A - PACM Team - [四维01背包][四约束01背包]
题目链接:https://www.nowcoder.com/acm/contest/141/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...
随机推荐
- 【XSY2691】中关村 卢卡斯定理 数位DP
题目描述 在一个\(k\)维空间中,每个整点被黑白染色.对于一个坐标为\((x_1,x_2,\ldots,x_k)\)的点,他的颜色我们通过如下方式计算: 如果存在一维坐标是\(0\),则颜色是黑色. ...
- Hdoj 2501.Tiling_easy version 题解
Problem Description 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法. Input 输入的第 ...
- 环境变量PS1,修改命令行提示符样式
推荐模板 export PS1="\[\e[37;40m\][\[\e[31;40m\]\u\[\e[0m@\[\e[33;40m\]\H \[\e[36;40m\]\w\[\e[0m\] ...
- 【BZOJ4911】[SDOI2017]切树游戏(动态dp,FWT)
[BZOJ4911][SDOI2017]切树游戏(动态dp,FWT) 题面 BZOJ 洛谷 LOJ 题解 首先考虑如何暴力\(dp\),设\(f[i][S]\)表示当前以\(i\)节点为根节点,联通子 ...
- 【BZOJ5300】[CQOI2018]九连环 (高精度,FFT)
[BZOJ5300][CQOI2018]九连环 (高精度,FFT) 题面 BZOJ 洛谷 题解 去这里看吧,多么好 #include<iostream> #include<cstdi ...
- EasyFlash 的初始化配置
@2019-02-18 [小记] EasyFlash的初始化流程 easyflash_init ---> ef_port_init ---> sfud_init ---> sfud_ ...
- CF527E Data Center Drama(构造+欧拉回路)
题目链接 大意: 给你一个无向图. 要求加最少的边,然后给这些无向图的边定向,使得每一个点的出入度都是偶数. 输出定向后的边数和边集. n<=10^5 m<=2*10^5 很巧妙的构造题- ...
- OpenLayers学习笔记(五)— 拖拽Feature图层
参考文档的例子可以知道如何拖动矢量图层feature GitHub: 八至 作者:狐狸家的鱼 本文链接:拖拽Feature图层 全部代码 <!DOCTYPE html> <html& ...
- CF1140E Palindrome-less Arrays
我觉得这道题非常有前途....... 题意:给定一个填了一半的数组,你要把它补完,使之不存在奇回文串,求方案数.字符集为k. n,k<=20w 解:不能有长为三的回文串.也就是不能有两个相隔1的 ...
- Day25--Python--re,模块(regular expression)
一 . re 1. import re findall() 查找所有结果 finditer() 查找到的结果返回迭代器 search() 查找. 如果查找到第一个结果,就停止. 如果查找不到结果,返回 ...