bzoj3505【CQOI2014】数三角形
来源:互联网 发布:mac imovie 编辑:程序博客网 时间:2024/06/05 04:06
3505: [Cqoi2014]数三角形
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1036 Solved: 636
[Submit][Status][Discuss]
Description
给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个。下图为4x4的网格上的一个三角形。
注意三角形的三点不能共线。
Input
输入一行,包含两个空格分隔的正整数m和n。
Output
输出一个正整数,为所求三角形数量。
Sample Input
2 2
Sample Output
76
数据范围
1<=m,n<=1000
数据范围
1<=m,n<=1000
直接求不好求,运用补集思想,转化成求三点共线的数量。
水平和竖直共线,直接用组合数求出。倾斜的枚举两边点的相对位置,再用最大公约数求解。
#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>#define F(i,j,n) for(int i=j;i<=n;i++)#define D(i,j,n) for(int i=j;i>=n;i--)#define ll long longusing namespace std;ll n,m,ans;inline ll read(){ll x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}inline int gcd(int a,int b){return b?gcd(b,a%b):a;}int main(){n=read()+1;m=read()+1;ans=(n*m)*(n*m-1)*(n*m-2)/6;if (n>=3) ans-=n*(n-1)*(n-2)/6*m;if (m>=3) ans-=m*(m-1)*(m-2)/6*n;F(i,1,n-1) F(j,1,m-1){int tmp=gcd(i,j)+1;ans-=(n-i)*(m-j)*(tmp-2)*2;}printf("%lld\n",ans);return 0;}
0 0
- [Bzoj3505][Cqoi2014]数三角形
- bzoj3505 [Cqoi2014]数三角形
- bzoj3505: [Cqoi2014]数三角形
- bzoj3505 [Cqoi2014]数三角形
- 【CQOI2014】【BZOJ3505】数三角形
- bzoj3505【CQOI2014】数三角形
- bzoj3505: [Cqoi2014]数三角形
- 【bzoj3505】[Cqoi2014]数三角形
- bzoj3505 [Cqoi2014]数三角形
- bzoj3505 [Cqoi2014]数三角形
- BZOJ3505 [Cqoi2014]数三角形
- 【bzoj3505】 CQOI2014数三角形 数学
- bzoj3505 [Cqoi2014]数三角形 题解
- BZOJ3505 [Cqoi2014]数三角形 数学
- 【bzoj3505】【CQOI2014】【数三角形】【组合数学】
- BZOJ3505: [Cqoi2014]数三角形 解题报告
- 组合数学+gcd BZOJ3505 [Cqoi2014]数三角形
- 【组合】BZOJ3505(Cqoi2014)[数三角形]题解
- 【DP经典系列】最大连续子序列和
- 铺地砖
- 机器学习之SVM算法(一)KKT条件
- windows下Perl安装使用
- 如何在安装好myecplise后添加新的jdk
- bzoj3505【CQOI2014】数三角形
- windows下diff安装使用
- Swift 项目中可能用到的第三方框架
- 求助一题C#作业
- windows下git安装使用
- windows下cmake安装使用
- 求错误!
- bzoj3506【CQOI2014】排序机械臂 bzoj1552【CERC2007】robotic sort
- 总结下最近的面试经验