avatar
J*B
1
有四个人要过一座桥,每次只能过两个人。P1 要1秒钟,p2 要2秒钟,p3要5秒钟,p4
要10秒钟,四个只有一个电筒,过桥的时候必需有一个人拿个电筒照明,请问最快多少
秒4个人可以全部通过。
avatar
l*a
2
please check PIE

p4

【在 J**B 的大作中提到】
: 有四个人要过一座桥,每次只能过两个人。P1 要1秒钟,p2 要2秒钟,p3要5秒钟,p4
: 要10秒钟,四个只有一个电筒,过桥的时候必需有一个人拿个电筒照明,请问最快多少
: 秒4个人可以全部通过。

avatar
c*t
3
这不就是DP吗?

【在 J**B 的大作中提到】
: 有四个人要过一座桥,每次只能过两个人。P1 要1秒钟,p2 要2秒钟,p3要5秒钟,p4
: 要10秒钟,四个只有一个电筒,过桥的时候必需有一个人拿个电筒照明,请问最快多少
: 秒4个人可以全部通过。

avatar
J*B
4
啥 我不是CS出身,给稍微明确的hint吧。。。

【在 c*********t 的大作中提到】
: 这不就是DP吗?
avatar
s*n
5
1,2 ->
1 5, 10 ->
21, 2->
avatar
w*o
6
大牛,
你能把这个formulate成一个DP吗?
谢谢!

【在 s******n 的大作中提到】
: 1,2 ->
: 1 : 5, 10 ->
: 2: 1, 2->

avatar
J*B
7
能推荐点书么

1,2 -
★ Sent from iPhone App: iReader Mitbbs Lite 7.51

【在 s******n 的大作中提到】
: 1,2 ->
: 1 : 5, 10 ->
: 2: 1, 2->

avatar
S*t
9
#include
#include
using namespace std;
char cross[3000][20];
int main()
{
int n,i,nc=0,sum=0,t[1000];
scanf("%d",&n);
for(i=0;iscanf("%d",&t[i]);
sort(t,t+n);
for(i=n-1;i>=3&&2*t[1]{
sprintf(cross[nc++],"%d %d\n",t[0],t[1]);
sprintf(cross[nc++],"%d\n",t[0]);
sprintf(cross[nc++],"%d %d\n",t[i-1],t[i]);
sprintf(cross[nc++],"%d\n",t[1]);
sum+=2*t[1]+t[0]+t[i];
}
for(;i>=2;i--)
{
sprintf(cross[nc++],"%d %d\n",t[0],t[i]);
sprintf(cross[nc++],"%d\n",t[0]);
sum+=t[0]+t[i];
}
if(i==1)
{
sprintf(cross[nc++],"%d %d\n",t[0],t[1]);
sum+=t[1];
}
else
{
sprintf(cross[nc++],"%d\n",t[0]);
sum+=t[0];
}
printf("%d\n",sum);
for(i=0;iprintf("%s",cross[i]);
return 0;
}
This version can handle n persons.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。