BitComet 旗下网站

转到日志 acm of zju

zju1025

楼主 发表于:2008-05-30 17:34:00 [回复]

/*2008 16:51:03 Accepted 1025 C++ 00:00.37 900K 天将降大任于我
 看了其他人的解题报告说是导弹拦截问题,但是我搜又搜不到这方面的知识
 下面是用dp动态规划做的,先对长度x排序,x相等则对重量y排序,再用动态规划法
*/
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
 int x,y;
}td[5001];
inline bool operator<(const node a,const node b) //重载的<是作为sort的判断条件的
{
 return ((a.x<b.x)||(a.x==b.x&&a.y<b.y));
}
int max(int c,int d)
{
 return c>d?c:d;
}
int f[5001];
int n;
int ans;
void work()
{
 ans=0;
 for(int i=0;i<n;i++)
 {
  f[i]=0;
  for(int j=0;j<i;j++)
   if(td[j].x<td[i].x&&td[j].y>td[i].y)
     f[i]=max(f[i],f[j]);            //发现不符顺序则在原来最大的逆序中增加1
   f[i]++;
   ans=max(ans,f[i]);  //最后取逆序最多的
 }

}

int main()
{
 int T;cin>>T;
 for(int r=1;r<=T;r++)
 {
  cin>>n;
 for(int i=0;i<n;i++)
  cin>>td[i].x>>td[i].y;
    sort(td,td+n);
 work();
 cout<<ans<<endl;
 }
 return 0;
}

心难泰,世风坏,旧时正气今何在?正义寡,人情薄,闻道虽多,茅塞不开。怪!怪!怪! 空等待,几多载,冲出重围人心快!暴雨打,狂风袭,任他折磨,此志难改。耐!耐!耐!

登录后发贴