三角形
/* windows下long long 用I64d,不长记性! 斜率没有的时候那个赋值不能用-1,因为有可能有斜率为-1的直线(虽然这题数据里没有。要赋成负无穷 */ #include<cstdio> #include<cstring> #include<iostream> #include<map> #define INF 1e9+5 using namespace std; #define ll long long int n; double b[100010]; map<double,ll>a; ll c(int n,int m) { if(n<m)return 0; ll s=1,i; for(i=n;i>=n-m+1;i--)s*=i; for(i=1;i<=m;i++)s/=i; return s; } int main() { freopen("trokuti.in","r",stdin); freopen("trokuti.out","w",stdout); scanf("%d",&n); ll tot=0,k; for(int i=1;i<=n;i++) { ll A,B,C; scanf("%I64d%I64d%I64d",&A,&B,&C); if(B==0) a[-INF]++;//记录没有斜率的直线 else { double q=(double(A)/B)*1.0;//不是真正的斜率,只是一个比值 if(a[q]==0) b[++tot]=q;//tot记录不同斜率直线的种类 a[q]++;//斜率同为q的直线有多少条 } } if(a[-INF]) b[++tot]=-INF;//如果有无斜率的直线,那么再加一种斜率 ll ans=c(n,3); for(int i=1;i<=tot;i++) { k=a[b[i]]; ans-=c(k,3);//三边平行或重合 ans-=c(k,2)*(n-k);//两边平行或重合 } printf("%I64d",ans); fclose(stdin);fclose(stdout); return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥