zoukankan      html  css  js  c++  java
  • P2280 [HNOI2003]激光炸弹(70分)

    题目描述

    输入格式

    输入文件名为input.txt

    输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi 。

    输出格式

    输出文件名为output.txt

    输出文件仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过32767)。

    输入输出样例

    输入 #1
    2 1
    0 0 1
    1 1 1
    
    输出 #1

     1

    这题我真的不知道它为啥70

    有的题解解法和我一样!!!

    但是我就是70.。。。

    // luogu-judger-enable-o2
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    #pragma GCC optimize(2)
    
    #pragma GCC optimize(3)
    
    const int Q=5005;
    
    int n,r,i,j,x1,y1,x2,y2,ans=0,k,l,m1,m2;
    
    bool cmp(int x,int y){
        return x>y;
    }
    
    int b[Q][Q],x,y,v[5005];
    
    int main(){
        scanf("%d%d",&n,&r);
        x1=y1=9999;
        x2=y2=-9999;
        for(i=1;i<=n;i++){
            scanf("%d%d%d",&x,&y,&v[i]);
            m1=x+r-1;
            m2=y+r-1;
            if(m1>5000){
                m1=5000;
            }
            if(m2>5000){
                m2=5000;
            }
            for(j=x;j<=m1;j++){
                for(k=y;k<=m2;k++){
                    b[j][k]+=v[i];
                }
            }
            if(x<x1){
                x1=x;
            }
            if(y<y1){
                y1=y;
            }if(x>x2){
                x2=x;
            }if(y>y2){
                y2=y;
            }
        }
        if(r==1){
            sort(v+1,v+1+n,cmp);
            printf("%d",v[1]);
            return 0;
        }
        for(i=x1;i<=x2;i++){
            for(j=y1;j<=y2;j++){
                if(b[i][j]>ans){
                    ans=b[i][j];
                }
            }
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    IT教育课程考评系统开发-07
    2020091201-1
    ip
    输入框枚举
    语言枚举
    《岁月神偷》弹唱和弦吉他谱_六线谱
    string 转化成 string数组
    获取类的字段值
    获取类的字段
    最全的省份递归
  • 原文地址:https://www.cnblogs.com/hrj1/p/11538095.html
Copyright © 2011-2022 走看看