独木舟上的旅行

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
 
描述

进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。

 
输入
第一行输入s,表示测试数据的组数;
每组数据的第一行包括两个整数w,n,80<=w<=200,1<=n<=300,w为一条独木舟的最大承载量,n为人数;
接下来的一组数据为每个人的重量(不能大于船的承载量);
输出
每组人数所需要的最少独木舟的条数。
样例输入
3
85 6
5 84 85 80 84 83
90 3
90 45 60
100 5
50 50 90 40 60
样例输出
5
3
3
思路:贪心思想。先对数据进行排序,再从大数向小遍历,每一个数再从小数往大找数和其相配,如果被装载,则将bool数组中对应元素从0置为1.
代码:
 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
int mycomp(const void *p1, const void * p2)
{
const int * a1 = (const int *)p1;
const int * a2 = (const int *)p2;
if (*a1 < *a2)
return -;
else if (*a1 == *a2)
return ;
else
return ;
}
int main(void)
{
int s,i,j;
scanf("%d", &s);
while(s--)
{
int w, n;
int count = ;
scanf("%d %d", &w, &n);
int q_man[] = { };
bool taken[] = { };
for (i = ; i < n; i++)
scanf("%d", &q_man[i]);
qsort(q_man, n, sizeof(int), mycomp);
//for (i = 0; i < n; i++)
// printf("%d ", q_man[i]);
for (i = n - ; i >= ; i--)
{
if (!taken[i])
{
for (j = ; j < n; j++)
{
if (q_man[j] + q_man[i] <= w && taken[j]==)
{
taken[j] = ;
break;
}
}
taken[i] = ;
count++;
}
}
printf("%d\n", count);
}
return ;
}

NYOJ-71 独木舟上的旅行 (贪心)的更多相关文章

  1. nyoj 71 独木舟上的旅行(贪心专题)

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  2. NYOJ 71 独木舟上的旅行(贪心)

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  3. NYOJ 71 独木舟上的旅行【贪心】

    解题思路:给出船的最大载重量w,和n个人,每只船最多可以乘坐两个人,问怎样坐船使得安排的船只的数量最少.这n个人的体重为a1,a2,a3,---,an-1,an首先将体重按升序排列好,再考虑最重的人, ...

  4. nyoj 71 独木舟上的旅行

    点击打开链接 独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度: 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人 ...

  5. 独木舟上的旅行--nyoj题目71

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  6. 南阳ACM 题目71:独木舟上的旅行 Java版

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客的总 ...

  7. ACM 独木舟上的旅行

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  8. 南阳OJ独木舟上的旅行

     /*独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描写叙述 进行一次独木舟的旅行活动.独木舟能够在港口租到,而且之间没有差别. 一条独木舟最多仅仅能乘坐 ...

  9. nyoj_71_独木舟上的旅行_201312122051

    独木舟上的旅行 时间限制:3000 ms  |           内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能 ...

随机推荐

  1. 真的了解JS么?

    1.setTimeout setTimeout(function(){ }),1000) setTimeout(function(num){ alert(num)    //弹123 },1000,1 ...

  2. Python学习笔记——基础篇【第六周】——logging模块

    常用模块之logging 用于便捷记录日志且线程安全的模块 import logging logging.basicConfig(filename='log.log', format='%(ascti ...

  3. Memcache(1)

    一.缓存套路 原文地址:http://coolshell.cn/articles/17416.html Scaling Memcached at Facebook 好些人在写更新缓存数据代码时,先删除 ...

  4. percentiles of live data capture

    For example, every ten seconds I got a server response time, I want to know the 90 percentile respon ...

  5. UIDatePicker 时间滚动表

    UIDatePicker *datapicker; //时间滚动表 datapicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(50, 200 ...

  6. Git 添加自己分支 pull request

    1.找到项目地址 这里,我们可以找到项目地址,比如:https://github.com/*****/Cplusplus_Thread_Lib,然后点击页面右上角的 "fork"  ...

  7. 坑爹的 Hardware Reserved Memory (查看内存等)

    来源: http://blog.sina.com.cn/s/blog_772645ff0100s4t7.html 我的电脑是GatewayNV49C83c,酷睿i3的CPU和NV的独立显卡 Inter ...

  8. c++ inline关键字的理解

    1. inline是实现修饰符,而非声明修饰符,所以应该用于实现部分的修饰(你也可以放置inline在声明,但是没有必要) 2. 所有中类中定义的函数都默认声明为inline函数,所有我们不用显示地去 ...

  9. php +mysql 添加 删除 修改 insert into delete update

    INSERT INTO 插入数据库 $sql = "INSERT INTO subject (uid,fun,title) VALUES (3,88,'语文')"; $query ...

  10. 3.linux常用软件的安装方法

    linux 上的软件不像windows上直接运行安装那么容易,在linux上有很多不同的安装包,大概常见的就有deb.tar.gz.tar.bz(tar.bz2).rpm等类型文件 1.deb文件安装 ...