50分求助 请大家帮忙 谢谢^_^
查看原帖
50分求助 请大家帮忙 谢谢^_^
545516
Habseligkeit楼主2022/10/4 21:51
#include<bits/stdc++.h>
using namespace std;

const int M = 1e9+1;

long long a[30], b[30], f[30][300];
int n, m;

int quick_pow(int x, int y)
{
	long long temp = x, ans = 1;
	while(y)
	{
	  if(y % 2) ans = ans * temp;
	  temp = temp * temp;
	  y = y / 2;
	}
	return ans;
}

int main()
{
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= m; i ++) scanf("%d%d", &a[i], &b[i]);
	
	for(int i = 0;i <= m;i ++)
	  for(int j = 1;j <= n;j ++)
		f[i][j] = M;
	
	for(int i = 1; i <= m; i ++)
	  for(int j = 1; j <= n; j ++)
	    for(int k = 0; k <= j; k ++)
	      f[i][j] = min(f[i][j], f[i - 1][j - k] + a[i] * quick_pow(k, b[i]));
	    
	printf("%d", f[m][n]);
	return 0;
}
2022/10/4 21:51
加载中...