蓝桥杯 平面切分

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T798
代码:

#include<set>
#include<iostream>
using namespace std;
int main() {
	pair<long double, long double>points;
	bool istrue[1010];
	int n;
	//下面这个变量用来存储划分空间的变量 
	long long  out = 0;
	cin >> n;
	//下面这个数组用来存储k,b。注意要将line设置为double类型,如果设置成int的话,只能对一半。因为下面算X坐标时,会涉及到除法。
	double  line[1010][2];

	for (int i = 0; i < n; i++) {
		cin >> line[i][0] >> line[i][1];
		istrue[i] = false;
		set<pair<long double, long double> >sum;
		for (int j = 0; j < i; j++) {
			if (istrue[j]) continue;
			if (line[j][0] == line[i][0] && line[j][1] == line[i][1]) {
				istrue[i] = true;
				break;
			}
			if (line[j][0] == line[i][0])
				continue;
			else {
				points.first = (-line[i][1] + line[j][1]) / (line[i][0] - line[j][0]);
				points.second = line[i][0] * points.first + line[i][1];
				sum.insert(points);
			}
		}
		if (!istrue[i])out = out + sum.size() + 1;
	}
	cout << out + 1;
	return 0;
}
上一篇:JQ前端设置鼠标滚轴控制滚动条为横向滚动


下一篇:uniapp tab选项卡简单demon