1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /// Raihan Ruhin (username: raihanruhin) /// Resume: https://raihanruhin.github.io #include<bits/stdc++.h> using namespace std; #define SET(a) memset(a,-1,sizeof(a)) #define CLR(a) memset(a,0,sizeof(a)) #define PI acos(-1.0) #define MOD 1000000007 #define MX 100010 int dp[102][102], arr[102], n; int func(int now, int last) { if(now>n) return 0; int &ret = dp[now][last]; if(ret!=-1) return ret; ret=0; ret = func(now+1, last); if(arr[last]<arr[now]) ret = max(ret, func(now+1, now)+arr[now]); return ret; } int main() { ios_base::sync_with_stdio(0), cin.tie(0); int tc, kk=1, x; cin>>tc; while(tc--) { cin>>n; for(int i=1;i<=n;i++) cin>>arr[i]; SET(dp); cout<<func(0, 0)<<endl; //cout<<"Case "<<kk++<<": "<< <<"\n"; } return 0; } |
Thursday, 24 August 2017
Maximum sum increasing subsequence
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment