#include?
<
stdio.h
>
#include?
<
stdlib.h
>
#include?
<
string
.h
>
#define
?N?5001
struct
?Node
{
????
int
?length;
????
int
?weight;
};
int
?n;
Node?d[N];
bool
?visite[N];
int
?cmp(?
const
?
void
*
?a,?
const
?
void
*
?b?)
{
????Node
*
?ta
=
?(Node
*
)a;
????Node
*
?tb
=
?(Node
*
)b;
????
????
if
(?ta
->
length
==
?tb
->
length?)?
return
?ta
->
weight
-
?tb
->
weight;
????
????
return
?ta
->
length
-
?tb
->
length;
}
int
?main()
{
????
int
?test;
????scanf(
"
%d
"
,?
&
test);
????
????
while
(?test
--
?)
????{
????????scanf(
"
%d
"
,?
&
n?);
????????
for
(?
int
?i
=
?
0
;?i
<
?n;?
++
i?)
????????scanf(
"
%d%d
"
,?????
&
d[i].length,?
&
d[i].weight?);
????????
????????qsort(?d,?n,?
sizeof
(d[
0
]),?cmp?);
????????memset(?visite,?
false
,?
sizeof
(visite)?);
????
????????
int
?b
=
?d[
0
].weight;
????????
int
?num
=
?
0
;
????????
int
?k
=
?
0
;
????????
????????
while
(?
true
?)
????????{
????????????
bool
?ok
=
?
false
;
????????????
????????????
if
(?k
==
?
-
1
?)?
break
;
????????????b
=
?d[k].weight;???num
++
;
????????????
????????????
int
?be
=
?k;??k
=
?
-
1
;
????????????
????????????
for
(?
int
?i
=
?be;?i
<
?n;?
++
i?)
????????????{
????????????????
if
(?d[i].weight
>=
?b?
&&
?
!
visite[i]?)
????????????????{
????????????????????visite[i]
=
?
true
;
????????????????????b
=
?d[i].weight;
????????????????}
????????????????
else
?
if
(?
!
ok?
&&
?
!
visite[i]?)???{???k
=
?i;??ok
=
?
true
;??}
????????????}?
????????}
????????
????????printf(
"
%d\n
"
,?num?);
????}
????
????
return
?
0
;
}
posted on 2008-10-30 20:55
Darren 閱讀(345)
評論(0) 編輯 收藏 引用 所屬分類:
搜索