UVa 11401 Triangle Counting 数三角形
来源:互联网 发布:mysql union all sum 编辑:程序博客网 时间:2024/06/05 03:34
题意:求从1~n中选3个数构成三角形的三边有多少种方案。
枚举显然会TLE。n^2复杂度也不行。后来我提交发现就算是O(n)也会TLE。。。。。估计testcase很多吧。那只能打表了。用递推,设max_len[i]表示最长那条边为i的三角形个数,则有max_len[i] = max_len[i - 1] - ((i - 1)/2 - 1) + i - 3。其中减去(i - 1)/2 - 1是因为减去最长边为i - 1的三角形中两短边加起来恰好为i的三角形个数,加上i - 3是因为最长边为i且第二长的边为i - 1的三角形个数(此时最短边在2~i - 2里面选,有i - 3种选法)。然后cnt[i] = cnt[i - 1] + max_len[i]即可。
#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<cstdio>using namespace std;const int MAX = 1e6 + 5;long long n;long long max_len[MAX], cnt[MAX];void initial(){ memset(max_len, 0, sizeof(max_len)); memset(cnt, 0, sizeof(cnt)); for(int i = 4; i < MAX; i++) { max_len[i] = max_len[i - 1] - (i - 1)/2 + i - 2; cnt[i] = cnt[i - 1] + max_len[i]; }}int main(){ initial(); while(scanf("%lld", &n) && n >= 3) printf("%lld\n", cnt[n]); return 0;}
0 0
- UVa 11401 Triangle Counting 数三角形
- UVA 11401 Triangle Counting数三角形
- UVA 11401 - Triangle Counting 数三角形(推理)
- uva 11401 Triangle Counting 数三角形 递推
- uva 11401 Triangle Counting 数三角形 (计数问题)
- uva11401 - Triangle Counting(数三角形)
- 数三角形Triangel Counting UVa 11401()
- uva 11401 Triangle Counting(一共可以组成多少三角形)
- UVA 11401 Triangle Counting
- Uva 11401 - Triangle Counting
- UVA 11401 Triangle Counting
- UVA 11401 - Triangle Counting
- UVA 11401 - Triangle Counting
- uva 11401 - Triangle Counting
- UVA - 11401 Triangle Counting
- UVA 11401 Triangle Counting
- UVA - 11401 Triangle Counting
- uva 11401 Triangle Counting
- 字符串操作和正则表达式
- HTML <form> 标签
- 图像处理------调整亮度与饱和度
- JDK安装和Eclipse介绍
- 剑指Offer-->从上向下打印二叉树(★★)
- UVa 11401 Triangle Counting 数三角形
- Java基础语法(一)
- 怎样远程开机内网电脑?
- 【第二步】编程语言的学习
- [多校2015.02.1006 高斯消元] hdu 5305 Friends
- 图像处理------常见二值化方法汇总
- Java基础语法(二)
- 【转】前端工程师-新手必读
- Java基础语法(三)