UVa11401

题意:从1~n中选出3个整数,使得他们三边能组成三角形,给定一个n,问能组成多少个不同的三角形?

分析:n最大能达到1000000,所以只能用O(n)来解决。

设最大边为x的三角形个数为C(x),y+z>x , x-y<z<x,当y=1时 z无解,y=2,z一个解……y=x-1,z有x-2个解

所以0+1+2+……+x-2=(x-1)(x-2)/2,但是里面有y=z的情况。

我们将y=z的情况数单独计算,y的取值总x/2 + 1到x-1,共x-1-x/2=(x-1)/2种情况

而且里面每个三角形重复了2遍,所以c(x)=((x-1)*(x-2)/2-(x-1)/2)/2,

由于f[x]表示最长边不超过x的情况数

f[x]=f[x-1]+((x-1)*(x-2)/2-(x - 1)/2)/2。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 typedef long long LL;
 5 const int N = 1100001;
 6 LL f[N];
 7 int main(){
 8     f[3] = 0;
 9     for(LL x = 4 ; x <= 1000000 ; x++)//这个地方要注意x要为longlong
10     f[x] = f[x - 1] + ((x - 1) * (x - 2) / 2 - (x - 1) / 2) / 2;
11     int n;
12     while(scanf("%d",&n) && n >= 3)
13         printf("%lld\n",f[n]);
14     return 0;
15 }

时间: 2024-10-13 20:46:17

UVa11401的相关文章

例题2.2 数三角形 UVa11401

1.题目描述:点击打开链接 2.解题思路:本题利用代数分析和加法原理解决.根据题目给定的范围,只能使用O(N)级别的算法,直接枚举肯定是会超时的.我们设c(x)表示最大边长为x的三角形的个数.设另外两条边为y,z.根据三角形不等式,有y+z>x.所以z的范围是x-y<z<x. 根据这个不等式,我们可以改变参变量y的值来得到z的个数.当y=1时显然无解.当y=2时,有一个解.当y=3时,有2个解...直到y=x-1,有x-2个解.根据等差数列的求和公式,一共有0+1+2+...+(x-3)

uva11401 Triangle Counting

题目大意: 给出1~n的数, 求出能组合成三角形的三个数有多少组, 每组内的数都要不一样. /* 设x是最大的边, 其余的为y,z; 根据三角形性质有: x>y+z 和 x-y < z < x; 解有: 0+1+2+3+...+(x-2) = (x-1)*(x-2)/2; 但是结果里面有y == z的情况和每个三角形算了两次. 即: 最大边长为x的三角形有: ( (x-1)*(x-2)/2 - (x-1) + x/2 ) / 2; 最终结果: f[i] = f[i-1] + 最大边长为i

【计数】【UVA11401】 Triangle Counting

传送门 Description 把1……n这n个数中任取3个数,求能组成一个三角形的方案个数 Input 多组数据,对于每组数据,包括: 一行一个数i,代表前i个数. 输入结束标识为i<3. Output 对于每组数据,输出: 对应的方案个数 Sample Input 5 8 0 Sample Output 3 22 Hint n≤1e6. 三个数字x,y,z能组成三角形当且仅当对于任意顺序,都满足x+y>z. Solution 考虑把所有能组成的三角形按照最长边分类.因为三边长度互不相同,所

UVA计数方法练习[3]

UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 // // Created by Candy on 24/10/2016. // Copyright © 2016 Candy. All rights reserved. // #include <iostream> #include <cstdio> #include <cst

《算法竞赛入门经典——训练指南》第二章题库

UVa特别题库 UVa网站专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=442 注意,下面注有"extra"的习题并没有在书中出现,但在上面的特别题库中有,属于附加习题. 基础练习 (Basic Problems) UVa11388 GCD LCM UVa11889 Benefit UVa10943 How do y