CSP-J T2求帮忙估分
  • 板块灌水区
  • 楼主witness_cy
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 21:06
  • 上次更新2023/11/2 12:08:35
查看原帖
CSP-J T2求帮忙估分
572193
witness_cy楼主2023/10/21 21:06

小图灵给80,洛谷上第二档T了三个点,另外一个估分网站上特殊性质B挂了


#include<iostream>
using namespace std;

#define N 100005
#define int long long

int n,d,dis[N],a[N];

void solve1(){
    int minc=1, nd=0,nc=0;
    
    while(nd<dis[n]){
		for(int i=1;dis[i]<nd;i++){
            if(a[i]<a[minc]) minc=i;
        }
        nd+=d,nc+=a[minc];
    }
    cout<<nc;
}

void solve2(){
	int minc=1,nc=0;
    for(int i=1;i<=n-1;i++){
		if(a[i]<a[minc]) minc=i;
		nc+=(dis[i+1]-dis[i])/d*a[minc];
	}
	cout<<nc;
}

signed main(){
	
    freopen("road.in","r",stdin);
    freopen("road.out","w",stdout);
    
    cin>>n>>d;
    for(int i=2,v;i<=n;i++) cin>>v,dis[i]=dis[i-1]+v;
    for(int i=1;i<=n;i++) cin>>a[i];
    
    int Min=0x3f3f3f3f;
    for(int i=1;i<=n-1;i++) Min=min(Min,a[i]);
    
    if(n<=1005) solve1();
    else if(Min==a[1]){
		int oil=(dis[n]%d==0)?(dis[n]/d):(dis[n]/d+1);
		cout<<oil*a[1];
	}
	else solve2();
	return 0;
}
2023/10/21 21:06
加载中...