有帮助会得到一个大大的关注
#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