从小到大排序后

先固定一遍,另外两边递增查找

即固定 i,j=i+1,k=j+1

然后让k递增到 a[i]+a[j]<=a[k] 时

此时不能凑成一个三角形

答案增加 k-1-j 组

此时不需要重置 k=j+1

因为 j++ 后 a[j] 会变大

那么在 j~k 之间的所有木棍长度均能再次满足这种 ij 组合

此时只需要把前一个状态的 k 继续往后查找即可

如果 k 查找到了最后,因为i固定,可得 j 不断向后移动,最后能增加的组合有 (n-j)*(n-j-1)/2 组,结束 j 循环,i++

#include<iostream>
#include<algorithm>
using namespace std;
int ar[];
int main()
{
ios::sync_with_stdio();
cin.tie();cout.tie();
int T,n,i,j,k,ans,d;
cin>>T;
while(T--)
{
cin>>n;
for(i=;i<=n;i++)
cin>>ar[i];
sort(ar+,ar+n+);
ans=;
for(i=;i<=n-;i++)
{
k=i+;
for(j=i+;j<=n-;j++)
{
d=ar[i]+ar[j];
while(k<=n&&d>ar[k])
k++;
ans+=k--j;
if(k>n)
{
ans+=(n-j)*(n-j-)/;
break;
}
}
}
cout<<ans<<endl;
} return ;
}

最新文章

  1. Greenplum 源码安装教程 —— 以 CentOS 平台为例
  2. 删除html元素
  3. Oracle 11g Express
  4. python模块xlrd安装-处理excel文件必须
  5. EF6+MYSQL之初体验
  6. ERP PowerDesigner工具使用(二)
  7. window7资源管理器一直重启(百度知道找到可用)
  8. 在VS2008环境下的C++异常处理
  9. try、catch、finally的使用分析---与 return 相关
  10. 关于自己的ES6使用姿势
  11. AFNetworking3.0出现Error Domain=com.alamofire.error.serialization.response Code=-1016 &quot;Request failed: unacceptable
  12. 常用CSS HACK
  13. hdu 5282 Senior&amp;#39;s String 两次dp
  14. 通过HttpClient来调用Web Api接口,实体参数的传递
  15. paramiko socket.error: Int or String expected
  16. CodeForces 696A Lorenzo Von Matterhorn (LCA + map)
  17. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
  18. eclipse如何把多个项目用不同的文件夹分隔开
  19. [C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行
  20. 【LOJ】#2071. 「JSOI2016」最佳团体

热门文章

  1. javaweb历史上最简单的使用Ajax判断用户名是否被注册(不跳转页面奥!)
  2. 创建一个简单的Spring应用
  3. 一、VIP课程:互联网工程专题 03-Maven基本概念与核心配置
  4. vant库在vue全局引入toast组件
  5. 对 TD tree 的使用体验
  6. POJ - 3349 Snowflake Snow Snowflakes (哈希)
  7. java课程之团队开发冲刺阶段2.4
  8. js 月份选择器(只选择到月)
  9. Android自定义View——自定义ViewPager
  10. H5调微信/支付宝