|
西安网络赛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
|