
数据很小,n = 20,这个应该可以直接搜索吧,我没试,我用的是折半搜索+二分+线段树维护区间最值,折半搜索就是先搜前10个,然后搜后10个,搜前10个的时候把每一个结果用一个pair<花费,权值>保存下来,然后按照花费排序,在第二次搜索的时候对于当前ww , vv需要的是一个前面搜索满足条件v<=m - vv的ww的最大值,然后就用一个线段树维护就行
#pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline")
#pragma GCC optimize(3 , "Ofast" , "inline")
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#include
#include
#include
#include
#include
#include