问题标题: 酷町堂:1258 如何过河 为何60?

0
0
已解决
毕小曼
毕小曼
初级光能
初级光能

http://judge.codingtang.com/problem/1258/

题目:

题目描述 Description

小明来河边玩耍,看到一位老爷爷站在岸边发愁,便上前询问。老爷爷讲出了烦闷的事:他要将买来的货物运到河对岸去,但是一次最多只能运两件货物,且一次运输的重量之和不能超过一个给定的整数。为了保证运输的次数尽可能少来减少成本,请你给小明想想办法。

输入描述 Input Description

输入两行,第一行为货物的件数n和每次运输的重量上限w,用空格隔开。
第二行为每件货物的重量。

【数据范围】
对于20%的数据,n<=100
对于70%的数据,n<=10000
对于100%的数据,n<=30000

输出描述 Output Description

输出一行,包含一个整数,即最少的运输次数。

样例输入 Sample Input

10 100
20 20 90 90 50 40 80 60 70 40

样例输出 Sample Output

6

#include <iostream>
#include <algorithm>
using namespace std;
int a[30010];
int main()
{
    int n,w,j=1,count=0;
    cin>>n>>w;
    int k=n,m=n;
    for(int i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+n+1);
    while(j<=k)
    {
        if(a[j]+a[k]<=w)
        {
            j++;
            count++;
            m-=2;
        }
        k--;
    }
    if(m!=0)count+=m;
    cout<<count; 
} 

60分

错哪了?

Why?

求各位大佬帮个忙


0
已采纳
张瑀涵
张瑀涵
高级光能
高级光能

1.第18行:m-=2改成k--

2.第20行:k--;改成

else
        {
            count++;
            k--;
        }

3.第22行(if(m!=0)······)删除

0
毕小曼
毕小曼
初级光能
初级光能

拜托,难道这种方法行不通?

不对吧

既然能做到60分,那么100因该没问题

谁能解释一下为什么60?

就一定采纳

0
0
毕小曼
毕小曼
初级光能
初级光能

各位大佬,帮个忙吧

毕小曼在2018-08-12 07:59:35追加了内容

呃……

不会吧

都是用老师的那种方法

无语

算了

采纳吧

0
马筠昊
马筠昊
新手守护
新手守护

while(i<=j)
   {
        if(a[i]+a[j]<=w)
        {
            i++;
        }

        j--;

        num++;
    }

0
0
舒航
舒航
新手守护
新手守护

兄dei,看我的

while(i<=j)
   {
        if(a[i]+a[j]<=w)
        {
            i++;
        }

        j--;

        num++;
    }

主程序

 

采纳

0
杨子逸
杨子逸
新手天翼
新手天翼
long long int n,a[31000],m;
    long long int s=0,i=1,j;
    输入>>n>>m;
    j=n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    while(i<=j)
    {
        if(a[i]+a[j]<=m)
        {
            s++;
            i++;
            j--;
        }
        else
        {
            s++;
            j--;
        }
    }
    输出<<s;

//要加

#include<algorithm>
0
我要回答