Dilk4. 大V
时间限制:1.0s 内存限制:256.0MB 代码提交间隔:3分钟(现在可以提交)
问题描述
当夜深人静时,小明喜欢独自凝望着天空。
这一天,小明看着满天的繁星,突发奇思妙想,他发现可以通过用直线连接天空中的星星来组成美丽的图案。
小明想到一个非常简单的图案:大写的V,如果连接三颗星星,中间一颗最靠下方,这样的形状就是一个大V了。
小明越想越着迷,他想知道,天空中最亮的 n 颗星星,可以有多少种方式组成大V。
为了更严谨的看待问题,小明把自己所见范围的天空映射到了一个平面直角坐标系中,他看到的最亮的 n 颗星星在这个坐标系中都有自己的坐标。
如果三颗星星的坐标分别为 (x_i, y_i), (x_j, y_j), (x_k, y_k),当 x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k 时,这三颗星星就组成了一个大 V。
输入格式
输入的第一行包含一个整数 n 。
接下来 n 行,每行两个整数,每一行表示一颗星星的 x 坐标和 y 坐标。
输出格式
输出一行包含一个整数,表示有多少种方式组成大V。
样例输入
5
4 5
2 3
1 4
3 3
5 8
样例输出
4
评测用例规模与约定
对于 30% 的评测用例,2 <= n <= 50,星星的坐标为不超过 1000 的非负整数。
对于 50% 的评测用例,2 <= n <= 100,星星的坐标为不超过 1000 的非负整数。
对于 80% 的评测用例,2 <= n <= 1000,星星的坐标为不超过 10000 的非负整数。
对于所有评测用例,2 <= n <= 5000,星星的坐标为不超过 100000 的非负整数。
#include
using namespace std;
int main()
{
int n;
cin >> n;
int abc[n][2];
int sum = 0;
for (int i=0; i> abc[i][0] >> abc[i][1];
}
for (int i=0; i[i][0][j][0]&&abc[j][0][k][0]) && (abc[j][1][i][1]) && (abc[j][1][k][1])) {
sum = sum + 1;
}
else if ((abc[k][0][j][0]&&abc[j][0][i][0]) && (abc[j][1][i][1]) && (abc[j][1][k][1])) {
sum = sum + 1;
}
else if ((abc[k][0][i][0]&&abc[i][0][j][0]) && (abc[i][1][k][1]) && (abc[i][1][j][1])) {
sum = sum + 1;
}
else if ((abc[j][0][i][0]&&abc[i][0][k][0]) && (abc[i][1][k][1]) && (abc[i][1][j][1])) {
sum = sum + 1;
}
else if ((abc[i][0][k][0]&&abc[k][0][j][0]) && (abc[k][1][i][1]) && (abc[k][1][j][1])) {
sum = sum + 1;
}
else if ((abc[j][0][k][0]&&abc[k][0][i][0]) && (abc[k][1][i][1]) && (abc[k][1][j][1])) {
sum = sum + 1;
}
}
}
}
cout << sum << endl;
return 0;
}
帮帮我
import java.util.Scanner;
public class test9 {
public static void main(String[] args) {
Scanner Input = new Scanner(System.in);
int n = Input.nextInt();
int abc[][] = new int[n][2];
int sum =0;
for(int i=0;i<n;i++){
abc[i][0]= Input.nextInt();
abc[i][1]= Input.nextInt();
} //完成输入
for(int i=0;i<abc.length;i++){ //选取第一个点
for(int j=i+1;j<abc.length;j++){ //之后选取第二个点
for(int k=j+1;k<abc.length;k++){ //之后选取第三个点
//看三个点是否满足当题中( x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k)
//三个点的排列一共有6种情况,直接进行判断,是否符合这6种情况的其中一种
if((abc[i][0]<abc[j][0]&&abc[j][0]<abc[k][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;
else if((abc[k][0]<abc[j][0]&&abc[j][0]<abc[i][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;
else if((abc[k][0]<abc[i][0]&&abc[i][0]<abc[j][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;
else if((abc[j][0]<abc[i][0]&&abc[i][0]<abc[k][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;
else if((abc[i][0]<abc[k][0]&&abc[k][0]<abc[j][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;
else if((abc[j][0]<abc[k][0]&&abc[k][0]<abc[i][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;
}
}
}
System.out.println(sum);
}
}