第二次CCF软件能力认证B题-画图 题型:模拟

79 阅读1分钟

3203. 画图 - AcWing题库

可以发现数据范围很小,可以用模拟来做

#include<bits/stdc++.h>
using  namespace std;
int n,sum;
	int suby , subx;
const int N=110;
int x1[N],x2[N],ya[N],y2[N];
int main()
{
	int n; cin >> n;
	for (int i=0;i<n;i++)
	{
		
		cin >> x1[i] >> ya[i] >> x2[i] >> y2[i];
	}


	for (int i=0;i<n;i++)
	{

			int a = abs(x2[i] - x1[i]);
		
			int b = abs(y2[i] - ya[i]);
	
			
			if(i!=n-1)
			{
			subx = abs(x2[i]-x1[i + 1]  );
			suby = abs( y2[i]-ya[i + 1] );
			}

		    

			sum = sum + (a * b) ;
			
	}
	
	cout<<sum- (subx * suby);

	return 0;
}

image.png

y总用的加法:

#include<bits/stdc++.h>
using  namespace std;
int n;
const int N=110;

bool st[N][N];
int main()
{
	int n; cin >> n;
	
	while(n--)
	{
    
    		
    	int x1,y1,x2,y2;	cin >> x1 >> y1 >> x2 >> y2;
    		
    		
        	for (int i=x1;i<x2;i++)
        	{
                 for(int j=y1;j<y2;j++)
                 {
                     st[i][j]=true;
                 }
        	}
     
    	
	}


    //统计一下所有被染色的格子的数量
    int res=0;
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
        {
            res+=st[i][j];
        }
    }
    cout<<res<<endl;

	return 0;
}

image.png