社区讨论

求助,50分(c++,玄关2个

P9749[CSP-J 2023] 公路参与者 5已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lymxwk4q
此快照首次捕获于
2024/07/15 20:07
2 年前
此快照最后确认于
2024/07/15 20:59
2 年前
查看原帖
违规紫衫
记录详情(这是团队内部比赛,有可能看不到,A了1~10)
Code
CPP
//抄袭可耻!!! 
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int u[100010];
int f[100010];
int n,d;
int money=0;
int k=1;
int pre=0;
int p=0;
int t=0;
int main()
{
	cin>>n>>d;//n=公路上站点的数量,d=车每升油可以前进的距离
	//f[0]=0;
	for(int i=2;i<=n;i++)//2到n是因为输入条件中有些从u[1]输入到u[n-1] 
	{
		cin>>u[i];//表示站点间的距离
		f[i]=f[i-1]+u[i];//表示到当前站点的总距离
	}
	for(int i=1;i<=n;i++)cin>>a[i];//表示在不同站点加油的价格
	for(int i=2;i<=n;i++)//2到n是因为输入导致这个循环中也要从u[1]到u[n-1] 
	{
		if(a[i]<a[k]||i==n)
		{
			p=f[i]-f[k];
			if(p<=pre)
			{
				pre=pre-p;
				k=i;
			}
			else
			{
				p=p-pre;
				if(p%d==0)
				{
					t=p/d;
					money=money+t*a[k];
				}
				else
				{
					t=p/d+1;
					money=money+t*a[k];
					pre=t*d-p;
				}
				k=i;
			}
		}
	}
	cout<<money;
	return 0;
}
/*
5 4
10 10 10 10
9 8 9 6 5
*/
//习惯打样例,是过了的
求求各位了,本蒟蒻在机房的比赛时间一直在改这道题

回复

8 条回复,欢迎继续交流。

正在加载回复...