欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

101097B-思维,vector的resize和assign

程序员文章站 2022-02-05 19:28:11
...

too young too naive。
开始做过一道判定三角形的水题,直接排序判断就行,但是这个有颜色限制。没有考虑到。。
方法1
假设一个盒子,保证这个盒子里有三种不同颜色的棍子,
如果加的一个棍子中和盒子里有重复的,就把盒子里的替换掉。
如果没有的话,就找辣两个最大的和这个比。
注意:后续的添加及处理都保证0位和1位是俩大的。0最大。

第二个代码和第一个很像。
对于vector的理解。
如果没有定义长度,在一开始就弄3是不对的。resize()可以给vector配置空间。
但是assign更好,因为assign还可以赋初值
。q巨巨现场写过resize,发现初始竟然不是0,并且从大变小是无效的。
所以还是assign好点。
assign(m,n),m是大小,n是初始值。

include

include

include

define P pair


#include <bits/stdc++.h>
/*高中巨佬的代码,
  不得不说写的太好了。
*/
#define P pair<int,int>
#define MP(x,y) make_pair(x,y)
using namespace std;
inline void read(int&a){
    char c;
    while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';
    while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';
}
vector<pair<int,int> >q;
int cmp1(P a,P b)
{  return a.first<b.first;
}
int main()
{   freopen("sticks.in","r",stdin);
freopen("sticks.out","w",stdout);

    int m;
     int k,l;
    read(m);
    for(int i=1;i<=m;i++)
    {  read(k);
        for(k;k>=1;k--,q.push_back(MP(l,i)))
        read(l);
    }
    sort(q.begin(),q.end(),cmp1);
    P fir=MP(0,0);
    P sec=MP(0,0);
    P thi=MP(0,0);
    for(int i=0;i<q.size();i++)
    {    if(q[i].second==fir.second)
          {   if(thi.first+sec.first>q[i].first)
              { printf("%d %d %d %d %d %d\n",thi.second,thi.first,sec.second,sec.first,q[i].second,q[i].first);
                 return 0;
              }
              fir.first=q[i].first;fir.second=q[i].second;
          }
         else if(q[i].second==sec.second)
          {   if(fir.first+thi.first>q[i].first)
              { printf("%d %d %d %d %d %d\n",fir.second,fir.first,thi.second,thi.first,q[i].second,q[i].first);
                 return 0;
              }
              sec=fir;fir=q[i];
          }
          else
          {  if(fir.first+sec.first>q[i].first)
              { printf("%d %d %d %d %d %d\n",fir.second,fir.first,sec.second,sec.first,q[i].second,q[i].first);
                 return 0;
              }
              thi=sec;sec=fir;fir=q[i];

          }

    }
    puts("NIE");
    return 0;
}