求助

P1233 木棍加工

正确答案如下: #include<iostream> #include<algorithm> using namespace std; struct thing{ int lo,wi; }t[5005];//木棍定义为结构体 bool comp(thing &a,thing &b){ if(a.lo==b.lo)return a.wi>b.wi; return a.lo>b.lo; }//定义比较函数,先按从高到低排列长度,长度相同的按从高到低排列宽度 bool used[5005]={};//是否被处理过 int main(){ ios::sync_with_stdio(false);//取消输入流同步,加快输入速度 int n,sum=0,twi; cin>>n; for(int i=1;i<=n;i++){ cin>>t[i].lo; cin>>t[i].wi; }//输入 sort(t+1,t+n+1,comp);//排序 for(int i=1;i<=n;i++){//双重循环 if(used[i]==0){//如果这个木棍被处理过就跳过 twi=t[i].wi;//保存现有宽度 for(int j=i+1;j<=n;j++){//向后搜索 if(t[j].wi<=twi&&used[j]==0){//如果有宽度小于现有宽度且没有被处理过 used[j]=1;//处理这个木棍 twi=t[j].wi;//保存这个木棍的宽度 } } } } for(int i=1;i<=n;i++){ if(used[i]==0)sum++;//如果没用过就加1分钟 } cout<<sum;//输出 return 0; }
by 陈启旺 @ 2019-04-07 14:53:04


@[陈启旺](/space/show?uid=180322) 希望更丰富的展现?[使用Markd♂wn](https://www.luogu.org/wiki/show?name=%E5%B8%AE%E5%8A%A9%EF%BC%9Amarkdown)
by aminoas @ 2019-04-07 14:57:50


|