【BZOJ】3505: [Cqoi2014]数三角形
题意
\(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]数三角形的更多相关文章
- 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个的方案减去不合法的, 同一行/列的不合法方案很好求, 对角线的不 ...
- BZOJ 3505: [Cqoi2014]数三角形 [组合计数]
3505: [Cqoi2014]数三角形 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注意三角形的三点不能共线. 1<=m,n<=1000 $n++ m++$ $ans ...
- BZOJ 3505 [Cqoi2014]数三角形
3505: [Cqoi2014]数三角形 Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形.注意三角形的三点不能共线. Input ...
- bzoj 3505 [Cqoi2014]数三角形(组合计数)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题意] 在n个格子中任选3点构成三角形的方案数. [思路] 任选3点-3点共线 ...
- BZOJ 3505 [Cqoi2014]数三角形(组合数学)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题目大意] 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注 ...
- bzoj 3505 [Cqoi2014]数三角形——排列组合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3505 好题!一定要经常回顾! 那个 一条斜线上的点的个数是其两端点横坐标之差和纵坐标之差的g ...
- bzoj 3505 [Cqoi2014]数三角形 组合
ans=所有的三点排列-共行的-共列的-斜着一条线的 斜着的枚举每个点和原点的gcd,反过来也可以,还能左右,上下挪 #include<cstdio> #include<cstrin ...
随机推荐
- FireFox每次访问页面时检查最新版本
FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...
- [NHibernate]增删改操作
目录 写在前面 文档与系列文章 添加数据 删除数据 修改数据 添加修改数据 总结 写在前面 上篇文章介绍了nhibernate的基于面向对象的条件查询.对一个项目来说,增删改查是必不可少的,虽然实现方 ...
- tyvj4541 zhx 提高组P1
背景 提高组 描述 在一个N×M的棋盘上,要求放置K个车,使得不存在一个车同时能被两个车攻击.问方案数. 输入格式 一行三个整数,N,M,K. 输出格式 一行一个整数,代表答案对1000001取模之后 ...
- POJ 2478 Farey Sequence
名字是法雷数列其实是欧拉phi函数 Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- UI第十节——UISwitch
- (void)viewDidLoad { [super viewDidLoad]; // 实例化UISwitch,固定大小 UISwitch *swc = [[UISwit ...
- Shell入门教程:Shell函数详解
Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...
- sql语句修改列
1.修改列名的常用语句 exec sp_rename '[dbo].[Table_1].[birthday]','birth' --将表中列名为birthday改为birdh 属性不变,用的是数据库 ...
- FZU 2112 并查集、欧拉通路
原题:http://acm.fzu.edu.cn/problem.php?pid=2112 首先是,票上没有提到的点是不需要去的. 然后我们先考虑这个图有几个连通分量,我们可以用一个并查集来维护,假设 ...
- BestCoder Round #90
有生以来第一场在COGS以外的地方打的比赛.挂成dog了. 主要是没有经验,加之代码能力过弱.还有最后的瞎hack三次,Too Young Too Simple...... 言归正传. (抄一发题解先 ...
- ASP.NET获取客户端的相关信息
/// <summary> /// 获取远程浏览器端 IP 地址 /// </summary> /// <returns> ...