@k宇阳 ? ? 前一个字不会打
2 个赞
我还在!
2 个赞
啊啊啊,金明预算出了一个紫色的玩意,谁能帮我看看这是啥
2 个赞
2 个赞
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll u[32005], p[32005], q[32005];
vector<vector<ll> > a;
ll ans[100005];
int main(){
ll n, m;
cin >> n >> m;
for(ll i=0;i<m;i++){
cin >> u[i] >> p[i] >> q[i];
q[i]--;
if(q[i]==-1){
a[i].push_back(0);
}
else{
a[i].push_back(0);
a[p[i]].push_back(i);
a[p[i]][0]++;
}
}
for(ll i=0;i<m;i++){
for(ll j=n;j>=1;j--){
if(j-u[i]>=0) ans[j]= max(ans[j], ans[j-u[i]]+u[i]*p[i]);
if(a[i][0]>0&&j-(u[i]+u[a[i][1]])>=0) ans[j]= max(ans[j], ans[j-(u[i]+u[a[i][1]])]+u[i]*p[i]+u[a[i][1]]*u[a[i][1]]);
if(a[i][0]>1&&j-(u[i]+u[a[i][2]])>=0) ans[j]= max(ans[j], ans[j-(u[i]+u[a[i][2]])]+u[i]*p[i]+u[a[i][2]]*u[a[i][2]]);
if(a[i][0]>1&&j-(u[i]+u[a[i][1]]+u[a[i][2]])>=0) ans[j]= max(ans[j], ans[j-(u[i]+u[a[i][1]]+u[a[i][2]])]+u[i]*p[i]+u[a[i][1]]*u[a[i][1]]+u[a[i][2]*p[a[i][2]]]);
cout << ans[j] << " ";
}
cout << endl;
}
cout << ans[n];
}
2 个赞
发个新的帖子!
2 个赞
阚。
2 个赞
bushi(
2 个赞
我手都快敲废了了给我出一个紫色的玩意
2 个赞
是我色盲吗?这不是粉色吗
2 个赞
差不多啦
2 个赞
me
2 个赞
最佳潜水在此
3 个赞
+1
2 个赞
我( @连晨皓 )加入5个月,潜水已经潜到阅读时间6天了(
2 个赞
2 个赞
我算的
1 个赞
说句实话我点赞7.1k以后就不咋涨了
1 个赞