zoukankan      html  css  js  c++  java
  • 洛谷 P2356 弹珠游戏

    题目链接:https://www.luogu.org/problemnew/show/P2356

    题目

    题目描述

    MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏——超级弹珠。

    游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只

    能攻击你所在的行、列里的所有敌人,然后你就可以获得他们的分数之和,现在请你选择

    一个你的位置,使得能击杀的敌人最多,注意,你不能和敌人在一个地方

    输入输出格式

    输入格式:

    输入有两行,第一行一个正整数 n,接下来 n 行,每行 n 列,如果有敌人则为一个正整数,否则为 0

    输出格式:

    输出共一行,最多分数,如果连你的容身之地都没有,请输出“Bad Game!”

    输入输出样例

    输入样例#1: 复制
    4
    1 1 1 0
    1 1 1 1
    1 1 1 1
    0 1 1 1
    输出样例#1: 复制
    6

    说明

    送分题,客官请拿好,(*^__^*) 嘻嘻……

    【数据范围】

    对于 30%的数据,1≤n≤10

    对于 100%的数据,1≤n≤1000,保证容身之地的数量小于 10000

    解析

    读入时利用queue存储可以进攻的位置,之后对于每个点利用while向四个方向加上每个点权值即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int mp[1003][1003];
    queue<int> xx,yy;
    int n;
    int MAXN=0;
    int flag=0;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cin>>mp[i][j];
                if(mp[i][j]==0)
                {
                    xx.push(i);
                    yy.push(j);
                    flag=1;
                }
            }
        }
        if(flag==0) cout<<"Bad Game!"<<endl;
        while(xx.empty()!=true&&yy.empty()!=true)
        {
            int sum=0;
            int nowx=xx.front();
            int nowy=yy.front();
            xx.pop();
            yy.pop();
            int right=nowx;
            int left=nowx;
            int up=nowy;
            int down=nowy;
            while(right<=n)
            {
                right++;
                sum=sum+mp[right][nowy];
            }
            while(left>=1)
            {
                left--;
                sum=sum+mp[left][nowy];
            }
            while(up<=n)
            {
                up++;
                sum=sum+mp[nowx][up];
            }
            while(down>=1)
            {
                down--;
                sum=sum+mp[nowx][down];
            }
            MAXN=max(sum,MAXN);
            sum=0;
        }
        cout<<MAXN<<endl;
    }
  • 相关阅读:
    win10 UWP button
    内网分享资源
    内网分享资源
    CF724F Uniformly Branched Trees
    win10 UWP FlipView
    win10 UWP FlipView
    win10 UWP FlipView
    搭建阿里云 centos mysql tomcat jdk
    搭建阿里云 centos mysql tomcat jdk
    win10 UWP 申请微软开发者
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9245175.html
Copyright © 2011-2022 走看看