P2789 直线交点数

Posted WeiAR

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2789 直线交点数相关的知识,希望对你有一定的参考价值。

P2789 直线交点数
分成两种情况,一种是平行直线,一种是自由直线,在自由直线中可以存在平行直线,但是不能和第一组的直线平行。自由直线和平行直线的交点是i*(n-i)。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<ctime>
 7 #include<set>
 8 #include<cstring>
 9 #define inf INT_MAX
10 #define For(i,a,b) for(register int i=a;i<=b;i++)
11 #define p(a) putchar(a)
12 #define g() getchar()
13 //by war
14 //2017.10.26
15 using namespace std;
16 int n;
17 int tot;
18 bool f[30][900];
19 
20 void in(int &x)
21 {
22     int y=1;
23     char c=g();x=0;
24     while(c<0||c>9)
25     {
26     if(c==-)
27     y=-1;
28     c=g();
29     }
30     while(c<=9&&c>=0)x=x*10+c-0,c=g();
31     x*=y;
32 }
33 void o(int x)
34 {
35     if(x<0)
36     {
37         p(-);
38         x=-x;
39     }
40     if(x>9)o(x/10);
41     p(x%10+0);
42 }
43 int main()
44 {
45     in(n);
46     For(i,0,n)
47     f[i][0]=true;
48     For(i,1,n)
49       For(fr,1,i-1)
50         For(j,0,(i-1)*i/2)
51           if(f[fr][j])
52           f[i][fr*(i-fr)+j]=true;
53     For(i,0,800)
54     if(f[n][i])
55     tot++;
56     o(tot);      
57      return 0;
58 }

 

以上是关于P2789 直线交点数的主要内容,如果未能解决你的问题,请参考以下文章

P2789 直线交点数

计算直线的交点数

直线交点

HDOJ7079Pty loves lines(计算直线的交点方案数,打表)

[数学]点线面分割问题

求两条平行线上的 n 条线段与端点的交点数