1135 2022. 03. 13 16:47:59 Zoli9 Főzet készítés cpp11 Időlimit túllépés 20/50 549ms 93972 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > relprim(500);
vector<vector<vector<int> > > dp(501, vector<vector<int> >(501, vector<int>(35)));

int dpf(int a, int b, int i)
{
  if(i>a) {
    return 0;
  }
	if (dp[a][b][i])
	{
		return dp[a][b][i];
	}
	else
	{
		int ak=0; 
		int bk=0;
		for (int x : relprim[i])
		{
			ak+=i; bk+=x;
			if (a-ak<0||b-bk<0)
			{
				break;
			}
			else
			{
				dp[a][b][i]=max(dp[a][b][i], dpf(a-ak, b-bk, i+1)+ak/i);
			}
		}
		return dp[a][b][i];
	}
}

int main() {
	relprim[1].push_back(1);
	for (int i=1; i<500; i++)
	{
		for (int j=1; j<i; j++)
		{
			if (__gcd(i, j)==1)
			{
				relprim[i].push_back(j);
				relprim[j].push_back(i);
			}
		}
	}
	int t, a, b;
	cin>>t;
	for (int i=0; i<t; i++)
	{
		cin>>a>>b;
		cout<<dpf(a, b, 1)<<"\n";
	}
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 20/50
1 Elfogadva 0/0 71ms 93848 KiB
2 Elfogadva 0/0 92ms 93852 KiB
3 Elfogadva 3/3 63ms 93792 KiB
4 Elfogadva 2/2 64ms 93932 KiB
5 Elfogadva 3/3 65ms 93804 KiB
6 Elfogadva 2/2 64ms 93804 KiB
7 Elfogadva 3/3 79ms 93944 KiB
8 Elfogadva 2/2 90ms 93960 KiB
9 Elfogadva 3/3 81ms 93888 KiB
10 Elfogadva 2/2 79ms 93972 KiB
11 Időlimit túllépés 0/2 500ms 47220 KiB
12 Időlimit túllépés 0/2 497ms 47172 KiB
13 Időlimit túllépés 0/2 509ms 47184 KiB
14 Időlimit túllépés 0/2 500ms 47212 KiB
15 Időlimit túllépés 0/2 537ms 47156 KiB
16 Időlimit túllépés 0/2 500ms 47048 KiB
17 Időlimit túllépés 0/2 549ms 47256 KiB
18 Időlimit túllépés 0/2 500ms 47268 KiB
19 Időlimit túllépés 0/2 527ms 47220 KiB
20 Időlimit túllépés 0/3 500ms 47360 KiB
21 Időlimit túllépés 0/3 527ms 47384 KiB
22 Időlimit túllépés 0/3 483ms 47396 KiB
23 Időlimit túllépés 0/3 514ms 47484 KiB