求助
查看原帖
求助
326452
Fearliciz楼主2021/10/13 19:35

有帮助会得到一个大大的关注

#include<bits/stdc++.h>

using namespace std;

//每一个点的价值:它距离上一个点的两倍和它的推销值之和,排序后统计答案即可。

struct NODE{
	int x,id;
}road[100010];

bool cmp(NODE x,NODE y){
	return x.x>y.x;
}

int n,tu[100010],ju[100010];

int main()
{
	cin>>n;
	ju[0]=0;
	for(int i=1;i<=n;i++){
		cin>>ju[i];
		road[i].x=ju[i]*2;
		road[i].id=i;
	}
	for(int i=1;i<=n;i++){
		cin>>tu[i];
		road[i].x+=tu[i];
	}
	sort(road+1,road+1+n,cmp);
	int maxn=0,cnt=0,ans=0;
	for(int i=1;i<=n;i++){
		if(road[i].id>maxn){
			maxn=road[i].id;
		}
		ans=ju[maxn]*2;
		cnt+=tu[i];
		ans+=cnt;
		cout<<ans<<endl;
	}
    return 0;
}

是思路假了吗

样例1输出:

11
13
16
20
25
2021/10/13 19:35
加载中...