LA 3295 数三角形
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 数三角形的更多相关文章
- 数三角形 bzoj 1201
数三角形(1s 128MB)triangle [题目描述] 小苏看到一个这样的等边三角形:该等边三角形每边的长度为n且被分成n等份,于是每条边就有n-1个等分点.而整个三角形被连接两个不同边的等分点且 ...
- [CQOI 2014] 数三角形 & 机械排序臂
数三角形 bzoj 3505 要知道一个公式就是(a,b)和(x,y)两点所成线段上面的整点数是gcd(a-x,b-y)-1,通过枚举原点到map上任意一点所能成的三角形,再平移,得到要去掉的三点共线 ...
- [Usaco2010 OPen]Triangle Counting 数三角形
[Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 394 Solved: 1 ...
- BZOJ 3505: [Cqoi2014]数三角形 数学
3505: [Cqoi2014]数三角形 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形 容斥
1914: [Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 272 Sol ...
- 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个的方案减去不合法的, 同一行/列的不合法方案很好求, 对角线的不 ...
- 3505: [Cqoi2014]数三角形
3505: [Cqoi2014]数三角形 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1324 Solved: 807[Submit][Statu ...
随机推荐
- vue下使用echarts折线图及其横坐标拖拽功能
vue页面中使用折线图,并且有时间段筛选.因此就需要用到横坐标的拖拽功能. 界面效果如下: 现在来看这个效果的实现代码: drawLine() { let that = this, lineDate ...
- git之merge和rebase的区别
merge合并 # merge操作 第一步: # 先创建一个目录,在主分支提交3个txt文件 [root@luchuangao]# mkdir oldboy [root@luchuangao]# gi ...
- 永远也记不住的linux环境变量,库文件,头文件,交叉编译...
一.环境变量1.node-v4.9.1-linux-armv7l1)安装cp node-v4.9.1-linux-armv7l.tar.gz /usr/local/cd /usr/local/tar ...
- vim树形目录
NERD tree树形目录插件 • 插件简介 NERD tree是一款vim树形文件资源管理器插件.NERD tree可以让你在vim中浏览你的文件系统,打开想要的文件或目录. • 插件安装 ▶ 下载 ...
- javascript 闭包 内存
- 简单说说spring的事务机制,以及是如何管理的?
事务管理可以帮助我们保证数据的一致性,对应企业的实际应用很重要. Spring的事务机制包括声明式事务和编程式事务. 编程式事务管理:Spring推荐使用TransactionTemplate,实际开 ...
- Oracle中的substr()函数详解案例
1)substr函数格式 (俗称:字符截取函数) 格式1: substr(string string, int a, int b); 格式2:substr(string string, int a ...
- Oracle中验证非空的函数NVL(),NVL2()总结
1.NVL()函数 NVL函数的格式如下: NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 2 N ...
- AndroidStudio 使用AIDL
http://blog.csdn.net/ducklikejava/article/details/51559244 Android Studio中写的一个AIDL的小DEMO. 步骤很繁琐,本来不准 ...
- 实现类似mysql group_concat的功能
实现类似mysql group_concat的功能 SELECT SG.Id ,SG.GroupName ,HostNames = STUFF((SELECT ',' + SH.[HostName] ...