题意

\(n * m(1 \le n, m \le 1000)\)的网格,求顶点在格点上三角形的个数。

分析

假设\(n \le m\)

\(ans = \binom{(n+1) * (m+1)}{3} - L\),其中\(L\)表示三点共线的方案数。

所以

$$
\begin{align}
L
& = \frac{1}{2} \sum_{dx=0}^{n} \sum_{dy=0}^{m} \sum_{fx=0}^{n} \sum_{fy=0}^{m} (gcd(|dx-fx|, |dy-fy|)-1) \\
& = 2 \sum_{x=0}^{n} \sum_{y=0}^{m} \sum_{i=1}^{x} \sum_{j=1}^{y} (gcd(i, j)-1) + (m+1) \binom{n+1}{3} + (n+1) \binom{m+1}{3} \\
& = 2 f(n, m) + (m+1) \binom{n+1}{3} + (n+1) \binom{m+1}{3} \\
\\
f(n, m)
& = \sum_{x=0}^{n} \sum_{y=0}^{m} \sum_{i=0}^{x} \sum_{j=0}^{y} (gcd(i, j)-1) \\
& = \sum_{x=0}^{n} \sum_{y=0}^{m} \left( \sum_{i=0}^{x} \sum_{j=0}^{y} gcd(i, j) - x * y \right) \\
& = \sum_{x=0}^{n} \sum_{y=0}^{m} (g(x, y) - x * y) \\
\\
g(n, m)
& = \sum_{i=0}^{n} \sum_{j=0}^{m} gcd(i, j) \\
& = g(n, m-1) + \sum_{i=0}^{n} gcd(i, m) \\
& = g(n, m-1) + h(n, m) \\
\\
h(n, m)
& = \sum_{i=0}^{n} gcd(i, m) \\
& = h(n-1, m) + gcd(n, m) \\
\end{align}
$$

用这个$O(n^2 log n)$的是可以过的,所以就不用推下去了。

题解

分析已经推出一个\(O(n^2 log n)\)的做法,更优做法请自己推~

#include <bits/stdc++.h>
using namespace std;
const int N=1005;
typedef long long ll;
int gcd(int a, int b) {
return b?gcd(b, a%b):a;
}
int n, m;
ll G[N][N], f[N][N];
int main() {
scanf("%d%d", &n, &m);
ll ans=0, t=(n+1)*(m+1);
ans=(t*(t-1)*(t-2)-(ll)(n+1)*n*(n-1)*(m+1)-(ll)(m+1)*m*(m-1)*(n+1))/6;
for(int i=1; i<=n; ++i) {
for(int j=1; j<=m; ++j) {
f[i][j]=f[i-1][j]+gcd(i, j);
G[i][j]=G[i][j-1]+f[i][j];
}
}
t=0;
for(int x=0; x<=n; ++x) {
for(int y=0; y<=m; ++y) {
t+=G[x][y]-x*y;
}
}
printf("%lld\n", ans-t*2);
return 0;
}

【BZOJ】3505: [Cqoi2014]数三角形的更多相关文章

  1. BZOJ 3505: [Cqoi2014]数三角形 数学

    3505: [Cqoi2014]数三角形 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  2. Bzoj 3505: [Cqoi2014]数三角形 数论

    3505: [Cqoi2014]数三角形 Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits   Description

  3. bzoj 3505: [Cqoi2014]数三角形 组合数学

    3505: [Cqoi2014]数三角形 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 478  Solved: 293[Submit][Status ...

  4. BZOJ 3505: [Cqoi2014]数三角形( 组合数 )

    先n++, m++ 显然答案就是C(3, n*m) - m*C(3, n) - n*C(3, m) - cnt. 表示在全部点中选出3个的方案减去不合法的, 同一行/列的不合法方案很好求, 对角线的不 ...

  5. BZOJ 3505: [Cqoi2014]数三角形 [组合计数]

    3505: [Cqoi2014]数三角形 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注意三角形的三点不能共线. 1<=m,n<=1000 $n++ m++$ $ans ...

  6. BZOJ 3505 [Cqoi2014]数三角形

    3505: [Cqoi2014]数三角形 Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形.注意三角形的三点不能共线. Input ...

  7. bzoj 3505 [Cqoi2014]数三角形(组合计数)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题意] 在n个格子中任选3点构成三角形的方案数. [思路] 任选3点-3点共线 ...

  8. BZOJ 3505 [Cqoi2014]数三角形(组合数学)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题目大意] 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注 ...

  9. bzoj 3505 [Cqoi2014]数三角形——排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3505 好题!一定要经常回顾! 那个 一条斜线上的点的个数是其两端点横坐标之差和纵坐标之差的g ...

  10. bzoj 3505 [Cqoi2014]数三角形 组合

    ans=所有的三点排列-共行的-共列的-斜着一条线的 斜着的枚举每个点和原点的gcd,反过来也可以,还能左右,上下挪 #include<cstdio> #include<cstrin ...

随机推荐

  1. Git入门

    转: http://www.cnblogs.com/luxiaojun/p/5944145.html

  2. 使用safari对webview进行调试

    在web开发的过程中,抓包.调试页面样式.查看请求头是很常用的技巧.其实在iOS开发中,这些技巧也能用(无论是模拟器还是真机),不过我们需要用到mac自带的浏览器Safari.所以,本文将讲解如何使用 ...

  3. 【09-04】java内部类学习笔记

    java中的内部类 静态内部类 成员内部类 方法内部类 匿名内部类 1.静态内部类 class Outer { private static String outer = "outer&qu ...

  4. c# 网络

    http://www.cnblogs.com/fuchongjundream/p/4079128.html http://stackoverflow.com/questions/21728773/th ...

  5. SQL SERVER 中 GO 的用法

    用信号通知 Microsoft® SQL Server™ 实用工具一批 Transact-SQL 语句的结束.GO 不是 Transact-SQL 语句:而是可为 osql 和 isql 实用工具及 ...

  6. (五)SQL Server分区自动化案例

    需求定义 统计表可能达到每天1000万数据.只查询当天的数据用于统计,可归档三月前的数据.得出分区方案如下: 每天生成一个分区 归档三个月前的分区 基本架构 固定生成12个辅助数据库文件,将每年当月的 ...

  7. 基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装

    一.测试需求介绍与准备 公司计划服务器迁移过程计划同时上线SQL Server2012,引入SQL Server2012群集提高高可用性,需要对SQL Server2012群集技术进行研究.测试,确保 ...

  8. Linux进程间通信(九):数据报套接字 socket()、bind()、sendto()、recvfrom()、close()

    前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用. 一.简单回顾——什么是数据报套 ...

  9. HTTP参数污染

    HTTP Parameter Pollution简称HPP,所以有的人也称之为“HPP参数污染”. 一篇很不错关于HPP参数污染的文章:http://www.paigu.com/a/33478/235 ...

  10. ios 抓取真机的网络包

    一直被如何从真机上抓包所困扰!今天偶然看到了最简单有效的方法!分享一下: 原地址链接 http://blog.csdn.net/phunxm/article/details/38590561 通过 R ...