先n++, m++ 显然答案就是C(3, n*m) - m*C(3, n) - n*C(3, m) - cnt. 表示在全部点中选出3个的方案减去不合法的, 同一行/列的不合法方案很好求, 对角线的不合法方案cnt比较麻烦. 枚举对角线(左下-右上), 即(0, 0)-(x, y), 我们发现这种情况有(n-y)*(m-x)*2(算上左上-右下的)种, 然后中间有gcd(x, y)-1个点(不合法), 乘起来就好了. ---------------------------------------…
[BZOJ3505][Cqoi2014]数三角形 Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m和n. Output 输出一个正整数,为所求三角形数量. Sample Input 2 2 Sample Output 76 数据范围 1<=m,n<=1000 题解:显然要用补集法,我们只需要求出三点共线的方案数即可.方法是先枚举两端的点所形成的向…
Description: 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Hint: 1<=m,n<=1000 Solution: 直接算三角形肯定算死. 所以,先考虑所有的可能三角形.再减去不合法的三点共线的情况. 所有三角形:C((n+1)*(m+1),3) 不合法的情况怎么处理?? 开始的想法: 1.找所有的两端在坐标轴上的直线,算出来整点数:gcd(x,y)+1:再算上下,左右的直线. 但是发现可能有的不合法…
推导过程 : 组合数+容斥原理+gcd 正确做法是暴力的一种优化,ans=所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y)连成的线段而言(其中a>x,b>y), 在它们中间有gcd(a-x,b-x)-1个整点,因此基本的思路就是枚举两个点, 然后第3个点就是gcd(a-x,b-x)-1种可能了 至于为什么第3个点一定要在中间,是为了保证不重不漏,只用两边的点统计中间的点, 然而这样复杂度太高,于是可以发现,可以将这…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3505 好题啊好题...好像还曾经出现在什么智力测试卷中来着...当时不会现在还是无法自己推出来... 自己初步的想法是分类成有两点在一条横线上的和三点在不同横线上的: 第一类就是枚举两条横线,枚举有两点的横线上的两个位置,枚举另一点在横线上的位置,再交换两条横线: 也就是 C(n,2) * C(m,2) * m * 2: 第二类就枚举三条横线,再枚举三个位置: 也就是 C(n,3) * m…
[BZOJ1914]数三角形(组合数,极角排序) 题面 BZOJ权限题 良心洛谷 题解 这种姿势很吼啊,表示计算几何啥的一窍不通来着. 题目就是这样,正难则反,所以我们不考虑过原点的三角形, 反过来,总数减去不包含原点的三角形. 这个怎么计算呢? 我们每次先确定一个点,那么,所有在这个点和原点的连线下方的点都是可行的, 那么极角排序之后发现这就是一段连续的区间, 所以直接线性扫一遍就好了,组合数算算就没问题了. #include<iostream> #include<cstdio>…
极角排序后枚举每个点,计算其与原点连线的左侧的半平面内的点与其组成的三角形数(二分/尺取),这些都不是黄金三角形. 补集转化,用平面内所有三角形的个数(C(n,3))减去这些即可. 精度很宽松,几乎不用管. #include<cstdio> #include<algorithm> #include<cmath> using namespace std; typedef long long ll; typedef double db; #define N 100001 c…
Description 在一只大灰狼偷偷潜入Farmer Don的牛群被群牛发现后,贝西现在不得不履行着她站岗的职责.从她的守卫塔向下瞭望简直就是一件烦透了的事情.她决定做一些开发智力的小练习,防止她睡着了.想象牧场是一个X,Y平面的网格.她将N只奶牛标记为1…N (1 <= N <= 100,000),每只奶牛的坐标为X_i,Y_i (-100,000 <= X_i <= 100,000;-100,000 <= Y_i <= 100,000; 1 <= i &l…
参考:https://blog.csdn.net/u012288458/article/details/50830498 有点神啊 正难则反,考虑计算不符合要求的三角形.具体方法是枚举每个点,把这个点和(0,0)连线,然后连线左边的点两两组合和连线右边的点两两组合再和当前枚举的点组成三角形都是不符合要求的 发现一个不合法三角形可以被这样统计两次,所以只取一边就是所有不符合要求的三角形的总数了 然后这个怎么统计呢,是一个类似旋转卡壳的东西,先以(0,0)为极点极角排序,再定义一个变量r,区间[i+…
[Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 526  Solved: 262[Submit][Status][Discuss] Description 在一只大灰狼偷偷潜入Farmer Don的牛群被群牛发现后,贝西现在不得不履行着她站岗的职责.从她的守卫塔向下瞭望简直就是一件烦透了的事情.她决定做一些开发智力的小练习,防止她睡着了.想象牧场是一个X,Y平面的网格.她将…