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 |
为什么总是WA啊 大牛们帮忙看看吧#include<iostream> #include<algorithm> using namespace std; struct Node{ int x,y; }a[20001]; int com(Node a,Node b) //比较函数 { return a.x>b.x||((a.x==b.x)&&a.y<=b.y); } int n; int d[20001],f[20001];//F[i]表示从1到i这一段中以i结尾的最长上升子序列的长度 int find(int x,int len) { for(int i=len;i>=1;i--) if(d[i]>=x&&d[i-1]<x) return i; } int search() { int i,j,k; memset(f,0,sizeof(f)); d[0]=0; int len=0; for(i=1;i<=n;i++) { if(a[i].y>=d[len]) { len++; d[len]=a[i].y; } if(a[i].y<d[len]) { j=find(a[i].y,len); //在d[]中找大于等于a[i]的第一个数 d[j]=a[i].y; } } return len; } int main() { int i,t; scanf("%d",&t); while(t--) { int count=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y); sort(a+1,a+n+1,com); // for(i=1;i<=n;i++) // cout<<a[i].y<<" "; printf("%d\n",search()); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator