【CQOI2014】数三角形
题面
题解
考虑使用总数减去不合法的数量
首先将\(n, m\)都加上\(1\),将网格变成坐标系
总数即为\(\large\binom{n\times m}{3}\)
不合法的有三种情况:
- 三个点在同一行上。每一行有\(\binom{m}{3}\)种不合法的情况,有\(n\)行,总数\(n\cdot\binom m3\) 
- 三个点在同一列上。每一列有\(\binom n3\)种不合法的情况,有\(m\)行,总数\(m\cdot\binom n3\) 
- 三个点在同一条斜线上 - 如果斜率为正,那么将一个点移动到原点,然后枚举另外一个点,这样的直线有 - \((n - i)(m - j)\)条 - 然后斜率可能为负,\(\times 2\)即可 - 于是总数就是\(2\sum\limits_{i=1}^{n-1}\sum\limits_{j=1}^{m-1}(\gcd(i,j)-1)(n-i)(m-j)\) 
于是答案为
\]
代码
结论题的代码就是好打
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define RG register
inline int read()
{
	int data = 0, w = 1; char ch = getchar();
	while(ch != '-' && (!isdigit(ch))) ch = getchar();
	if(ch == '-') w = -1, ch = getchar();
	while(isdigit(ch)) data = data * 10 + (ch ^ 48), ch = getchar();
	return data * w;
}
inline long long C(int x) { return 1ll * x * (x - 1) * (x - 2) / 6; }
long long ans; int n, m;
int main()
{
	n = read() + 1, m = read() + 1;
	ans = C(n * m) - n * C(m) - m * C(n);
	for(RG int i = 1; i < n; i++)
		for(RG int j = 1; j < m; j++)
			ans -= 2ll * (std::__gcd(i, j) - 1) * (n - i) * (m - j);
	printf("%lld\n", ans);
	return 0;
}
【CQOI2014】数三角形的更多相关文章
- BZOJ 3505: [Cqoi2014]数三角形 数学
		3505: [Cqoi2014]数三角形 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ... 
- Bzoj 3505: [Cqoi2014]数三角形  数论
		3505: [Cqoi2014]数三角形 Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description 
- bzoj 3505: [Cqoi2014]数三角形 组合数学
		3505: [Cqoi2014]数三角形 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 478 Solved: 293[Submit][Status ... 
- BZOJ 3505: [Cqoi2014]数三角形( 组合数 )
		先n++, m++ 显然答案就是C(3, n*m) - m*C(3, n) - n*C(3, m) - cnt. 表示在全部点中选出3个的方案减去不合法的, 同一行/列的不合法方案很好求, 对角线的不 ... 
- 3505: [Cqoi2014]数三角形
		3505: [Cqoi2014]数三角形 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1324 Solved: 807[Submit][Statu ... 
- BZOJ 3505: [Cqoi2014]数三角形 [组合计数]
		3505: [Cqoi2014]数三角形 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注意三角形的三点不能共线. 1<=m,n<=1000 $n++ m++$ $ans ... 
- [CQOI2014]数三角形
		[CQOI2014]数三角形 给定\(n\times m\)的网格,求三个点在其格点上的三角形个数,1<=m,n<=1000. 解 法一:直接 显然为组合计数问题,关键在于划分问题,注意到 ... 
- bzoj3505 / P3166 [CQOI2014]数三角形
		P3166 [CQOI2014]数三角形 前置知识:某两个点$(x_{1},,y_{1}),(x_{2},y_{2})\quad (x_{1}<x_{2},y_{1}<y_{2})$所连成 ... 
- BZOJ 3505 [Cqoi2014]数三角形
		3505: [Cqoi2014]数三角形 Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形.注意三角形的三点不能共线. Input ... 
- 【BZOJ3505】[Cqoi2014]数三角形 组合数
		[BZOJ3505][Cqoi2014]数三角形 Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. ... 
随机推荐
- 【 PostgreSQL】后台周期执行函数实例(shell+crontab)
			工作中常见函数后台周期执行的情况,Oracle有job实现,gp数据库可以通过shell+crontab实现.流程如下: gpadmin用户下创建函数sh脚本. 将sh挂在crontab任务上 ### ... 
- procexp
			https://www.cnblogs.com/iTBear/articles/2789151.html 
- CSS学习摘要-浮动与清除浮动
			以下从浮动到BFC的段落 摘自MDN 网络开发者 float 浮动 float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它.该元素从网页的正常流动中移除,尽管仍然保持部 ... 
- maven项目中引入Jstl
			<dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api& ... 
- playfair
			又是一道实验吧的题,哈哈,我比较弱. 因为题目写了play我首先想到的是playfair,好,下面先看下百科 好了,已知了密钥: 所以有: s n f m th b g o ui c j p vy d ... 
- XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit
			https://documentation.devexpress.com/WindowsForms/DevExpress.XtraEditors.LookUpEditBase.class 一.Look ... 
- JVM源码分析之堆外内存完全解读
			JVM源码分析之堆外内存完全解读 寒泉子 2016-01-15 17:26:16 浏览6837 评论0 阿里技术协会 摘要: 概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们 ... 
- 为什么ConcurrentHashMap是弱一致的
			为什么ConcurrentHashMap是弱一致的 本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识.ha ... 
- 【原创】Apache ab结果参数详解
			解释如下: Server Software 服务器软件软件名称. Server Hostname 被测服务器的主机名. Server Port 被测试的Web服务器的监听端口. SSL/TLS Pro ... 
- AbstractApplicationContext 笔记
			一.这个类的属性 public abstract class AbstractApplicationContext extends DefaultResourceLoader implements C ... 
