问题标题: 酷町堂:4186

1
0
已解决
龙舟
龙舟
高级光能
高级光能

求思路,核心!!

ps:我笨,详细一点

龙舟在2020-08-24 14:51:18追加了内容

#include<iostream>
#include<cmath>
#include<iomanip>
#include<string>
#include<algorithm>
#include<cstdio>
using namespace std;
int a[100010],b[110000],sum;
bool cmp(int x,int y){
    return x>y;
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=2;i++) b[i]=a[i];
    for(int i=3;i<=n;i++){
        int minn=0x3f3f3f3f,pos;
        for(int j=1;j<=2;j++){
            if(b[j]<minn){
                minn=b[j];
                pos=j;
            }
        }
        b[pos]+=a[i];
    }
    sort(b+1,b+1+n,cmp);
    for(int i=1;i<=n;i++)
    {
        sum+=a[i];
    }
    cout<<sum+b[1];
    return 0;
}
0分代码

龙舟在2020-08-24 15:01:52追加了内容

大家快来呀!!!!!


0
已采纳
吴庞茂旭
吴庞茂旭
资深光能
资深光能

//Coding
 /*特殊情况处理*/
    /*排序*/

/*分组处理,贪心分组,因为具有这种性质*/

你的QQ是多少?听不懂我可以给你讲讲

0
曹博扬
曹博扬
初级天翼
初级天翼

你怎么额

这题很简单

先用sort快排,派他们的速度

少的先倒

再枚举累加(注意,是总时间和,每次乘(n-i))

输出答案

0
王子健
王子健
初级天翼
初级天翼

你学贪心了?贪心很简单的,思路如下:

这个不是简单的一个像是贪心模拟接水的问题,你是要考虑哪个水龙头先空出来就去那里接水
所以要 t1:记录第一个水龙头结束时间  t2:记录第二个水龙头结束时间 
然后比较哪个结束时间早去那个水龙头

 

思路较为简单,代码实现也简单,只要判断t1和t2大小就行了,哪个小去那边

0
李鑫羽
李鑫羽
初级光能
初级光能

核心代码:

sort(a+1,a+1+n);
    w1=a[1];
    sum+=w1;
    w2=a[2];
    sum+=w2;
    for(int i=3;i<=n;i++){
        if(w1<w2){
            w1+=a[i];
            sum+=w1;
        }
        else{
            w2+=a[i];
            sum+=w2;
        }
    }
    cout<<sum;

我要回答