题目描述

给出若干木棍,每根木棍有特定的颜色和长度。问能否找到三条颜色不同的木棍构成一个三角形。
(注意这里所说的三角形面积要严格大于0)

输入

第一行给出一个整数k(3<=k<=50),表示颜色的种数。这k种颜色被标号为1至k。
接下来k行,第i+1描述颜色为i的木棍的信息。
首先一个整数Ni(1<=Ni<=10^6)表示颜色为i的木棍的数量。
接下来Ni个整数,表示这Ni根木棍各自的长度。
所有木棍的长度<=10^9。总木棍数量<=10^6。

输出

你的程序应该仅输出一行
如果有解,输出6个整数,分别表示第一条边的颜色,第一条边的长度,第二条边的颜色,第二条边的长度,第三条边的颜色,第三条边的长度,这六个整数以空格分割。
如果有多组解,随便输出一组即可。
如果无解,输出 NIE

样例输入

4
1 42
2 6 9
3 8 4 8
1 12

样例输出

3 8 2 9 4 12


题解

贪心

三条边能够构成三角形的充要条件:两短边之和大于长边。

那么如果已知长边,要尽可能地让它与另外两条边构成三角形,所选的两条边需要尽可能的长。

所以我们可以先按长度从小到大排序,从左到右枚举长边,所需要知道的就是它之前长度最大的两条与其颜色不同的边。我们可以直接维护三条颜色不同的前三长边,然后找到这三条边中与其颜色不同的最长的两条,判断能否构成三角形,并更新这三条边即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 1000010
using namespace std;
struct data
{
int c , l;
bool operator<(const data &a)const {return l < a.l;}
}a[N];
int tot;
int main()
{
int k , i , t , s1 = 0 , s2 = 0 , s3 = 0;
scanf("%d" , &k);
for(i = 1 ; i <= k ; i ++ )
{
scanf("%d" , &t);
while(t -- ) a[++tot].c = i , scanf("%d" , &a[tot].l);
}
sort(a + 1 , a + tot + 1);
for(i = 1 ; i <= tot ; i ++ )
{
if(a[i].c == a[s1].c)
{
if(a[s3].l + a[s2].l > a[i].l)
{
printf("%d %d %d %d %d %d\n" , a[s3].c , a[s3].l , a[s2].c , a[s2].l , a[i].c , a[i].l);
return 0;
}
s1 = i;
}
else if(a[i].c == a[s2].c)
{
if(a[s3].l + a[s1].l > a[i].l)
{
printf("%d %d %d %d %d %d\n" , a[s3].c , a[s3].l , a[s1].c , a[s1].l , a[i].c , a[i].l);
return 0;
}
s2 = s1 , s1 = i;
}
else
{
if(a[s2].l + a[s1].l > a[i].l)
{
printf("%d %d %d %d %d %d\n" , a[s2].c , a[s2].l , a[s1].c , a[s1].l , a[i].c , a[i].l);
return 0;
}
s3 = s2 , s2 = s1 , s1 = i;
}
}
puts("NIE");
return 0;
}

最新文章

  1. 多个Class作用于同一个元素的结果分析
  2. POJ 2387 Til the Cows Come Home --最短路模板题
  3. eclipse字体推荐
  4. Servlet间的跳转
  5. 初探接口测试框架--python系列6
  6. 代码分享:php对二维数组进行排序
  7. [原]1856-More is better-基础并查集
  8. 【网络】js调试F12控制台学习
  9. 记一个JAVA关于日期的坑
  10. Mongodb集群部署ReplicaSet+Sharding -摘自网络
  11. stm32 cortext-M3 类型对齐问题【worldsing笔记】
  12. hbase 取多个版本数据
  13. 10个可以直接拿来用的JQuery代码片段
  14. 解决IE11不能进行webTest脚本录制的方法
  15. Swift - 15 - 导入Foundation使用更多字符串功能
  16. 在fedora 20下使用ssh server
  17. Django 模版中如何对主菜单进行选中?
  18. 用户创建,删除and并发注册and系统登陆的API研究(学习汇总网上资料)
  19. 通用RSA加密 - PHP+Java+Javascript加密解密
  20. Django中间件2

热门文章

  1. 初学Python遇到的坑
  2. 启动tomcat的Cannot find ./catalina.sh 的问题
  3. Java传值分析
  4. 题解 P3367 【【模板】并查集】
  5. 【Django】URL中传递中文的问题
  6. Nginx配置根据客户端设备转发
  7. linux硬件基础
  8. B1013 数素数(20分)
  9. P1309 瑞士轮
  10. LINUX下实现按秒执行计划任务