5th 【基础题】组合三角形

                                         组合三角形

【题目描述】:

桌面上凌乱地摆放着N个木棍,长度分别为{a1,a2…,ai,…an},N<=6000,1<=ai<=100,000,000,选择三个木棍为边组成三角形,问有多少种不同的组合。三个木棍的不同排列,只能算一种组合。假设ai<=ajak。

【输入描述】:

第一行,一个整数N。

第二行N个木棍的长度。

【输出描述】:

只有一个数表示能够组成三角形的组数,最后的结果可能比较大。

【样例输入】

7
3 5 7 4 9 5 1

【样例输出】

15

【数据范围及描述】:


    难得遇到这种简单点的题目了, 虽然简单我还是要写博客的-。- 
         
   n=6000,n三次暴力肯定是不行滴,所以先排个序咯,看看有什么规律
    
        样例 1 3 4 5 5 7 9

     我们发现排完序后只要【a[i]+a[j]>a[k]】 (0<i<j<k<n+1)就满足形成三角形。
     
           所以我们穷举i和j,k从j+1开始: while(a[i]+a[j]>a[k]&&k<=n)  k++; 
      如果存在一个k恰好使得不满足上述条件了,那么说明前面的都满足,所以加上j-i-1个解。
      当j在增加的时候,无需每个j都修改k,k的值可以在原来的基础上增加,因为i是不变的,j往后推,k也必须往后推


       这样就解决问题了

中心程序:
for(int i=1;i<=n-2;i++)
        {   int k=i+2; 
            for(int j=i+1;j<=n-1;j++)
           {    
                while(a[i]+a[j]>a[k]&&k<=n)
                 k++;
                ans+=k-j-1;
                } 
全部代码如下
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define ll long long
int n,a[6005];
ll ans;
using namespace std;
int main()
{   cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=n-2;i++)
        {   int k=i+2; 
            for(int j=i+1;j<=n-1;j++)
           {    
                while(a[i]+a[j]>a[k]&&k<=n)
                 k++;
                ans+=k-j-1;
                }
                  }
           cout<<ans<<endl;
        //while(1);
	return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Introduction to Data Compression Fourth Edition Morgan Kaufmann 本书的中文版由图灵社区翻译出版 (资源是英文本) 享誉世界的数据压缩经典著作 内容全面新颖 示例精彩丰富 理论联系实践 方便学以致用 本书是数据压缩方面的经典著作 目前已经出到了第4版 数据压缩技术及其应用从未停止前进的步伐 图像 语音 文本 音频 视频等新的应用领域层出不穷 本书也与时俱进 不断更新 这一版基本涵盖了数据压缩领域的最新发展 书中首先介绍了基本压缩方法 包括无损压缩和有损压缩 涉及的数学知识 然后从无损压缩开始 依次讲述了霍夫曼编码 算术编码以及词典编码技术等 对于有损压缩 还描述了标量 矢量以及微分编码和分形压缩技术 本书在上一版的基础上 扩展讨论了基于小波的压缩技术 特别是越来越流行的JPEG 2000标准 还增加了范式霍夫曼码以及更多有关二进制算术编码的信息 本书非常适合从事数据压缩相关工作的专业技术人员 软硬件工程师 学生等阅读 数字图书馆 多媒体等领域的技术人员也可参考 Khalid Sayood 美国内布拉斯加大学工程学教授 分别于1977年和1979年获得罗彻斯特大学电气工程学理学学士和理学硕士学位 并于1982年获得得克萨斯州农工大学电气工程学博士学位 他的主要研究方向包括数据压缩 信源信道联合编码和生物信息学 ">Introduction to Data Compression Fourth Edition Morgan Kaufmann 本书的中文版由图灵社区翻译出版 (资源是英文本) 享誉世界的数据压缩经典著作 内容全面新颖 示例精彩丰富 理论联系实践 方便学以致用 本书是数据压缩方面的经典 [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值