zoukankan      html  css  js  c++  java
  • poj 2029 Get Many Persimmon Trees 二维树状数组

    题目链接:

    http://poj.org/problem?id=2029

    题意:

    N个星,在W*H的网格中,下面给出N个星的位置,给出S,T,要找出S*T大小的矩形,使得星星最多

    题解:

    http://blog.csdn.net/zxy_snow/article/details/6260895
    二维树状数组和一维差不多,维护的是两个方向x,y。一块面积?

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cstring>
     5 using namespace std;
     6 typedef long long ll;
     7 #define MS(a) memset(a,0,sizeof(a))
     8 #define MP make_pair
     9 #define PB push_back
    10 const int INF = 0x3f3f3f3f;
    11 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;
    12 inline ll read(){
    13     ll x=0,f=1;char ch=getchar();
    14     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    15     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    16     return x*f;
    17 }
    18 //////////////////////////////////////////////////////////////////////////
    19 const int maxn = 500+10;
    20 
    21 int bit[maxn][maxn];
    22 
    23 void add(int x,int y,int v){
    24     for(int i=x; i<maxn; i+=i&-i)
    25         for(int j=y; j<maxn; j+=j&-j)
    26             bit[i][j] += v;
    27 }
    28 
    29 int sum(int x,int y){
    30     int res = 0;
    31     for(int i=x; i>0; i-=i&-i)
    32         for(int j=y; j>0; j-=j&-j)
    33             res += bit[i][j];
    34     return res;
    35 }
    36 
    37 int main(){
    38     int n;
    39     while(cin>>n && n){
    40         MS(bit);
    41         int W,H; cin>>W>>H;
    42         for(int i=0; i<n; i++){
    43             int x,y; cin>>x>>y;
    44             add(x,y,1);
    45         }
    46         int s,t; cin>>s>>t;
    47         int ans = 0;
    48         for(int w=s; w<=W; w++)
    49             for(int h=t; h<=H; h++){
    50                 int tmp = sum(w,h)-sum(w-s,h)-sum(w,h-t)+sum(w-s,h-t);
    51                 if(tmp > ans) ans = tmp;
    52             }
    53         cout << ans << endl;
    54     }
    55 
    56     return 0;
    57 }
  • 相关阅读:
    3513: [MUTC2013]idiots
    ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
    【python全栈开发】初识python
    SQL疑难问题
    费用分摊问题
    透过现象看本质
    关于python3round与float的四省五入精度的问题
    Win10下VSCode安装PlantUML
    安装pymssql
    ensorFlow的安装
  • 原文地址:https://www.cnblogs.com/yxg123123/p/6827571.html
Copyright © 2011-2022 走看看