3505: [Cqoi2014]数三角形

Time Limit: 1 Sec

Memory Limit: 256 MB

题目连接

http://www.lydsy.com/JudgeOnline/problem.php?id=3505

Description

给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个。下图为4x4的网格上的一个三角形。

注意三角形的三点不能共线。

Input

输入一行,包含两个空格分隔的正整数m和n。

Output

输出一个正整数,为所求三角形数量。

Sample Input

2 2

Sample Output

76

HINT

1<=m,n<=1000

题意

题解:

任意选择三个不在同一条直线上的三个点即是满足题意的点

考虑补集,随意选择3个点,然后删除同一直线,同一斜线的就好了

直线上的比较简单,只用想斜线的就好了

枚举矩形,矩形的长宽分别为i,j,那么这个矩形的对角线就会经过gcd(i,j)-1个点

然后这个图里面可以放(n-i+1)*(m-j+1)个矩形

然后搞一搞就好了

代码:

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <bitset>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 510000
#define mod 10007
#define eps 1e-9
int Num;
//const int inf=0x7fffffff;   //§ß§é§à§é¨f§³
const int inf=0x3f3f3f3f;
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;
}
//**************************************************************************************

ll gcd(ll a,ll b)
{return b==0?a:gcd(b,a%b);
}
int main()
{ll n=read(),m=read();n++,m++;ll ans = (n*m)*(n*m-1)*(n*m-2LL)/6LL;ans -= n*(m*(m-1LL)*(m-2LL)/6LL);ans -= m*(n*(n-1LL)*(n-2LL)/6LL);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){ll tmp = gcd(i,j)+1LL;if(tmp>2LL)ans-=(tmp-2LL)*2LL*(n-i*1LL)*(m-j*1LL);}}printf("%lld\n",ans);
}

转载于:https://www.cnblogs.com/qscqesze/p/4776095.html

BZOJ 3505: [Cqoi2014]数三角形 数学相关推荐

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

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

  2. bzoj 3505: [Cqoi2014]数三角形

    Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 970  Solved: 595 [Submit][Status][Discuss] Descript ...

  3. bzoj3505 / P3166 [CQOI2014]数三角形

    P3166 [CQOI2014]数三角形 前置知识:某两个点$(x_{1},,y_{1}),(x_{2},y_{2})\quad (x_{1}<x_{2},y_{1}<y_{2})$所连成 ...

  4. P3166 [CQOI2014]数三角形(组合数学)

    P3166 [CQOI2014]数三角形(组合数学) 整点三角形个数. 正难则反,求出总方案和共线三角形方案数即可. 总方案:C((n+1)(m+1),3)C((n+1)(m+1),3)C((n+1) ...

  5. 【BZOJ 3505】 [Cqoi2014]数三角形 容斥原理+排列组合+GCD

    我们先把所有三角形用排列组合算出来,再把一行一列上的三点共线减去,然后我们只观察向右上的三点共线,向左上的乘二即可,我们发现我们如果枚举所有的两边点再乘中间点的个数(GCD),那么我们发现所有的两边点 ...

  6. [CQOI2014]数三角形 题解(找规律乱搞)

    题面 其实这道题不用组合数!不用容斥! 只需要一个gcd和无脑找规律(滑稽 乍一看题目,如果单纯求合法三角形的话情况太多太复杂,我们可以从局部入手,最终扩展到整体. 首先考虑这样的情况: 类似地,我们 ...

  7. 洛谷 P3166 [CQOI2014]数三角形(gcd+组合计数)

    题目描述 给定一个 N×MN\times MN×M 的网格,请计算三点都在格点上的三角形共有多少个.注意三角形的三点不能共线. 输入格式 输入一行,包含两个空格分隔的正整数 MMM 和 NNN . 输 ...

  8. P3166 [CQOI2014]数三角形

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  9. P3166 [CQOI2014]数三角形(结论)

    https://www.luogu.com.cn/problem/P3166 思路: cf也有一道几乎一致的题,但是那题是2e3个点,可以n^2logn,先算出总数C(n,3),然后预处理经过某个点的 ...

  10. [CQOI2014]数三角形 组合数 + 容斥 + gcd

    推导过程 : 组合数+容斥原理+gcd 正确做法是暴力的一种优化,ans=所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y ...

最新文章

  1. UVA1411 Ants(带权二分图的最大完美匹配、zkw费用流)
  2. 扩增子统计绘图1箱线图:Alpha多样性
  3. java公平索非公平锁_Java 并发编程中使用 ReentrantLock 替代 synchronized
  4. mysql 设置某个字段等于某个字段_学习记录-第十八天(李玉婷MySQL基础 第12天)...
  5. mysql insert 主键冲突_insert 时防止出现主键冲突错误的方法
  6. NHMicro业务脚本热部署快速开发框架介绍
  7. js中用script 嵌套script块
  8. 选择Ruby的37个理由【转载】
  9. 运维学python用不上_运维工程师为什么要学python?
  10. oracle强大函数,oracle 函数排行
  11. 如何获取 WebAssembly 代码
  12. go任务调度2(linux的cron调用)
  13. activity mq shared filesystem 部署
  14. 文件夹的菜单栏和地址栏不见了
  15. java拆弹,CSAPP lab2 二进制拆弹 binary bombs phase_2
  16. 猫哥教你写爬虫 031--爬虫基础-html
  17. [SSL_CHX][2021-8-18]取余
  18. 傅里叶分析的方方面面:复正弦、负频率
  19. EXCEL 边框 去不掉的解决方法
  20. 2022年低压电工复训题库及在线模拟考试

热门文章

  1. 云计算学习之路——Nginx流量控制
  2. Windows最值得安装的小众软件
  3. 用C++实现QQ自动登陆器,仿佛开了外挂,秒杀各种神操作!
  4. 2023系统分析师综合知识必备知识点
  5. 国内智能工厂建设现状以及未来发展趋势介绍
  6. python cv2 截取视频指定帧图片
  7. 巨潮网怎么下载年报_如何下载上市公司的年度报告
  8. 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
  9. Bingo学习--redis
  10. c语言输出实心心矩形,c语言打印空白星号矩形