https://vjudge.net/problem/UVALive-3295

题意:

数出n行m列的网格顶点能组成多少个三角形。

思路:

直接去数的话比较麻烦,这道题目是可以重复的,只要位置不同就可以了。

所有的情况就是,接下来剪去共线的情况。

①在同一行的共线,(n+1)×C(m+1,3)

②在同一列的共线,(m+1)×C(n+1,3)

③在斜线上的共线,gcd(i,j)-1表示起点(0,0)到终点(i,j)的共线情况,也就是说,此时已经确定了两个点。f(i,j)=f(i-1,j)+f(i,j-1)。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
using namespace std; typedef long long LL;
const int maxn=+; LL f[maxn][maxn]; LL gcd(LL a,LL b)
{
return b==?a:gcd(b,a%b);
} LL c(LL n, int m)
{
return n*(n-)*(n-)/;
} void init()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
f[i][j]=gcd(i,j)-; for(int i=;i<=;i++)
for(int j=;j<=;j++)
f[i][j]+=f[i-][j]; for(int i=;i<=;i++)
for(int j=;j<=;j++)
f[i][j]+=f[i][j-]; for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
printf("f[%d][%d]: %d\n",i,j,f[i][j]);
}
} int main()
{
//freopen("D:\\input.txt","r",stdin);
int n,m;
int kase=;
init();
while(~scanf("%d%d",&n,&m) && n && m)
{
n++, m++;
LL ans=c(n*m,)-n*c(m,)-m*c(n,);
for(int i = ; i < n; i ++)
for(int j = ; j < m; j ++)
ans -= *f[i][j];
printf("Case %d: %lld\n",++kase,ans);
}
return ;
}

LA 3295 数三角形的更多相关文章

  1. 数三角形 bzoj 1201

    数三角形(1s 128MB)triangle [题目描述] 小苏看到一个这样的等边三角形:该等边三角形每边的长度为n且被分成n等份,于是每条边就有n-1个等分点.而整个三角形被连接两个不同边的等分点且 ...

  2. [CQOI 2014] 数三角形 & 机械排序臂

    数三角形 bzoj 3505 要知道一个公式就是(a,b)和(x,y)两点所成线段上面的整点数是gcd(a-x,b-y)-1,通过枚举原点到map上任意一点所能成的三角形,再平移,得到要去掉的三点共线 ...

  3. [Usaco2010 OPen]Triangle Counting 数三角形

    [Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 394  Solved: 1 ...

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

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

  5. bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形 容斥

    1914: [Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 272  Sol ...

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

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

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

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

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

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

  9. 3505: [Cqoi2014]数三角形

    3505: [Cqoi2014]数三角形 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1324  Solved: 807[Submit][Statu ...

随机推荐

  1. 剑指Offer——不用加减乘除做加法

    题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 分析: "^"是不带进位的加法. "&"可以得到所有进位位组 ...

  2. LeetCode_Search in Rotated Sorted Array

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...

  3. NoSQL 数据库概览及其与 SQL 语法的比较

    NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题. 本文对NoSQL数据库的定义.分类.特征.当前比较流行的NoSQL数据库系统等进行了简单的介绍,并对N ...

  4. AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label

    1.  filter可以接收参数,参数用 : 进行分割,如下: {{ expression | filter:argument1:argument2:... }} 2.   filter参数是 对象 ...

  5. linux去掉文件行尾的^M

    在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”.这种文件在执行时会报错bash: ./startserver.sh: /bin/sh^M: bad i ...

  6. [golang note] 包和导入

    package的作用        √ package是golang最基本的分发单位和工程管理中依赖关系的体现.        √ 每个golang源代码文件开头都拥有一个package声明,表示该g ...

  7. linux rm指定的文件

    如何删除一个目录下的除了想要的文件之外的所有文件 rm `ls | grep -v "aa"` Linux下 报错“命令参数列表过长”,在用mv命令一次移动3万多个文件时失败了,原 ...

  8. mysql update 多表 (复制)

    定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价 ...

  9. 32. Longest Valid Parentheses(最长括号匹配,hard)

      Given a string containing just the characters '(' and ')', find the length of the longest valid (w ...

  10. docker for spark

    项目需求,有一个spark-streaming的程序,读kafka的数据,需要构建一个不使用hadoop的spark 以下建立的镜像参考网络,可以稍加修改就可以使用不同的版本. 可单独启动master ...