NYOJ-71 独木舟上的旅行 (贪心)
独木舟上的旅行
- 描述
-
进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。
- 输入
- 第一行输入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 独木舟上的旅行 (贪心)的更多相关文章
- nyoj 71 独木舟上的旅行(贪心专题)
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...
- NYOJ 71 独木舟上的旅行(贪心)
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...
- NYOJ 71 独木舟上的旅行【贪心】
解题思路:给出船的最大载重量w,和n个人,每只船最多可以乘坐两个人,问怎样坐船使得安排的船只的数量最少.这n个人的体重为a1,a2,a3,---,an-1,an首先将体重按升序排列好,再考虑最重的人, ...
- nyoj 71 独木舟上的旅行
点击打开链接 独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度: 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人 ...
- 独木舟上的旅行--nyoj题目71
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...
- 南阳ACM 题目71:独木舟上的旅行 Java版
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客的总 ...
- ACM 独木舟上的旅行
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...
- 南阳OJ独木舟上的旅行
/*独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描写叙述 进行一次独木舟的旅行活动.独木舟能够在港口租到,而且之间没有差别. 一条独木舟最多仅仅能乘坐 ...
- nyoj_71_独木舟上的旅行_201312122051
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能 ...
随机推荐
- OpenGL杂七杂八
Projection Matrix 投影矩阵 3D -> 2D PFD_DOUBLEBUFFER 双缓冲 在图形图象处理编程过程中,双缓冲是一种基本的技术.我们知道,如果窗体在响应WM_PAIN ...
- java 调用打印机 打印服务
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import javax ...
- php学习笔记——基础知识(1)
1.PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果. 2.基础 PHP 语法 1)PHP 脚本可放置于文档中的任何位置. 2)PHP 脚本以 <?php 开头,以 ?> ...
- C# 语言规范_版本5.0 (第16章 异常)
1. 异常 C# 中的异常用于处理系统级和应用程序级的错误状态,它是一种结构化的.统一的和类型安全的处理机制.C# 中的异常机制非常类似于 C++ 的异常机制,但是有一些重要的区别: 在 C# 中,所 ...
- scala实现快速排序
scala> def qSort(a: List[Int]): List[Int] = { | ) a | else qSort( a.filter(a.head > _ )) ++ | ...
- python修炼6
文件操作 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法. 1.打开文件 (相当于桌面的快捷方式)f=open(文件名,模式默 ...
- Oracle sql 中的字符(串)替换与转换[转载]
1.REPLACE 语法:REPLACE(char, search_string,replacement_string) 用法:将char中的字符串search_string全部转换为字符串repla ...
- Intent的几种Flag的不同
冬天有点冷,不想写博客. 研究下Intent的几种Flag的不同: 1,FLAG_ACTIVITY_CLEAR_TOP:会清理掉目标activity栈上面所有的activity Intent inte ...
- HDU 5857 Median
因为原序列是排列好了的,那么只要看一下给出的两个区间相交的情况,然后分类讨论一下,O(1)输出. #pragma comment(linker, "/STACK:1024000000,102 ...
- 用VulApps快速搭建各种漏洞环境
项目主页 https://github.com/Medicean/VulApps 项目介绍 收集各种漏洞环境,统一采用 Dockerfile 形式.DockerHub 在线镜像地址 获取并使用相关镜像 ...