C

程序笔记   发布时间:2022-06-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

description

有N个木棍,长度和宽度已知。现在要一个接一个的拼接木棍。当然我们需要计算总共拼接的时间。有以下规则:
对于第一根处理的木棍,我们需要1分钟。
之后处理的木棍,如果说他的长度l和宽度w满足l0<><>我们不需要额外再花费时间去拼接。
比如,对于(9,4),(2,5),(1,2),(5,3),(4,1)这5根木棍,我们需要花费最少2分钟的时间:(4,1),(9,4)和(1,5)。

input

输入有多组数据,每组数据第一行为一个整数n,(1<><>然后第二行有2n个整数,分别为(l1,w1),(l2,w2)……每个数最大不超过10000

output

输出一个数sum,为最小的花费时间

sample_input

5
4 9 5 2 2 1 3 5 1 4
3
2 2 1 1 2 2
3
1 3 2 2 3 1

sample_output

2
1
3

以l为第一关键字、w为第二关键字非降序排序,统计单调递增子序列的数量即可。
注意OJ网站中是否允许使用自带qsort函数,如果不允许你自己写一个就行


#include

struct g
{
int l;
int w;
bool tag;
}sticks[2505];

int cmp(const voID a,const voID b)
{
struct g c=(g )a;
struct g d=(g )b;
if(c->l!=d->l)
return c->l-d->l;
else
return c->w-d->w;
}

int main()
{
int i,j,n;
int ans,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
{
sticks[i].tag=false;
scanf("%d%d",&sticks[i].l,&sticks[i].w);
}
qsort(sticks,n,sizeof(sticks[0]),cmp);
ans=0;
for(i=0;i<n;i++)
{
if(sticks[i].tag==falsE)
{
ans++;
temp=sticks[i].w;
sticks[i].tag=true;
for(j=i+1;j<n;j++)
{
if(sticks[j].tag==false&&sticks[j].w>=temp)
{
sticks[j].tag=true;
temp=sticks[j].w;
}
}
}
}
printf("%d\n",ans);
return 0;
}

href="http://zhIDao.baIDu.com/link?url=XG2_P7xDfMS-7t5r-P7v9iZUYSE7Euru3QUFaID7WsxbIhJFEIxclxooARC6NOVeWSQUnHF6Lp9FLXBHWtQx_Bb4ujHP4-YdhMn9ilu-XOq&qq-pf-to=pcqq.discussion">http://zhIDao.baIDu.com/link?url=XG2_P7x...

大佬总结

以上是大佬教程为你收集整理的C全部内容,希望文章能够帮你解决C所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。