URAL 1826. Minefield(数学 递归)
题目链接:http://acm.timus.ru/problem.aspx?
space=1&num=1826
1826. Minefield
Memory limit: 64 MB
cross the field to the enemy's side and then one agent brings the mine detector back to the remaining group. This is repeated until only two agents remain. These two agents then cross the field together.
Input
the minefield (the time is an integer from 1 to 600).
Output
Sample
input | output |
---|---|
4 |
17 |
题意:
有n个人要经过一片雷区,可是他们仅仅有一个扫雷用的探測器,所以每次仅仅能过去两个人,当中一个人把探測器拿回来,继续再过去两个人,
每一个人的行走速度不同,所花费的时间,是依照两个人中较慢的那个人所用时间计算的!
求所有人通过雷区的最短时间。
PS:
每次先把最大的两个移过去。当人数大于等于4的时候,
分两种情况:
1:最小的来回几次把最大的两个带过去。
2:先让最小的两个过去,然后最小的把探測器的回来,然后最大的两个过去,对面最小的把探測器带回来。
代码例如以下:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[147];
int ans = 0;
void cal(int m)
{
if(m == 1)
{
ans+=a[0];
}
else if(m == 2)
{
ans+=a[1];
}
else if(m == 3)
{
ans+=a[0]+a[1]+a[2];
}
else
{ if((a[0]*2+a[m-1]+a[m-2]) < (a[0]+2*a[1]+a[m-1]))
{
ans+=a[0]*2+a[m-1]+a[m-2];//0号一个人来回
}
else
{
ans+=a[0]+2*a[1]+a[m-1];//0,1号两个人来回
}
cal(m-2);
}
}
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
cal(n);
printf("%d\n",ans);
}
return 0;
}
URAL 1826. Minefield(数学 递归)的更多相关文章
- HDU 4472 Count(数学 递归)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4472 Problem Description Prof. Tigris is the head of ...
- CodeForces - 83D:Numbers (数学&递归 - min25筛 )
pro:给定三个整数L,R,P求[L,R]区间的整数有多少个是以P为最小因子的.L,R,P<2e9; sol: 一: 比较快的做法是,用函数的思想递归. 用solve(N,P)表示求1到N有多少 ...
- POJ 1759 Garland(二分+数学递归+坑精度)
POJ 1759 Garland 这个题wa了27次,忘了用一个数来储存f[n-1],每次由于二分都会改变f[n-1]的值,得到的有的值不精确,直接输出f[n-1]肯定有问题. 这个题用c++交可以 ...
- URAL1826. Minefield 题解
原题: http://acm.timus.ru/problem.aspx?space=1&num=1826 1826. MinefieldTime limit: 0.5 secondMemor ...
- python专题 --- 递归
如果一个函数在函数内部调用自身本身,这个函数就是递归函数 举例如阶乘函数,其数学递归定义如下: 对应的算法实现 def fact(n): if n==1: return 1 return n * fa ...
- 数据结构及算法分析(0)——引论
引论提到算法递归的概念,递归在很多算法中都会出现.所谓递归,当一个函数用它自己来定义的时候就称为递归. 递归调用有两大要素: 基准情况. 递归调用. 并非所有的数学递归函数 ...
- 数据结构(c语言描述)
预备的数学知识 数据结构的概念 基本名词 算法 线性表 线性表的定义和基本操作 顺序表 顺序表增 顺序表删 顺序表查 单链表 建立单链表 单链表增 单链表删 单链表查 双链表 循环链表 静态链表 栈 ...
- URAL 1876 Centipede's Morning(数学)
A centipede has 40 left feet and 40 right feet. It keeps a left slippers and b right slippers under ...
- URAL 1820. Ural Steaks(数学啊 )
题目链接:space=1&num=1820" target="_blank">http://acm.timus.ru/problem.aspx? space ...
随机推荐
- C# 标准命名规范
笔者从事开发多年,有这样一种感觉,查看一些开源项目,如Spring.Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点:1)代码质量非常高:2)命名特别规范(这可能跟老外的英语水 ...
- Nginx报错-找不到路径
前言 最近在git bash里输入命令启动Nginx服务,总提示找不到路径,令我困惑不已 我反复检查安装路径和输入命令,确认无误 小技巧:复制路径可直接ctrl+c后在git ba ...
- Win10重置 系统诸多设置或者菜单点击无效或者异常信息回复办法
cmd: 输入下列脚本重新注册DLL文件,待执行完毕后重启电脑 for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
- 日期对话框(DatePickerDialog)和时间对话框(TimePickerDialog)
效果图 布局 <Button android:id="@+id/btn_date" android:text="弹出日期选择对话框" android:la ...
- VM虚拟机中Ubuntu中执行apt-get update失败的解决方法(可能有效)
首先确保虚拟机是连接网络的,可以用ping命令检测一下看是否连通网络.采用nat网络的时候确保服务是开的. 如果之前执行过apt-get update命令但是失败了,执行一下 rm -rf ...
- js 字符串 处理方法
charAt() 返回指定索引位置的字符 charCodeAt() 返回指定索引位置字符的 Unicode 值 concat() 连接两个或多个字符串,返回连接后的字符串 fromCharCode() ...
- C# 共享页调用css
@RenderSection("Styles", required: false) @section Styles{ }
- c# 验证码实现代码
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D ...
- centos7网卡重命名为ethx格式
参考:https://www.cnblogs.com/zyd112/p/8143464.html CentOS 7 使用 eth0 这样的传统名称,那么在安装启动(pxe)时,按Tab键在下方输入以下 ...
- [Ynoi2016]谁的梦
题目大意: 给定$n$个序列,要你从每个序列中选一个非空子串然后拼起来,拼成的序列的贡献为不同元素个数. 支持单点修改,在开始时和每次修改完后,输出所有不同选取方案的贡献和. 解题思路: 窝又来切Yn ...