2 solutions
-
4
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> using namespace std; int a[300],b[300]; long long dp[300][300]; long long q(int x,int y) { long long ans=1; long long tmp=x; while(y) { if(y&1) { ans=ans*tmp; } tmp*=tmp; y>>=1; } return ans; } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d",a+i,b+i); for(int i=0;i<=20;i++) for(int j=1;j<=200;j++) dp[i][j]=2147483647; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { for(int k=0;k<=i;k++) { dp[j][i]=min(dp[j][i],dp[j-1][i-k]+a[j]*q(k,b[j])); } } } printf("%lld\n",dp[m][n]); return 0; }
-
0
from 课件
#include<bits/stdc++.h> using namespace std; int main(){ long long n,m,ans,tot,a[40100],b[40100],f[40100]; cin>>n>>m; for(int i=1;i<=m;i++){ cin>>a[i]>>b[i]; } f[0]=0; for(int i=1;i<=m;i++){ for(int j=n;j>=0;j--){ for(int z=1;z<=j;z++){ long long c= a[i]*pow(z,b[i]); if(i==1||f[j==0]) f[j]=f[j-z]+c; else f[j]=min(f[j],f[j-z]+c); } } } cout<<f[n]<<endl; }
- 1
Information
- ID
- 1042
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 4
- Tags
- # Submissions
- 25
- Accepted
- 15
- Uploaded By