101097B-思维,vector的resize和assign

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值