?? /*这道题目是先要排序的,按照长度或者重量排都可以,
当长度(重量)相同时就按照重量(长度)排,
从大到小或从小到大都可以!这里我懂的,没有问题!
排序之后,问题就可以简化,(假设按照长度不等时长度排,
长度等是按照重量排,我假设按照从大到小来排!)即求排序
后的所有的重量值最少能表示成几个集合。长度就不用再管了,
从数组第一个数开始遍历,只要重量值满足条件,那么这两个
木棍就满足条件!*/
#include
#include
#include
using namespace std; #define maxn 5010 struct node{ int l,w; }stk[maxn]; bool cmp(node y,node x){ if(x.l
=stk[i].l&&stk[j].w>=stk[i].w&&!visit[j]) visit[j]=1,stk[i].l=stk[j].l,stk[i].w=stk[j].w; sum++; //这个循环是重点。 } } printf(%d ,sum); } return 0; }
?