2 条题解
-
0
#include <bits/stdc++.h> using namespace std; int s[110], f[110]; int main() { int L[4], C[4], n; for(int i=1;i<=3;i++) scanf("%d", &L[i]); for(int i=1;i<=3;i++) scanf("%d", &C[i]); scanf("%d", &n); int x, y;scanf("%d%d", &x, &y);if(x>y)swap(x, y); s[1]=0;for(int i=2;i<=n;i++)scanf("%d", &s[i]); memset(f, 63, sizeof(f)); f[x]=0; for(int i=x+1;i<=y;i++) { for(int j=i-1;j>=x;j--) if ( s[i]-s[j] <= L[3]) { for(int k=1;k<=3;k++)if(s[i]-s[j] <= L[k])f[i]=min(f[i], f[j]+C[k]); } else break; } printf("%d\n", f[y]); return 0; } -
0
#include<bits/stdc++.h> using namespace std; int s[110],f[110]; int main() { int L[4],C[4],n; for(int i=1;i<=3;i++) scanf("%d",&L[i]); for(int i=1;i<=3;i++) scanf("%d",&C[i]); scanf("%d",&n); int x,y;scanf("%d%d",&x,&y);if(x>y)swap(x,y); s[1]=0;for(int i=2;i<=n;i++)scanf("%d",&s[i]); memset(f,63,sizeof(f)); f[x]=0; for(int i=x+1;i<=y;i++) { for(int j=i-1;j>=x;j--) if ( s[i]-s[j]<=L[3]) { for(int k=1;k<=3;k++)if(s[i]-s[j]<=L[k])f[i]=min(f[i],f[j]+C[k]); } else break; } printf("%d\n",f[y]); return 0; }
- 1
信息
- ID
- 250
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 52
- 已通过
- 32
- 上传者