博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客训练六:海啸(二维树状数组+vector函数的使用)
阅读量:4499 次
发布时间:2019-06-08

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

题目链接:

思路:

二维树状数组,

vector(first,last)函数中assign函数相当于将first中的函数清空,然后将last中的值赋值给first。

参考文章:

#include
#include
#include
#include
using namespace std;const int maxn = 1e6+10;vector
>vc;int n,m;int lowbit(int x){ return x&(-x);}void update(int x,int y){ int i,j; for(i=x;i<=n;i+=lowbit(i)) for(j=y;j<=m;j+=lowbit(j)) vc[i][j]+=1;}int query(int x,int y){ int i,j,ans=0; for(i=x;i>0;i-=lowbit(i)) for(j=y;j>0;j-=lowbit(j)) ans+=vc[i][j]; return ans;}int get_sum(int x,int y,int A,int B){ return query(A,B)+query(x-1,y-1)-query(x-1,B)-query(A,y-1);}int main(void){ int i,j,x,y,A,B,q,d; while(~scanf("%d%d%d",&n,&m,&d)){ vc.assign(n+2,vector
(m+2,0)); for(i=1;i<=n;i++) for(j=1;j<=m;j++) { scanf("%d",&x); if(x>=d) update(i,j); } scanf("%d",&q); while(q--){ scanf("%d%d%d%d",&x,&y,&A,&B); printf("%d\n",get_sum(x,y,A,B)); } } return 0;}
View Code

 

转载于:https://www.cnblogs.com/2018zxy/p/10349155.html

你可能感兴趣的文章
事件监听器
查看>>
设计模式之单例设计模式
查看>>
异常的基本概念
查看>>
iOS 离屏渲染学习笔记
查看>>
iOS Xib布局某些控件显示或隐藏<约束的修改>
查看>>
苹果端手机微信页面长按图片无法保存的解决方案
查看>>
协议(五)-从电报机到智能手机
查看>>
mysql 复制表结构 / 从结果中导入数据到新表
查看>>
fiddler---使用方法2--抓取其他电脑数据包
查看>>
android 获取坐标【转】
查看>>
球的移动(move)
查看>>
页面禁止双击选中
查看>>
打印流
查看>>
TCP/IP模型的一个简单解释
查看>>
解开最后期限的镣铐(转载)
查看>>
Kth Smallest Element in a BST
查看>>
ubuntu14.04利用aliyun安装docker
查看>>
iphone-命令行编译之--xcodebuild
查看>>
Plan : 破晓
查看>>
GNU make
查看>>