【组合】BZOJ3505(Cqoi2014)[数三角形]题解
题目概述
求 n×mn\times m 网格中的三角形个数。
解题报告
首先肯定是用总方案数 (n3)n\choose 3 减去不合法的方案数要方便很多。但是怎么求不合法(三点共线)的方案数?
有个结论是横长为 xx 纵长为 yy 的线段中整点的个数为 gcd(x,y)+1gcd(x,y)+1 ,yy一下不难得出。
那么只要枚举 x,yx,y ,然后算出共线三角形的方案数 gcd(x,y)−1gcd(x,y)-1 ,再把这条线段放入网格(共有 (n−x+1)(m−y+1)(n-x+1)(m-y+1) 种方案)就行了。
示例程序
#include<cstdio>
using namespace std;
typedef long long LL;int n,m;LL ans;#define C(x) ((LL)(x)*((x)-1)*((x)-2)/6)
int gcd(int a,int b) {if (!b) return a;return gcd(b,a%b);}
int main()
{freopen("program.in","r",stdin);freopen("program.out","w",stdout);scanf("%d%d",&m,&n);n++;m++;ans=C(n*m);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++) if (i>1||j>1){LL now=(LL)(n-i+1)*(m-j+1)*(gcd(i-1,j-1)-1);ans-=now;if (i-1&&j-1) ans-=now;}return printf("%lld\n",ans),0;
}
【组合】BZOJ3505(Cqoi2014)[数三角形]题解相关推荐
- [CQOI2014]数三角形 题解(找规律乱搞)
题面 其实这道题不用组合数!不用容斥! 只需要一个gcd和无脑找规律(滑稽 乍一看题目,如果单纯求合法三角形的话情况太多太复杂,我们可以从局部入手,最终扩展到整体. 首先考虑这样的情况: 类似地,我们 ...
- bzoj3505 / P3166 [CQOI2014]数三角形
P3166 [CQOI2014]数三角形 前置知识:某两个点$(x_{1},,y_{1}),(x_{2},y_{2})\quad (x_{1}<x_{2},y_{1}<y_{2})$所连成 ...
- P3166 [CQOI2014]数三角形(组合数学)
P3166 [CQOI2014]数三角形(组合数学) 整点三角形个数. 正难则反,求出总方案和共线三角形方案数即可. 总方案:C((n+1)(m+1),3)C((n+1)(m+1),3)C((n+1) ...
- 2023NHOI数三角形题解
第五题数三角形(e.cpp)[题目描述]已知一个包含n个非负整数的数组a,要从中选出三个数作为三角形的三条边的边长,有多少种不同的选法.注意:要组成三角形需要满足的条件是任意两边之和大于第三边.[输入 ...
- 【BZOJ 3505】 [Cqoi2014]数三角形 容斥原理+排列组合+GCD
我们先把所有三角形用排列组合算出来,再把一行一列上的三点共线减去,然后我们只观察向右上的三点共线,向左上的乘二即可,我们发现我们如果枚举所有的两边点再乘中间点的个数(GCD),那么我们发现所有的两边点 ...
- 洛谷 P3166 [CQOI2014]数三角形(gcd+组合计数)
题目描述 给定一个 N×MN\times MN×M 的网格,请计算三点都在格点上的三角形共有多少个.注意三角形的三点不能共线. 输入格式 输入一行,包含两个空格分隔的正整数 MMM 和 NNN . 输 ...
- BZOJ 3505 [Cqoi2014]数三角形(组合数学)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题目大意] 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注 ...
- bzoj 3505: [Cqoi2014]数三角形
Time Limit: 10 Sec Memory Limit: 128 MB Submit: 970 Solved: 595 [Submit][Status][Discuss] Descript ...
- P3166 [CQOI2014]数三角形
文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...
- P3166 [CQOI2014]数三角形(结论)
https://www.luogu.com.cn/problem/P3166 思路: cf也有一道几乎一致的题,但是那题是2e3个点,可以n^2logn,先算出总数C(n,3),然后预处理经过某个点的 ...
最新文章
- 工厂模式理解了没有?
- GIT使用总结(二)
- Linux怎么互相ping通,主机+虚拟机Ubuntu+开发板互相ping通
- 女性养生需知的16条健康戒律
- C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
- 8种主流深度学习框架介绍
- Oracle_PL/SQL developer拷贝粘贴中文乱码问题
- requirejs与echart的一些问题
- iOS底层探索之类的加载(二): realizeClassWithoutSwift分析
- Office2010安装需要MSXML版本6.10.1129.0的方法
- 2021年度国内网络安全事件总结
- 了解黑客经常使用哪些工具
- “有意思”的英语单词(5)
- 路由token验证和路由守卫~~狂徒李四
- php图形验证码验证,php图片验证码代码
- vim的安装以及基础使用方法;
- ArcScene制作三维地图-三维模型
- 微信小程序网络字体安卓实机无法加载解决方案
- 北京公共自行车租赁方法_百度知道
- Python实现炸金花小游戏
热门文章
- 一封谷歌账号辅助邮箱变更的广告邮件
- 伊利诺伊香槟大学计算机专业排名,伊利诺伊大学香槟分校专业排名一览及最强专业推荐(QS世界大学排名)...
- mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
- Python~numpy.random.seed()方法
- mediawiki 各种扩展整理
- Enterprise Architect安装使用
- 从投入产出简析直复营销
- Leetcode刷题100天—剑指 Offer 50. 第一个只出现一次的字符(队列)—day13
- 《卓有成效的管理者》读书笔记(二)——卓有成效是可以学会的
- 金蝶系统登不上服务器270,电脑进不了金蝶软件,显示Automation错误270