BZOJ 3505
3505: [Cqoi2014]数三角形
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 1171 Solved: 703
[Submit][Status][Discuss]
codevs3693 数三角形同题:http://codevs.cn/problem/3693/
Description
给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个。下图为4x4的网格上的一个三角形。
注意三角形的三点不能共线。
Input
输入一行,包含两个空格分隔的正整数m和n。
Output
输出一个正整数,为所求三角形数量。
Sample Input
Sample Output
数据范围
1<=m,n<=1000
HINT
Source
题解:
1、先不考虑三角形,从n*m的网格里面任意选取3个点,一共有多少种方案? C(n*m,3) 现在,这3个点必须要构成三角形,有哪种情况需要去除? 三点共线的情况。 我们用C(n*m,3)减去三点共线的情况,最后得到的就是答案。
2、一个n*m的网格,有多少种选法,选择3个点是三点共线的? 这是一个5*7的网格

如果固定左上角和右下角这两个点,一共有多少个点和它们共线?
3、

大三角形和小三角形是相似的 小三角形的直角边长x’和y’应该是大三角形的直角边长X和Y的约数 所能放下的点的个数-1是X/x’=Y/y’,这个数也是X的约数,同时也是Y的约数 所以最多能放gcd(X,Y)-1个点。
4、
回到刚才那个问题的话,一个n*m的网格,它的两条边的长度分别是n-1和m-1,所以对角线上最多有gcd(n-1,m-1)-1个点在格线上。 再看这道题本身,我们求有多少种选取三个点的选法,满足三点共线,可以分这两种情况 所在直线水平/竖直 所在直线是斜的
所在直线水平/竖直: n*C(m,3)+m*C(n,3) 所在直线是斜的: 先用一个双重循环,枚举三个点中以两头的两个点为对角线所构成的网格的大小 如果以这两个点为对角线构成了一个n’*m’的网格,则以它们为两头的点,一共有gcd(n’-1,m’-1)-1种选法可以三点共线
5、
AC代码:
#include<iostream>
#include<cstdio>
using namespace std;
#define ll unsigned long long
ll n,m;
ll gcd(ll a,ll b){
return !b?a:gcd(b,a%b);
}
ll C(ll x){
return x*(x-)/*(x-)/;
}
int main(){
cin>>n>>m;
ll ans=C((m+)*(n+));
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(i||j) ans-=(gcd(i,j)-)*(n-i+)*(m-j+)*(i&&j?:);
}
}
cout<<ans<<endl;
return ;
}
BZOJ 3505的更多相关文章
- bzoj 3505 数三角形 - 组合数学
给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m和n. Output 输出 ...
- bzoj 3505 [Cqoi2014]数三角形(组合计数)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题意] 在n个格子中任选3点构成三角形的方案数. [思路] 任选3点-3点共线 ...
- 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 [题目大意] 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 注 ...
随机推荐
- dns解析对SEO产生的影响
DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和对应的IP地址,并具有将域名转换为IP地址功能的服务器 ...
- webservice 缓存机制
本文转载:http://blog.csdn.net/zhdd1234/article/details/4555472 WebService的缓存分为两种,一种是简单的输出缓存,一种是强大的数据缓存 一 ...
- PHP+MySQL多语句执行<转自wooyun>
发起这个帖子,估计就很多人看到题目就表示不屑了.一直以来PHP+MySQL环境下,无论是写程序或者是注入攻击,是无法多语句执行的,这么广为人知的常识,没理由会有人不知道.可权威就是用来被挑战的,常识也 ...
- Hyper-V故障转移群集
Hyper-V故障转移群集配置完成后,在故障转移群集管理器中新建虚机:角色-虚拟机-新建虚拟机 如果直接在Hyper-V管理器中新建虚机,则不是高可用,需要在故障转移群集管理器中将其添加进来使其成为高 ...
- Spring+Ibatis集成开发实例
首先简历数据库demo(本文选mysql) 数据库脚本: CREATE TABLE `ibatis` ( `id` varchar(20) NOT NULL, `name` varchar(20) ...
- TFS 图标意思
小人:文件被其他人签出 对号:文件被自己签出 锁: 文件已经被签入 加号:新增加一个文件
- Java基础-新建项目、包和类
1,新建项目
- Java网页数据采集器[下篇-数据查询]【转载】
本期概述 上一期我们学习了如何将html采集到的数据存储到MySql数据库中,这期我们来学习下如何在存储的数据中查询我们实际想看到的数据. 数据采集页面 2011-2012赛季英超球队战绩 如果是初学 ...
- MaterialViewPager
https://github.com/florent37/MaterialViewPager
- JellyViewPager
https://github.com/jfeinstein10/JazzyViewPager https://github.com/chiemy/JellyViewPager JellyViewPag ...