本文主要是介绍csp 田地丈量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
4 10 100 0 5 55 -2 15 38 8 15 15-2 10 3 15样例输出44
解题思路:
由题意可知,(a,b)坐标必定大于,都位于第一象限,即所计算的面积必定都在第一象限内。通过观察样例可知,通过对输入的每一个坐标进行讨论,可以将所有的坐标都转换在第一象限里。每一个坐标的横纵坐标又要分开讨论,分三种情况,分别是在(a,b)范围之内,在(a,b)范围之外(横坐标大于a,纵坐标大于b),其次就是坐标出现负数的情况,这个时候就需要把他变换到第一象限来,之后就是横坐标相减得到长(宽),纵坐标相减得到宽(长),二者相乘就得到了面积,之后在把所有的面积都累计相加即可。
#include <iostream>
using namespace std;int main()
{int n,a,b;cin>>n>>a>>b;int x1,y1,x2,y2,sum = 0;for(int i = 0;i < n;i++){cin>>x1>>y1>>x2>>y2;if(x1 >= 0&&x1 <= a) x1 = x1;else if(x1 < 0) x1 = 0;else x1 = a;if(y1 >= 0&&y1 <= b) y1 = y1;else if(y1 < 0) y1 = 0;else y1 = b;if(x2 >= 0&&x2 <= a) x2 = x2;else if(x2 < 0) x2 = 0;else x2 = a;if(y2 >= 0&&y2 <= b) y2 = y2;else if(y2 < 0) y2 = 0;else y2 = b;sum += (x2-x1)*(y2-y1);} cout<<sum<<endl;return 0;
}
这篇关于csp 田地丈量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!