NYOJ 47过河问题
主要思路:先排序。有两种可能是最小的情况,一种是让最小的去带着最大的过去,然后最小的再回来,还有一种就是先最小的和第二小的一块过去, 然后最小的回来,让最大的和第二大的过去,接着第二小的回来,第二小和最小的接着在过去,最小的接着回来,主要就是这两种,用的时候判断一下,接着的问题就是n是奇数还是偶数的问题
排完序之后的a[0]最小, a[n-1]最大,第一种的时间为a[0] + a[n -1] + a[0] + a[n - 2];其中a[0]是最短的时间,a[n-1]是最大的时间,下面一样, 第二种的时间为a[n -1] + a[1] + a[1] + a[0];其中a[1]是第二小的时间。最后要判断是奇偶数,具体代码如下,代码上有注释:
#include <stdio.h>
#include <stdlib.h> int main()
{
int t, i, j, tmp, sum, index;
scanf("%d", &t);
while(t --)
{
int n, a[];
scanf("%d", &n);
for(i = ; i < n; i ++)
{
scanf("%d", &a[i]);
}
for(i = ; i < n - ; i ++)//选择排序
{
index = i;
for(j = i + ; j < n; j ++)
if(a[index] > a[j])
index = j;
tmp = a[index];
a[index] = a[i];
a[i] = tmp;
}
if(n <= )//如果n为1或者为2 的时候,只需要进行一次过桥,时间为最后一个人的
{
printf("%d\n", a[n - ]);
continue;
}
sum = a[];
while(n > )//当n > 3的时候过桥时间有个规律,最短一共两种,一种是最短时间的那个人带着最长的那个过,然后自己再回来,还有就是先最长的两个过去,第二短的回来,第一第二短在过去,第一短再回来
{
if(a[] + a[n - ] + a[] + a[n - ] > a[n - ] + a[] + a[] + a[])//这里判断当用最小的运过去与普通方法运过去的大小
sum += a[n - ] + a[] + a[] + a[];
else
sum += a[] + a[n - ] + a[] + a[n - ];
n -= ;//将n减少2,因为一次过去两个
}
if(n == )//这里判断有两个用途,一个实判断是否是奇数,就是最后还剩三个,还有就是刚开始是奇数的时候
sum += a[] + a[];
printf("%d\n", sum);
}
return ;
}
NYOJ 47过河问题的更多相关文章
- nyoj 47——过河问题——————【贪心】
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- nyist 47 过河问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=47 过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆 ...
- NYOJ 47:过河问题(思维)
47-过河问题 内存限制:64MB 时间限制:1000ms 特判: No 通过数:6 提交数:10 难度:5 题目描述: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话 ...
- NYOJ 47 河问题
时间限制:1000 ms | 内存限制:65535 KB 难度:5 描写叙述 在漆黑的夜里,N位旅行者来到了一座狭窄并且没有护栏的桥边.假设不借助手电筒的话,大家是不管怎样也不敢过桥去的.不幸的是 ...
- nyoj 47 江 河问题 【贪婪】
经典的贪婪. 两种方案:一个:让我们来最快,第二快,在过去的第一,最快的回.然后最慢,最慢第二,在过去.次最快的回来a[0]+a[1]+a[1]+a[n-1] 二:最快的和最慢的过去,最快的回来,最快 ...
- NYOJ 47
思路: 在n>3的时候就用前两个小的来带后两个大的,有两种方式(一就是1,2先过,然后1回来,然后n,n-1过,然后2,回来),(二就是 1,n先过去 然后1回来,然后 1,n-1过去吗.,然后 ...
- 过河问题--nyoj题目47
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- nyoj 过河问题
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- 基于visual Studio2013解决C语言竞赛题之1079狼羊过河
题目 解决代码及点评 /************************************************************************/ /* ...
随机推荐
- nginx——location 优先级
一. location 的匹配符1.等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式2.空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式3.正则匹配 ...
- ubuntu install opengrok
总结: 1. 安装jdk和tomcat 2. 安装ctags 3. 解压opengrok.tar.gz包, 然后将source.war复制到tomcat/webapp下面 sudo cp -R ope ...
- [Android1.5]TextView跑马灯效果
from: http://www.cnblogs.com/over140/archive/2010/08/20/1804770.html 前言 这个效果在两周前搜索过,网上倒是有转载,可恨的是转载之后 ...
- windows server 2008 asp连接数据库sql2000失败
由于服务器现在的服务器已不能承受了,需要替换服务器并把window2003升级为window2008,把所有数据都平移过来.平移完后遇到ASP总是不能连接上sql2000,这让我非常郁闷,处理了好几个 ...
- Tag Helpers 介绍
Tag Helpers 介绍 原文:Introduction to Tag Helpers作者:Rick Anderson翻译:刘浩杨校对:高嵩(Jack) 什么是 Tag Helpers? Tag ...
- iOS开发之——巧用反射机制
1.应用场景——自定义UITabBarController的TabBar视图 (1)隐藏TabBar视图 一般我们选择自定义TabBar视图有两种方式.1是将tabBar视图隐藏;2是将TabBar视 ...
- 简述安装android开发环境
1, 安装java sdk2, 安装andoroid sdk3, 在环境变量里配置java和andoroid sdk的路径4, 部署eclipse,并在eclipse上安装ADT 补充: 步骤3之后需 ...
- 转:php使用websocket示例详解
原文来自于:http://www.jb51.net/article/48019.htm 这篇文章主要介绍了php使用websocket示例,需要的朋友可以参考下 下面我画了一个图演示 client ...
- SetTimer and CreateWaitableTimer的例子(静态函数设置为回调函数,瑞士的网页,有点意思)
Timers (SetTimer and CreateWaitableTimer) in Windows SetTimer The following example creates a time ...
- 应用程序的关闭退出(在FMX中,Activity替代了Form的概念)
在VCL中,关闭程序的主窗体也就意味着程序的主循环结束,主程序自然而然结束.所以在主窗体中使用窗体的关闭函数(Close)即可,如下: procedure TfrmMain.btncloseClick ...