WA 70
查看原帖
WA 70
413301
Digital_Sunrise楼主2022/7/17 17:21

WA on Sub #1 2,4,11

开了 O2 ,二进制优化

求调

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n,s,m;
int dp[40005];

signed main()
{
	cin >> n >> s >> m;
	for(int i = 1;i <= n;i++)
	{
		int a,b,c;
		int _v,_w,_s;
		cin >> a >> b >> c;
		_v = a,_w = b,_s = c;
		int k = 0;
		//二进制优化 
		while(_s)
		{
			int v,w;
			if(_s >= (1 << k))
			{
				v = _v << k;
				w = _w << k;
				_s -= (1 << k);
			}
			else
			{
				v = _v * _s;
				w = _w * _s;
				_s = 0;
			}
			for(int j = m;j >= v;j--)
				dp[j] = max(dp[j],dp[j - v] + w);
			k++;
		}
	}
	for(int i = 1;i <= s;i++)
	{
		int a,b,c;
		cin >> a >> b >> c;
		for(int j = 1;j <= m;j++)
			for(int k = m;k >= j;k--)
				dp[k] = max(dp[k],dp[k - j] + j * j * a + j * b + c);
	}
	cout << dp[m];
	return 0; 
}
2022/7/17 17:21
加载中...