| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这份代码我在zju上ac了, 可这里判定是wa最坏的情况是我在侥幸在zju上过关了,否则, 还会有什么原因呢?
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
#define MAXN 5001
struct Stick {
int l, w;
}a[MAXN];
int n;
int cmp( const void * a, const void * b)
{
return ((const Stick *)a)->l - ((const Stick *)b)->l;
}
int d[MAXN];
// longest increasing subsequence
int lis()
{
int seg = 0;
int max, sec;
for(int i=1; i<=n; ++i)
{
max = -1;
for(int j=0; j<seg; ++j) if( a[i].w >= d[j] && max < d[j] ) { max = d[j]; sec = j; }
if( max == -1 ) d[seg++] = a[i].w;
else d[sec] = a[i].w;
}
return seg;
}
int main()
{
int t; scanf("%d", &t);
while( t-- )
{
scanf("%d", &n);
for(int i=1; i<=n; ++i) scanf("%d%d", &a[i].l, &a[i].w);
qsort( &a[1], n, sizeof(Stick), cmp );
printf( "%d\n", lis() );
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator