50,930
社区成员
发帖
与我相关
我的任务
分享
T1
#include <iostream>
#include <cstring>
using namespace std;
const int N=500;
int f[N];
int n;
int a[N][N];
int main()
{
cin>>n;
memset(f,0x3f,sizeof f);
f[1]=0;
for(int i=1; i<n; i++)
for(int j=i+1; j<=n; j++)
cin>>a[i][j];
for(int i=1; i<n; i++)
for(int j=i+1; j<=n; j++)
f[j]=min(f[j],f[i]+a[i][j]);
cout<<f[n];
return 0;
}
T2
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
LL dp[30000];//前i个花费价格为j的最大
int n,m;
int v[30],p[30];
int read() {
char c=getchar();
int date=0,w=1;
while(c<'0' || c>'9') {
if(c=='-') w=-1;
c=getchar();
}
while(c>='0' && c<='9') {
date=date*10+(c-'0');
c=getchar();
}
return date*w;
}
int main() {
n=read(),m=read();
for(int i=1; i<=m; i++)
v[i]=read(),p[i]=read();
for(int i=1; i<=m; i++)
for(int j=n; j>=v[i]; j--)
dp[j]=max(dp[j],dp[j-v[i]]+v[i]*p[i]);
cout<<dp[n];
return 0;
}
T3
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
const int N=1010;
int n,x;
LL lose[N], win[N], dp[N], use[N];
int main()
{
cin>>n>>x;
for(int i=1; i<=n; i++)
cin>>lose[i]>>win[i]>>use[i];
for(int i=1; i<=n; i++)
{
for(int j=x; j>=0; j--)
if(j>=use[i])
dp[j]=(LL)max(dp[j]+lose[i],dp[j-use[i]]+win[i]);
else dp[j]=(LL)max(dp[j],dp[j]+lose[i]);
}
cout<<(LL)dp[x]*5;
return 0;
}