hdu5009 离散化+dp+优化

2015-07-20 17:40:47 · 作者: · 浏览: 4

西安网络赛C题。先对大数据离散化,dp优化


#include
  
      //G++
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         #include
        
          #include
         
           using namespace std; const int maxn=51234; struct kind { int id; int val; }; int vis[maxn]; kind newa[maxn]; int n;int a[maxn]; int dp[maxn]; bool myval(kind a,kind b) { return a.val
          
           hasvis; for(int i=0;i
           
            =dp[i+1])continue; cnt=0; int ii=i; for(int j=i+1;j<=n;j++) { if(vis[newa[j].val]==0) { cnt++; hasvis.push_back(newa[j].val); vis[newa[j].val]++; } if(dp[i]+cnt*cnt>=dp[n])break; if(dp[j]>dp[i]+cnt*cnt) { dp[j]=dp[i]+cnt*cnt; ii=j; } } for(int k=0;k