社区讨论
不是萌新,不是刚学c艹,但这道题做错了
P1016[NOIP 1999 普及组/提高组] 旅行家的预算参与者 27已保存回复 29
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 29 条
- 当前快照
- 1 份
- 快照标识符
- @mi6yi4vi
- 此快照首次捕获于
- 2025/11/20 12:54 4 个月前
- 此快照最后确认于
- 2025/11/21 00:17 4 个月前
我第二个点T了,最后一个点Wa了
基本思路:贪心+模拟
CPP#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
double c,s,d1,d2,add,d[10],p[10],oil=0,dis=0,ans=0,minn;
int n,m,tot=0,flag;
int main(){
scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&p[0],&n);
for(int i=1;i<=n;i++)scanf("%lf%lf",&d[i],&p[i]);
d[n+1]=d1,p[n+1]=0;
int i=0;s=c*d2;
while(i<=n){
flag=1,minn=555;
for(register int j=i+1;j<=n+1&&d[j]<=d[i]+s&&flag;j++)
if(p[i]>p[j])
ans+=p[i]*((d[j]-d[i])/d2-oil),i=j,oil=0,flag=0;
if(flag){
for(register int j=i+1;j<=n+1&&d[j]<=d[i]+s;j++)
if(minn>=p[j])
minn=p[j],i=j,add=p[i]*(c-oil),oil=c-(d[j]-d[i])/d2;
ans+=add;
}
}
printf("%.2lf",ans);
return 0;
}
回复
共 29 条回复,欢迎继续交流。
正在加载回复...