• AOJ 796.数三角形


    Time Limit: 5000 ms   Case Time Limit: 5000 ms   Memory Limit: 128 MB
    Total Submission: 112   Submission Accepted: 40
     
    Description
    ACMer最讨厌大段大段的题目描述了,尤其当题目描述是英文的时候。还好,1243France为大家准备了一道简洁且简单的问题。
    给出平面上n个点的坐标,求这n个点总共可以围成多少个面积大于0的三角形。
    保证每个点的横纵坐标均为整数且绝对值小于等于100。
    保证给出点当中没有重点
    Input
    输入数据包含多组,EOF结束
    每组数据第一行包含一个数n,表示有n个点(1 ≤ n ≤ 200)
    之后n行每行两个整数x,y表示一个点和横坐标及纵坐标(- 100 ≤ x,y≤ 100)
    Output
    对于每组输入,输出一个数k
    表示总共能围成k个面积大于0的三角形
    Sample Input
    Original Transformed
    4
    0 0
    1 1
    2 0
    2 2
    1
    1 1
    
    Sample Output
    Original Transformed
    3
    0

    只需要保证不存在三个点在一条直线即可

    (包括横坐标相同、纵坐标相同、斜率相同)

    (貌似我写的没有考虑到斜率不存在的情况欸~不过AC了)

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <string>
     6 #include <iostream>
     7 #include <vector>
     8 #include <list>
     9 #include <stack>
    10 using namespace std;
    11  
    12 #define REP(n) for(int o=0;o<n;o++)
    13  
    14 pair<int,int> p[205];
    15 bool Do() {
    16     int n;
    17     if(scanf("%d",&n) == EOF)
    18         return false;
    19     REP(n) {
    20         int x,y;
    21         scanf("%d%d",&x,&y);
    22         p[o] = pair<int,int>(x,y);
    23     }
    24     int cnt = 0;
    25     for(int i = 0;i < n;i++)
    26         for(int j = i + 1;j < n;j++)
    27             for(int k = j + 1;k < n;k++) {
    28                 if(i < j&&j < k) {
    29                     pair<int,int >a = p[i],b = p[j],c = p[k];
    30                     if(!(
    31                         (a.first == b.first&&a.first == c.first) ||
    32                         (a.second == b.second&&a.second == c.second) ||
    33                         ((double)(a.first - b.first) / (double)(a.second - b.second) ==
    34                             (double)(c.first - b.first) / (double)(c.second - b.second))
    35                         )) {
    36                         cnt++;
    37                         //printf("%d %d %d
    ",i,j,k);
    38                     }
    39                 }
    40             }
    41     printf("%d
    ",cnt);
    42  
    43     return true;
    44 }
    45  
    46 int main() {
    47     while(Do());
    48     return 0;
    49 }
  • 相关阅读:
    scrapy 常用代码
    pycahrm 基础设置
    pycahrm 激活
    pycharm 常用快捷键
    platform 系统是windows还是liunx
    (14)awk布尔值、比较和逻辑运算
    (13)gawk支持的正则表达式
    (12)awk数据类型和字面量
    (11)细说awk中的变量和变量赋值
    (10)print、printf、sprintf和重定向
  • 原文地址:https://www.cnblogs.com/ohyee/p/5313754.html
Copyright © 2020-2023  润新知