zoukankan      html  css  js  c++  java
  • Gym

    https://vjudge.net/contest/160830#problem/I

    题意:给你一堆不同颜色的不同长度的棍,问你是否这些棍是否能够组成三角形且所有三角形的每个边的颜色都不相同。

    思路:在添加三角形的边时,如果颜色相同就取最大的边,如果找的了三条边,就去比较第一以及第三条边和是否能够组成三角形,如果能直接输出,否则将第一条边等于第二条边,接着进行下一次判断。如果找不到输出NIL

     1 #include <iostream>
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 struct node
     5 {
     6     int data;
     7     int num;
     8 } a[1000005];
     9 int cmp(const node &p,const node &q)
    10 {
    11     return p.data<q.data;
    12 }
    13 int main()
    14 {
    15     freopen("sticks.in","r",stdin);
    16     freopen("sticks.out","w",stdout);
    17     int n,m,x;
    18     scanf("%d",&n);
    19     {
    20         int cnt=0;
    21         for(int i=1; i<=n; i++)
    22         {
    23             scanf("%d",&m);
    24             for(int j=0; j<m; j++)
    25             {
    26                 cnt++;
    27                 scanf("%d",&a[cnt].data);
    28                 a[cnt].num=i;
    29             }
    30         }
    31         sort(a+1,a+cnt+1,cmp);
    32         for(int i=1,j=1,k=1; i<cnt-1;)
    33         {
    34             while(i<cnt&&a[i].num==a[i+1].num) i++;
    35             j=i+1;
    36             while(j<cnt&&a[j].num==a[j+1].num) j++;
    37             k=j+1;
    38             if(k<=cnt&&a[k].num!=a[i].num)
    39             {
    40                 if(a[i].data>a[k].data-a[j].data)
    41                 {
    42                     printf("%d %d %d %d %d %d
    ",a[i].num,a[i].data,a[j].num,a[j].data,a[k].num,a[k].data);
    43                     return 0;
    44                 }
    45             }
    46             i=j;
    47         }
    48         printf("NIE
    ");
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    2017年校招全国统一模拟笔试 01翻转
    第二周总结
    数组的最大子数组求和问题
    第一周总结
    HTML与CSS学习
    关于家庭小账本软件的设计一
    从小工到专家读后感
    从小工到专家读后感
    从小工到专家读后感
    动手动脑
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/6785244.html
Copyright © 2011-2022 走看看