迷失传奇网站naocq,百科创建,wordpress添加插件,莎娜琳官方网站做水1. 三角形(trokuti.cpp/c/pas)? 【 问题描述 】? 平面上有N条直线#xff0c;用方程A i x B i y C i0表示。这些直线没有三线共点的。现在要你计算出用这些直线可以构造出多少三角形#xff1f;【 输入格式 】? 第1行#xff1a;一个整数N(1 ≤ N≤ 300000)。? 下面N行…1. 三角形(trokuti.cpp/c/pas)? 【 问题描述 】? 平面上有N条直线用方程A i x B i y C i0表示。这些直线没有三线共点的。现在要你计算出用这些直线可以构造出多少三角形【 输入格式 】? 第1行一个整数N(1 ≤ N≤ 300000)。? 下面N行每行3个整数Ai, Bi 和Ci表示对应直线方程的系数。不超过10^9.【 输出格式 】一行一个整数。input 160 1 0-5 3 0-5 -2 250 1 -30 1 -2-4 -5 29input 25-5 3 0-5 -3 -300 1 03 7 351 -2 -1output 110output 210【 数据规模与约定 】? 对于40%的数据N ≤1000? 对于100%的数据N≤300000。 /*暴力乱搞 3个点15分*/
#includecstdio
#includeiostream
using namespace std;
struct node
{int a,b,c;
} f[30010];
int n,g[3010][3010],s[30010]{0};
long long ans0;
int main()
{
// freopen(trokuti.in,r,stdin);
// freopen(trokuti.out,w,stdout);scanf(%d,n);for (int i1;in;i)scanf(%d%d%d,f[i].a,f[i].b,f[i].c);for (int i1;in-1;i)for (int ji1;jn;j)if ((f[i].a*f[j].b-f[i].b*f[j].a)!0) {s[i];g[i][s[i]]j;}int x,y;for (int i1;in;i)for (int j1;js[i];j){xg[i][j];ys[x];for (int k1;ky;k){int tg[x][k];if ((f[i].a*f[t].b-f[i].b*f[t].a)!0 (f[x].a*f[t].b-f[x].b*f[t].b)!0)ans; }}//printf(%I64d,ans); coutans;
// fclose(stdin);
// fclose(stdout);return 0;
} /*正解先计算斜率 再排序3个不同斜率的直线可构成三角形 当有两条斜率相同 或 三条斜率都相同时不行 所以要排除这两种可能 运用数论组合排列*/
#includecstdio
#includeiostream
#includealgorithm
#define N 300010
using namespace std;
double k[N],a[N],b[N],c[N];
long long n,cnt,len[N];
long long C(long long x,long long num)
{if (num2)return x*(x-1)/2;if (num3)return x*(x-1)*(x-2)/6;
}
int main()
{//freopen(trokuti.in,r,stdin);//freopen(trokuti.out,w,stdout);cinn;for (long long i1;in;i){scanf(%lf%lf%lf,a[i],b[i],c[i]);k[i]-a[i]/b[i];}sort(k1,kn1);len[cnt]1;double nowk[1];for (long long i2;in;i)if (k[i]!now){len[cnt]1;nowk[i];}else len[cnt];long long ansC(n,3);for (long long i1;icnt;i){if (len[i]2)ans-C(len[i],2)*(n-len[i]);if (len[i]3)ans-C(len[i],3);}coutans;//fcolse(stdin);//fclose(stdout);return 0;
} 转载于:https://www.cnblogs.com/xiaoqi7/p/5997868.html