问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言经典题目

发布网友 发布时间:2022-05-29 23:52

我来回答

5个回答

热心网友 时间:2024-06-01 01:40

1.正确的算法:
如果n=3, 过河时间为A+B+C
如果n<=2, 好算, 不费口舌了

如果n>=4, 这个是重点:
每次优先考虑把最慢两人送过河
把n人中最快两人记为A,B, 最慢两人记为C,D(过河时间A<B<C<D), n人问题实质上转换为4人过河问题, 参考到4人过河时的优化,
记AB过河, A回, CD过河, B回, 为方法X, 实质是利用最快两人进行优化, 耗时A+2B+D
记AD过河, A回, AC过河, A回, 为方法y, 实质是利用最快一人来过河, 耗时2A+C+D
每次比较这两个方法, 如果x快, 使用x方法, 如果y快, 则用y, 并且, 一旦某次使用y方法后, 以后都不用比较了, 全部使用y方法过河

2.算法正确性证明:
为什么每次先让最慢两人过河? 因为他们迟早要过河...早过晚过一样, 而晚过的话, 有可能时间不能被优化, 所以选择最先过
为什么是两人, 不是三人? 因为这船一次只能两人, 三人问题和两人问题的优化一样, 所以一次考虑三人毫无意义, 同理, 三人以上不加考虑

为什么某次用y过河后不用再比较xy了?
先看这个例子:

1 99 100 101
用x方法是99+1+101+99= 300
y方法是 101+1+100+1 = 203

y比x快的原因是2A+C+D < A+2B+D, 即 A+C<2B
容易想到, 从此以后A+C都会小于2B了(因为C越来越小)

3.补充:
算法分析就到这里了, 至于具体的程序...楼主既然是ACMer, 这个应该不困难
当然, 如果楼主需要的话, 也可以给出程序

热心网友 时间:2024-06-01 01:41

最短时间是这样的
以本例子说
最快2人过 时间2
最快人回 时间1
最慢2人过 时间10
最快人回 时间2
最快2人过 时间2
一共17
算法就是这样过河以最快2人和最慢2人交替进行,回来时候都是对岸最快的人回来。

ps:这个是哪里的ACM?
这样写出代码不难吧。
就是先将时间排序,然后按上面算法计算。

热心网友 时间:2024-06-01 01:41

#include<iostream>
#include<algorithm>
using namespace std;
int a[1001];
int main()
{
int t,i,n,fast1,fast2,slow1,slow2,slow3,sum,l,r;
cin>>t;
while(t--)
{
sum=0;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
fast1=a[1];fast2=a[2];slow1=a[n-1];slow2=a[n];slow3=0;
l=1;r=n;
while(n!=0)
{
if(n==1) {sum+=slow2;break;}
if(n==2) {sum+=slow2;break;}
if(n==3) {sum+=(slow2+slow1+fast1);break;}
if(2*fast2>=fast1+slow1) {sum+=(slow1+slow2+2*fast1);r-=2;slow2=a[r];slow1=a[r-1];n-=2;}
else {sum+=2*fast2+fast1+slow2;r-=2;slow2=a[r];slow1=a[r-1];n-=2;}
}
cout<<sum<<endl;
}
return 0;
}

热心网友 时间:2024-06-01 01:42

有些不懂...我也是初学者..进来看看
1
4
1 5 2 10
那么最短时间不应该是
5+1+2+1+10=19 么??
我错了?!``

热心网友 时间:2024-06-01 01:42

试用例次数的整数T是什么
船是两边来回送人,还是单向送人。
看不懂问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
景德镇书香蔓城多少钱一平方? 银盛泰书香蔓城基本信息 景德镇书香蔓城是什么装修? 卫生间风水和健康的关系是什么? 卫生间窗户风水大忌 8种危害健康可怕浴室风水 易惹祸的八种卫生间格局,快来看看吧! 我最好朋友的婚礼 演员表 我最好朋友的婚礼职员表 浙大夏令营是干什么的 鲁西黄牛犊多少钱一头 求船夫渡河问题的算法 急!!! 高达的1680 1050的壁纸 火影忍者第520集是漫画的第几话 终结者创世纪剧情是什么? 短文第4自然段描写了张大力举石锁的精彩片段,圈出相关动词,说 说你... 广东自考怎样报名? 大咖说:目前国产发动机的水平怎么样 春节档电影大都延期,徐峥提档是否赔了夫人又折兵? 表现成年人体胸部以上的物体局部的电影画面叫 槽钢12米长宽36有多重 12#槽钢每米的重量 12 #槽钢每米重量不锈钢槽钢12#,316L材质,厚5.5毫米,一米理计有多... ...这段时间谢谢您的照顾,也谢谢您教我日文跟穿浴衣 中文翻译日文(帮我标示平假名) 请问可以跟你借浴衣的腰带吗? 我有买浴... 日语 敬语 お客様、こちらではお好みの浴衣を自由に? 中文翻译日文(帮我标示平假名) 我想穿浴衣参加七月的祭典,可是我没有浴... 麻烦大家帮我翻译成日语一下 和服日语怎么说? 中文翻译日文(帮我标示日音) 今天买浴衣,真的很便宜,还跟老板拍照_百度... c语言 《过河》 1U机架式服务器主板与普通PC主板有什么区别? 理光c3500复印机sc234什么问题 机架式1u的服务器拿回家当电脑用,想把机箱换一下 ,还要换些什么东西... 理光MPC3500彩色复印机扫描到电子邮件怎么设置? 理光复印机c3500为什么每次开机的时候就出代码672 理光mpc3500打印机开机显示sc582是什么原因 请问一下,2千多块钱可以配置一台什么样的电脑? dior五色眼影609 怎么画 dior五色眼影920怎么画,有具体步骤吗 从早上七点给刚去世的老公点了一支烟 到现在烟灰还立着是不是他在家里... 日语,“なお”的语法有哪些,用在什么地方。 我点了一根烟,望着窗外,陷入了沉思,这特妈都说的啥 犹如繁花盛开的日语怎么读怎么写 ...只记得结局是男主角用口袋里最后一根火柴点完最后一根烟后... 犹如心一样 用日语怎么写? 我不吸烟,喝酒的时候,朋友点了一颗烟,吸了一口,然后让我吸了一口,之后... 日语问题,句中的なり是什么意思? 今天兄弟要去在地里,临走的时候,他点了一支烟抽了一口给了我,然后自... 日语 普通なら 中的なら怎么解释 是语法吗? 后面的のように也看不懂...