题意:给你一张n*m(n,m<=1000)的网格图,问有多少个顶点在格点上的三角形(共线不算). 首先补集转化,不考虑共线的方案是C(n*m,3),减去共线方案数即可. 对于共线方案数的统计,首先可以考虑O(n^4)暴力枚举两个端点(x1,y1)(x2,y2),中间的点有gcd(x2-x1,y2-y ...
分类:
其他好文 时间:
2016-10-24 15:52:19
阅读次数:
295
题目链接 先算在n*m个点中任选3个的方案数,再减去三点共线的方案数 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include<st
分类:
其他好文 时间:
2016-03-07 07:49:48
阅读次数:
205
枚举对角线。。。 1 #include 2 #define lowbit(a) ((a)&(-(a))) 3 #define clr(a,x) memset(a,x,sizeof(a)) 4 #define rep(i,l,r) for(int i=l;i<(r);i++) 5 typedef lo...
分类:
其他好文 时间:
2015-09-04 21:08:13
阅读次数:
171
放假刷了一个月的水题,集中写一下题解吧。bzoj1858:线段树随便维护一下。 code
bzoj2705:莫比乌斯反演裸题。 code
bzoj1202:并查集,但是我写了一种跟floyd很像的奇怪的东西。 code
bzoj1072:暴力。
bzoj2431:dp f[i][j]=sum(f[i-1],[k]) code
bzoj3505:组合数学。 code
bzoj1058:...
分类:
其他好文 时间:
2015-08-31 13:42:02
阅读次数:
210
http://blog.csdn.net/zhb1997/article/details/38474795#include#include#includeusing namespace std;typedef long long ll;int n,m;ll ans;int main(){// fr....
分类:
其他好文 时间:
2015-06-18 23:34:33
阅读次数:
205
我们发现如果直接枚举是不行的先把所有状况算出来,然后减掉三点共线的情况:(1)同行或同列(2)同一条对角线,只需要算gcd,就可以算出来这个斜率下的总数量 1 /************************************************************** 2 ...
分类:
其他好文 时间:
2015-03-17 21:29:15
阅读次数:
91
题目大意:给一张m*n的网格,问这里面以网格为顶点的三角形有多少个。
思路:数学题。首先算出所有互不相同的三点对,然后减掉其中三个点在一个直线上的点对就行了。注意答案开long long。
CODE:
#include
#include
#include
#include
using namespace std;
int m,n;
int Gcd(int ...
分类:
其他好文 时间:
2014-10-04 19:06:07
阅读次数:
191
题目大意:
给定一个m*n的方格,求上面有多少个格点三角形
m,n
枚举O(m^3*n^3),铁定超时
我们选择补集法
首先我们任意选择三个不重复的点构成三角形 用组合数算出这一值 然后刨除三点一线的点即可
枚举三点之中在两边的点的横纵坐标之差,中间点的位置数为GCD(x,y)-1,统计答案即可
注意初始计算组合数时可能会爆int
#include
#include
#includ...
分类:
其他好文 时间:
2014-10-04 17:14:46
阅读次数:
184