poj 2029 Get Many Persimmon Trees(树状数组)
来源:互联网 发布:linux cgroups 编辑:程序博客网 时间:2024/06/03 21:33
题目链接:http://poj.org/problem?id=2029
题目大意:给定一个人h*w的矩阵,给定n个点表示该点上面有柿子树,求给定一个t*s的矩阵的最多的柿子树的个数
思路:简单的二维树状数组,加入一个点的时候更新树状数组
题目的范围最大为100,很明显就是要暴力枚举起点,然后求最大值即可
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAXN =510;struct node{int s,e;bool operator <(const node &tmp)const{if(s==tmp.s)return e<tmp.e;return s<tmp.s;}}nodes[MAXN];int n,m,k;int treenum[MAXN][MAXN];int lowbit(int x){ return x&(-x);}/*long long getSum(int x){//一维 long long sum = 0; while(x){//将以x为根节点的数 相当于求其叶节点的和 但其非叶节点等于其两个子节点的和 sum += treenum[x]; x -= lowbit(x); } return sum;}*/long long getSum(int x,int y){//二维 long long sum = 0; for(int i=x;i>0;i-=lowbit(i))for(int j=y;j>0;j-=lowbit(j)){sum += treenum[i][j];} return sum;}/*void add(int x , int val){//一维 while(x < MAXN){//相当于一个树 他将其自己以及他的父节点一路向上都加val treenum[x] += val; x += lowbit(x); }}*/void add(int x ,int y, int val){//二维 for(int i=x;i<MAXN;i+=lowbit(i))for(int j=y;j<MAXN;j+=lowbit(j)) {treenum[i][j] += val;}}int solve(){int a,b;int ret=0,ans=0;scanf("%d%d",&a,&b);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){ret=getSum(i+a-1,j+b-1);ret-=getSum(i-1,j+b-1);ret-=getSum(i+a-1,j-1);ret+=getSum(i-1,j-1);ans=max(ans,ret);}return ans;}int main(){int a,b;while(~scanf("%d",&k)&&k){memset(treenum,0,sizeof treenum); scanf("%d%d",&n,&m); for(int i=0;i<k;i++){scanf("%d%d",&a,&b);add(a,b,1);}printf("%d\n",solve()); } return 0;}
阅读全文
0 0
- POJ 2029 Get Many Persimmon Trees (二维树状数组)
- POJ 2029 Get Many Persimmon Trees(二维树状数组)
- (POJ 2029)Get Many Persimmon Trees <二维树状数组>
- poj 2029 Get Many Persimmon Trees(树状数组)
- poj 2029 Get Many Persimmon Trees 二维树状数组
- POJ 2029 Get Many Persimmon Trees(二维树状数组)
- POJ 2029 Get Many Persimmon Trees 二维树状数组
- poj 2029 Get Many Persimmon Trees 二维树状数组 大水
- poj 2029 Get Many Persimmon Trees(二维树状数组)
- poj 2029 Get Many Persimmon Trees (二维树状数组)
- Poj 2029 Get Many Persimmon Trees 二维树状数组
- poj 2029 Get Many Persimmon Trees 二维树状数组
- poj 2029 Get Many Persimmon Trees 【二维树状数组】
- poj 2029 Get Many Persimmon Trees 二维树状数组
- 【树状数组--二维】poj 2029 Get Many Persimmon Trees
- POJ 2029 Get Many Persimmon Trees 二维树状数组(水)
- [树状数组] poj 2029 Get Many Persimmon Trees#裸的二维树状数组
- POJ2029 Get Many Persimmon Trees(树状数组~)
- 自定义View-自动换行的标签控件
- 第7节-Linux账户与文件目录权限
- 特征工程知识笔记
- WatchDog工作原理
- UVA10562UnderdrawTheTrees
- poj 2029 Get Many Persimmon Trees(树状数组)
- EAS License过期处理
- 测试docker建立以太坊集群
- lambda表达式的10个示例
- 用Jquery实现checkbox的反选、全选、全不选
- Windows下Nginx Virtual Host多站点配置详解
- c++动态内存管理
- POJ 1887 Testing the CATCHER(最长下降子序列)
- H.323协议分析