• OpenJudge NOI 2.1 1661:Bomb Game


    【题目链接】

    OpenJudge NOI 2.1 1661:Bomb Game

    【题目翻译】

    题目

    炸弹游戏

    描述

    Bosko和Susko在一个有A行B列组成的矩形棋盘上玩一个有趣的游戏。
    当游戏开始时,Susko将他的虚拟碉堡放在棋盘的某一位置,然后Bosko选择某一区域扔他的虚拟炸弹。在每一次爆炸之后,Susko将会告诉Bosko他的碉堡是否在爆炸的范围中。
    扔在(R, S)的炸弹的爆炸范围是边长为P的正方形(P总是奇数)。正方形的中心在(R, S),正方形的边与棋盘的边平行,长度为P。
    在已经扔下一些炸弹之后, Bosko应该找出Susko碉堡的位置,然而这个位置可能不是唯一的,你的任务是帮助Bosko计算出可能的位置的数量。

    输入

    第一行包含三个整数A,B,和K(1 <= A, B, K <=100.)A表示行的数量,B表示列的数量,K表示扔炸弹的数量。
    接下来的K行包含了整数R, S, P 和T,描述了在第R行和第S列处投掷的炸弹,直径为P,1 <= R < = A,1 < = S < = B,1 < = P < = 99,P为奇‎‎数。如果碉堡在这个炸弹的范围内,T等于1;否则为 0。‎

    输出

    ‎输出Susko的碉堡可能存在的位置的数量。‎

    样例输入

    5 5 3
    3 3 3 1
    3 4 1 0
    3 4 3 1

    样例输出

    5

    来源

    Croatia OI 2002 National – Juniors

    【题目考点】

    1. 枚举

    【解题思路】

    枚举棋盘上的所有位置,假设碉堡存在于枚举出的一个位置,看此时炸弹轰炸的结果是否与给定的结果是相同的。如果所有炸弹轰炸后的结果与给定的结果都是相同的,那么当前碉堡所在的位置就是一个碉堡可能存在的位置,碉堡可能存在的位置计数加1。
    最后输出碉堡可能存在的位置数量。

    【题解代码】

    #include<bits/stdc++.h>
    using namespace std;
    #define N 105
    struct Bomb
    {
        int r, s, p, t;
        int isCover(int x, int y)//(x,y)位置是否在该炸弹的爆炸范围之内 
        {
            if(abs(x - r) <= p / 2 && abs(y - s) <= p / 2)
                return 1;
            else
                return 0;
        }
    };
    Bomb bm[N];//bm[i]:第i个炸弹 
    int main()
    {
        int a, b, k, ans = 0;//ans:可能的位置数 
        cin >> a >> b >> k;
        for(int i = 1; i <= k; ++i)
            cin >> bm[i].r >> bm[i].s >> bm[i].p >> bm[i].t;
        for(int i = 1; i <= a; ++i)
            for(int j = 1; j <= b; ++j)//假设碉堡在(i,j) 
            {
                bool isPos = true;//碉堡是否可能在(i,j) 
                for(int h = 1; h <= k; ++h)
                {
                    if(bm[h].isCover(i, j) != bm[h].t)//如果这个炸弹对(i,j)的覆盖结果与输入的预设的结果不同 
                    {
                        isPos = false;
                        break;
                    }
                }
                if(isPos)
                    ans++;
            }
        cout << ans;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    9.25
    红日靶场五(vulnstack5)渗透分析
    [回文串][贪心]leetcode6166:最大回文数字(medium)
    怎么在Python爬虫中使用IP代理以避免反爬虫机制?
    数字集成电路设计(五、仿真验证与 Testbench 编写)(五)
    1.数据存储的探究
    基于springboot+vue开发的教师工作量管理系
    初识AOS --------AOS学习笔记系列
    饼图、柱形图、堆积柱、折线图、散点图,到底应该怎么选?
    k8s-16 statefulse控制器
  • 原文地址:https://blog.csdn.net/lq1990717/article/details/125630031