找出一个数组中的三个数,三个数不能组成三角形。

三个数不能组成三角形的条件是:a + b < c

两边和小于第三边。

这个问题属于三个数的组合问题了。暴力法可解,可是时间效率就是O(n*n*n)了,非常慢。

只是既然是组合问题就必然能够使用排序后处理的方法减少时间效率的。

这里减少时间效率的方法是:

选一个最大的数c。然后选两个小数a和b,当中a < b,假设符合条件,那么两个数中间的数必然都能够作为b符合条件a + b < c

这样能够把时间效率降到O(n*n)。

这个规律也不好找啊。要很认真观察。然后总结出来。

处理一个数组,要从小到大。从大到小重复观察。寻找其规律。

原题:http://www.codechef.com/problems/NOTATRI/

#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using std::sort; class NotATriangle
{
//细心找出其规律进行优化
int getNotTris_3(int *A, const int n)
{
sort(A, A+n);
int i = 0, j = 1, k = n-1, ans = 0;
for ( ; k >= 2; k--)
{
i = 0, j = k-1;
while (i < j)
{
if (A[i] + A[j] < A[k])
{
ans += j - i;
i++;
}
else j--;
}
}
return ans;
}
public:
NotATriangle()
{
int N = 0;
while (scanf("%d", &N) && 0 != N)
{
int *A = (int *) malloc(sizeof(int)* N);
for (int i = 0; i < N; i++)
{
scanf("%d", &A[i]);
}
printf("%d\n", getNotTris_3(A, N));
free(A);
}
}
}; int notATriangle()
{
NotATriangle ntir;
return 0;
}

Codechef Not a Triangle题解的更多相关文章

  1. ZOJ 4081 Little Sub and Pascal's Triangle 题解

    ZOJ 4081 Little Sub and Pascal's Triangle 题解 题意 求杨辉三角第n行(从1开始计数)有几个奇数. 考察的其实是杨辉--帕斯卡三角的性质,或者说Gould's ...

  2. codechef Sums in a Triangle题解

    Let's consider a triangle of numbers in which a number appears in the first line, two numbers appear ...

  3. CodeChef March Challenge 2019题解

    传送门 \(CHNUM\) 显然正数一组,负数一组 for(int T=read();T;--T){ n=read(),c=d=0; fp(i,1,n)x=read(),x>0?++c:++d; ...

  4. codechef MAY18 div2 部分题解

    T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https:/ ...

  5. CF336A Vasily the Bear and Triangle 题解

    Content 一个矩形的顶点为 \((0,0)\),其对顶点为 \((x,y)\),现过 \((x,y)\) 作直线,分别交 \(x\) 轴和 \(y\) 轴于 \(A,B\) 两点,使得 \(\t ...

  6. codechef Jewels and Stones 题解

    Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery acces ...

  7. CodeChef April Challenge 2019题解

    传送门 \(Maximum\ Remaining\) 对于两个数\(a,b\),如果\(a=b\)没贡献,所以不妨假设\(a<b\),有\(a\%b=a\),而\(b\%a<a\).综上, ...

  8. POJ2079:Triangle——题解

    http://poj.org/problem?id=2079 题目大意:求最大面积的三角形. —————————————————— 可以知道,最大面积的三角形的顶点一定是最大凸包的顶点. 接下来就是O ...

  9. CodeChef August Lunchtime 2014 题解

    A题 给一个由a和b两种类型的字符组成的字符串,每次可以从中选取任意长度的回文子序列(不一定连续)并删除.问最少需要几次能将整个字符串为空. 思路:如果本身是个回文串,那么只需要一次,否则需要两次(第 ...

随机推荐

  1. HEVC码率控制浅析——HM代码阅读之一

    HM的码率控制提案主要参考如下三篇:K0103,M0036,M0257.本文及后续文章将基于HM12.0进行讨论,且首先仅讨论K0103对应的代码,之后再陆续补充M0036,M0257对应的代码分析, ...

  2. 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET

    解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...

  3. cocos2d-x on wp8架构简单介绍

    1,基于C++的开发架构 支持3大移动平台以及3大桌面平台. 分为图形,声音,物理3大模块,另外还有脚本的导出. 在wp8/win32上的图形是基于d3d的,而在其它平台是基于opengl/openg ...

  4. CentOS桌面环境如何打开终端以及如何将终端加入右键

    安装完CentOS的桌面环境后,默认在桌面以及右键是没有打开终端选项的,要想打开终端,可以由以下步骤: 在左上角菜单[Applications]--->[System Tools]---> ...

  5. if判断 和&&

    function aaa(){   console.log('我是aaa');  };   aaa && aaa();  //如果aaa函数存在 就调用 aaa()    //等价写法 ...

  6. java泛型接口详解

    /* * 泛型接口 */ interface Tool<T> { public void show(T t); //泛型方法 public <E> void print(E e ...

  7. GreenDAO数据库版本升级

    GreenDAO是一款非要流行的android平台上的数据库框架,性能优秀,代码简洁. 初始化数据库模型代码的时候需要使用java项目生成代码,依赖的jar包已经上传到我的资源里了,下载地址如下:ht ...

  8. 基于visual Studio2013解决C语言竞赛题之1066进制转化

        题目 解决代码及点评 /************************************************************************/ /* ...

  9. URL vs. HTML 录制模式

    转自:http://blog.csdn.net/testing_is_believing/article/details/5274188 一般来说,如果是标准使用IE访问的B/S架构,应该使用HTML ...

  10. Javascript/Jquery——简单定时器

    第一种方法: <%@ page language="java" contentType="text/html; charset=UTF-8"pageEnc ...