社区讨论
关于机器猫大战唐僧这件事
P2466[SDOI2008] Sue 的小球参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mjiazddv
- 此快照首次捕获于
- 2025/12/23 16:08 2 个月前
- 此快照最后确认于
- 2025/12/25 22:15 2 个月前
呜呜呜为何代码连样例都过不了
正确输出:0.000
实际输出:0.072
望大佬找出错误,万分感谢!!!
CPP正确输出:0.000
实际输出:0.072
望大佬找出错误,万分感谢!!!
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e3+10;
ll dp1[MAXN][MAXN]; //l->r->l
ll dp2[MAXN][MAXN]; //l->r
ll sum[MAXN];
int n,start;
ll tmp;
struct node{
int x,y,v;
}egg[MAXN];
bool cmp(node a,node b){
return a.x<b.x;
}
ll calc(int l,int r){
return sum[r]-sum[l-1];
}
int main(){
memset(dp1,0x3f,sizeof(dp1));
memset(dp2,0x3f,sizeof(dp2));
scanf("%d%d",&n,&start);
for(int i=1;i<=n;++i)
scanf("%d",&egg[i].x);
for(int i=1;i<=n;++i){
scanf("%d",&egg[i].y);
tmp+=egg[i].y;
}
for(int i=1;i<=n;++i)
scanf("%d",&egg[i].v);
egg[++n].x=start;
sort(egg+1,egg+n+1,cmp);
for(int i=1;i<=n;++i){
sum[i]=sum[i-1]+egg[i].v;
if(egg[i].x==start&&egg[i].v==0){
dp1[i][i]=dp2[i][i]=0;
}
}
for(int len=2;len<=n;++len){
for(int i=1;i<=n-len+1;++i){
int j=i+len-1;
dp1[i][j]=min(dp1[i][j],dp1[i+1][j]+(egg[i+1].x-egg[i].x)*(calc(1,i)+calc(j+1,n)));
dp1[i][j]=min(dp1[i][j],dp2[i+1][j]+(egg[j].x-egg[i].x)*(calc(1,i)+calc(j+1,n)));
dp2[i][j]=min(dp2[i][j],dp1[i][j-1]+(egg[j].x-egg[i].x)*(calc(1,i-1)+calc(j,n)));
dp2[i][j]=min(dp2[i][j],dp2[i][j-1]+(egg[j-1].x-egg[j].x)*(calc(1,i-1)+calc(j,n)));
}
}
tmp=tmp-min(dp1[1][n],dp2[1][n]);
printf("%.3lf",tmp/1000.0);
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...