uva 11401 - Triangle Counting

简介: 点击打开链接 题意:给定一个n表示有n个1~n的数,现在要从这里面选出3个不同的整数问可以组成三角形的个数 思路: 1 n的上限是10^6,O(n^2)以上的时间复杂度都无法满足要求 2 设最大的变长为x,另外两边的为y和z并且x y 和z是不同的,那么有y+z > x,因此就有x-y < z < x    根据这个不等式我们知道,y = 1时无解,y = 2时有1个解 ........  y = x-1式有x-2个解。

点击打开链接

题意:给定一个n表示有n个1~n的数,现在要从这里面选出3个不同的整数问可以组成三角形的个数

思路:

1 n的上限是10^6,O(n^2)以上的时间复杂度都无法满足要求

2 设最大的变长为x,另外两边的为y和z并且x y 和z是不同的,那么有y+z > x,因此就有x-y < z < x

   根据这个不等式我们知道,y = 1时无解,y = 2时有1个解 ........  y = x-1式有x-2个解。总的就是0+1+2.......+x-2 = (x-1)*(x-2)/2

3 但是上面的等式并不是正确的数值。因我上面的解包含了y = z的情况,而且每个三角形算了两遍,因为y和x的地位是等价的。我们怎么解决上面的问题呢?

   先解决y = z的情况吧,当y = z的时候x - z < z < x,那么就有x < 2z,有x/2 < z < x,因此满足的z个数有(x-1)-(x/2+1)

那么只要扣掉这些解,再除以2即可。

4 根据上面的推理分析,我们可以知道题目实际上要求的是“最大边长不超过n的三角形的个数”,因为最大变长的范围从3~n,枚举是不可能的。但是我们仔细分析,我们可以事先打好表,ans[n]表示最大边长不超过n的三角形的个数,那么ans[n] = ans[n-1] + [(x-1)*(x-2)/2 - (x-1)-(x/2+1)]/2

代码:

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

typedef long long int64;
const int MAXN = 1000010;

int64 n , ans[MAXN];

int64 getVal(int64 x){
	return ((x-1)*(x-2)/2-(x-1)/2)/2;
}

void init(){
    ans[3] = 0;
    for(int64 i = 4 ; i < MAXN ; i++)
		ans[i] = ans[i-1]+getVal(i);
}

int main(){
	init();
    while(cin>>n && n >= 3)
		cout<<ans[n]<<endl;
	return 0;
}



目录
相关文章
|
存储 关系型数据库 对象存储
实时计算 Flink版操作报错合集之变更数据流转换为Insert-Only记录时,报错"datastream api record contains: Delete"如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
264 1
|
网络安全 网络虚拟化 网络架构
VLAN原理与配置
VLAN原理与配置
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
548 2
|
开发框架 移动开发 前端开发
【Uniapp 专栏】Uniapp 与 React Native 的对比分析
【5月更文挑战第14天】Uniapp和React Native是热门的跨平台移动开发框架。Uniapp以其一套代码多端运行、丰富的组件生态和较低的学习曲线受到青睐,适合快速开发简单应用。React Native基于React,拥有活跃社区和优秀性能,适合复杂应用。React Native在性能上略胜一筹,尤其在需要接近原生体验的场景。Uniapp的官方组件弥补了社区资源不足。选择时需考虑开发效率、性能需求、团队技术栈和社区支持。
2895 1
【Uniapp 专栏】Uniapp 与 React Native 的对比分析
|
Python
python执行elasticsearch异常【已解决】
python执行elasticsearch异常【已解决】
229 2
|
存储 Android开发
android launcher总体分析
android launcher总体分析
272 1
|
弹性计算
阿里云服务器开通全部端口教程
阿里云服务器开通全部端口教程,
1984 0
Idea 如何新建一个groovy的项目(图文详细解释)
Idea 如何新建一个groovy的项目(图文详细解释)
691 1
|
前端开发
React组件导入的两种方式(动态导入组件的实现)
React组件导入的两种方式(动态导入组件的实现)
543 0
|
存储 边缘计算 移动开发
靠近用户侧和数据,算网融合实现极致协同
游弋自如的生产力,在边缘。
369 0
靠近用户侧和数据,算网融合实现极致协同