A 蚂蚁觅食

Posted accepting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A 蚂蚁觅食相关的知识,希望对你有一定的参考价值。

A. 蚂蚁觅食(一)

单点时限: 1.0 sec

内存限制: 512 MB

一只饥饿的小蚂蚁外出觅食,幸运的小蚂蚁发现了好多食物,但是它只有一次搬食物的机会。
可因为力气太小了,它不能搬走重量超过自己体重的食物,且只能搬走位置相邻的两个食物,或者只搬走其中一个。
食物的位置不会改变。
这可难住了这只蚂蚁,它不知道它最多能搬走多重的食物。请帮小蚂蚁计算。

输入格式

第一行一个正整数n(n>=0n<=1000)

第二行n个正整数 A[1].....A[n]A[i] 表示在第i 个位置上食物的重量。A[i]<=1e9.

第三行一个正整数m,表示蚂蚁的体重。(m<=1e9).

输出格式

一个整数表示小蚂蚁能带走的食物的重量。

样例

input
3
1 3 3
4
output
4
蚂蚁一次只能带走一个东西或者是带走相邻的个东西。所以思路有很多:
第一种思路:构造一个数组,用来存储相邻两项的和,然后找到第一个小于等于m的数并记为ans1.然后如果一次就取一个的话,找到第一个小于等于m的数字,几位ans2,,然后输出较大的
AC代码:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll arr[1000+10];
ll arr1[1000+10];
int main()
    ll n;
    cin>>n;
    ll a=0;
    
    for(int i=1;i<=n;i++)
        cin>>arr[i];
    
    
    ll m;
    cin>>m;
    
    ll pos=0;
    for(int i=2;i<=n;i++)
        arr1[pos++]=arr[i]+arr[i-1];
    
    
    ll ans1=0,ans2=0;
    
    sort(arr+1,arr+1+n);
    
    for(int i=n;i>=1;i--)
        if(arr[i]<=m)
            ans1=arr[i];
            break;
        
    
    
    sort(arr1,arr1+pos);
    
    for(int i=pos-1;i>=0;i--)
        if(arr1[i]<=m)
            ans2=arr1[i];
            break;
        
    
    cout<<max(ans2,ans1)<<endl; 
    return 0;

思路2:便利每个元素,,如果能装的下判断能不能和下一个一起装,可以的话就装上。

AC代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll arr[1000+10];
int main()
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>arr[i];
    
    ll m;
    cin>>m;
    ll ans=0;
    for(int i=0;i<n;i++)
        if(arr[i]>m)
            continue ;
        
        else if(arr[i]==m)
            ans=m;
            break;
        
        else
            if(arr[i]+arr[i+1]<m)
                ans=max(ans,arr[i]+arr[i+1]);
            
            else if(arr[i]+arr[i+1]==m)
                ans=m;
                break;
            
            else
                ans=arr[i];
             
        
    
    cout<<ans<<endl;

 

以上是关于A 蚂蚁觅食的主要内容,如果未能解决你的问题,请参考以下文章

《蚂蚁和蜜蜂》

蜜蜂与蚂蚁

边缘检测基于matlab蚁群算法图像边缘检测含Matlab源码 1189期

路径规划基于matlab蚁群算法二维路径规划含Matlab源码 1131期

TSP基于matlab蚁群算法求解旅行商问题含Matlab源码 1130期

路径规划基于蚁群算法的多无人机攻击调度