1 条题解

  • 0
    @ 2025-8-24 22:13:50

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar SUNCHAOYI
    报名个人赛 https://www.luogu.com.cn/contest/44296

    搬运于2025-08-24 22:13:50,当前版本为作者最后更新于2020-01-18 21:13:06,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    • 这道题先设置一个三维数组,表示该物体的长宽高。

    • 然后每一次读入一组对角线,就把该范围内的数组数据标记为 11

    • 最后只要全部扫一遍判断还剩几个为 00 的数组数据,表示还剩多少块。

    注意,输入对角线后的范围内的方块可能在之前已被清除,千万不要重复清除哦!


    贴代码了:

    #include <iostream>
    #include <cmath>
    using namespace std;
    const int MAX = 30;
    int sq[MAX][MAX][MAX] = {0};//一开始均默认为0,表示方块还在 
    int main()
    {
    	int a,b,c,n,ans = 0;
    	cin>>a>>b>>c>>n;
    	while(n--)
    	{
    		int x1,y1,z1,x2,y2,z2;
    		cin>>x1>>y1>>z1>>x2>>y2>>z2;
    		for(int i = x1;i <= x2;i++)
    			for(int j = y1;j <= y2;j++)
    				for(int k = z1;k <= z2;k++) sq[i][j][k] = 1;//该范围的方块标记为1,表示已被切除 
    	}
    	for(int i = 1;i <= a;i++)
    		for(int j = 1;j <= b;j++)
    			for(int k = 1;k <= c;k++)
    				if(sq[i][j][k] == 0) ans++;//判断该方块是否还在 
    	cout<<ans<<endl;//输出答案 
    	return 0;
    } 
    
    • 1

    信息

    ID
    4707
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者