Mi servirebbe aiuto per Fibonacci Colonies (fibonaccibug)
Al momento riesco a fare solo 10 su 100
Detto in poche parole aggiungo solo le colonie che fanno parte di una colonia minore di 26 ( fibonacci di 26 > max_K)
E mi salvo i prezzi massimi per ogni colonia
Sucessivamente faccio un unbounded Knapsack.
Non riesco a capire dove ho sbagliato
#include<bits/stdc++.h>
using namespace std;
vector<long long>wt, val; //wt = weight, val = value;
long long knap(long long W, long long n){
if(n==0)
return 0;
vector<long long>dp(W+1,0);
for (long long i=0; i<=W; i++)
for (long long j=0; j<n; j++)
if (wt[j] <= i)
dp[i] = max(dp[i], dp[i-wt[j]]+val[j]);
return dp[W];
}
int main()
{
long long T,N,K;
cin>>T;
vector<long long>fibo(2,1);
for(long long i=2;i<25;i++){
fibo.push_back(fibo[i-1]+fibo[i-2]);
}
for(long long t=0;t<T;t++){
cin>>N>>K;
vector<long long>V(26,-1);
long long A,B;
for(long long i=0;i<N;i++){
cin>>A>>B;
if(A<26)
V[A]=max(V[A],B);
}
for(long long i=0;i<V.size();i++)
if(V[i]!=-1){
cout<<V[i]<<endl;
val.push_back(V[i]);
wt.push_back(fibo[i]);
}
cout << knap(K,val.size())<<endl;
val.clear();
wt.clear();
}
return 0;
}