社区讨论
求助,第五个点WA!!!
P1016[NOIP 1999 普及组/提高组] 旅行家的预算参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo8bi9bj
- 此快照首次捕获于
- 2023/10/27 15:54 2 年前
- 此快照最后确认于
- 2023/10/27 15:54 2 年前
代码
CPP#include<cmath>
#include<cstdio>
#include<iomanip>
#include<iostream>
using namespace std;
const int MAXX=1e9;
const int MAXN=10;
double d[MAXN],p[MAXN],d1,c,d2,ans,maxd,minp=MAXX,l;
int n,minj;
int main(){
// freopen("travel.in","r",stdin);
// freopen("travel.ans","w",stdout);
cin>>d1>>c>>d2>>p[0]>>n;
d[n+1]=d1;
p[n+1]=MAXX;
int i;
for(i=1;i<=n;i++){
cin>>d[i]>>p[i];
if(d[i]-d[i-1]>c*d2){
cout<<"No Solution";
return 0;
}
}
if(d1-d[n]>c*d2){
cout<<"No Solution";
return 0;
}
i=0;
while(i<=n){
minp=MAXX;
//if(d[i+1]-d[i]>c*d2)
maxd=min(d1-d[i],c*d2);
//cout<<i;
for(int j=i+1;maxd>=d[j]-d[i] && j<=n;j++){
if(minp>p[j]){
minp=p[j];
minj=j;
}
if(minp<p[i]){break;}
}
if(minp>=p[i] && c*d2>d1-d[i]){
ans+=((d1-d[i])/d2)*p[i];
break;
}
else{
ans+=(d[minj]-d[i])/d2*p[i];
i=minj;
}
//cout<<i;
}
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...