ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

uva 10131 Is Bigger Smarter? dag ×· ¼Ó·¾¶»¹Ô­
2015-11-21 01:03:35 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºuva 10131 Bigger Smarter dag ³¤Â· ·¾¶ »¹Ô­
#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #include 
           
             #define INF 100000000 using namespace std; struct node{ int x,y; }; node a[1005]; int n; int ma[1005][1005]; int dp[1005]; void print(int max,int q){ if(max == 1){ printf("%d\n",q+1); return ; } printf("%d\n",q+1); for(int i = 0;i < n;i++){ if(ma[q][i] && dp[i] == max-1){ print(max-1,i); break; } } } int fun(node &x,node &y){ if(x.x < y.x && x.y > y.y) return 1; return 0; } int dfs(int cur){ int& ret = dp[cur]; if(ret > 0) return ret; ret = 1; for(int i = 0;i < n;i++){ if(ma[cur][i]){ ret = max(dfs(i)+1,ret); } } return ret; } int main(){ while(scanf("%d%d",&a[n].x,&a[n].y)!=EOF) n++; memset(ma,0,sizeof(ma)); for(int i = 0;i < n;i++){ for(int j = 0;j < n;j++){ if(fun(a[i],a[j]) > 0){ ma[i][j] = 1; } } } for(int i = 0;i < n;i++){ dfs(i); } int maxn; int max = -1; for(int i = 0;i < n;i++){ if(dp[i] > max){ maxn = i; max = dp[i]; } } cout << max << endl; print(max,maxn); return 0; } 
           
         
        
       
      
     
    
   
  

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º»ìºÏ±³°ü£¨¶àÖØ±³°ü+ÍêÈ«±³°ü£©¨.. ÏÂһƪ£ºcodeforces 538 A.Cutting Banner

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: