zoukankan      html  css  js  c++  java
  • Rabbits(跳兔子)

    题目大意:

    一些坑;

    有的坑里面有兔子,有的没有;

    坑按顺序排着;

    边上的兔子两个兔子可以调到中间有坑的两个兔子之间;

    问最多跳多少次;

    结束状态是这些兔子之间没有坑了;

    对于第一次跳跃,我肯定要拿离团体最近的那个两边

    然后跳跃的位置为旁边兔子的旁边

    比如   1  3  6  9  

    先拿1  跳跃到  位置4 ,样例变为   3  4  6  9

    然后  3跳到5的位置····这样挨着跳,可以不浪费空间,尽量多跳

     然后跳到    4   5   6  9   

    再用4跳到7

    这样就会发现,每跳一次只减少一个空位

    那么把几只兔子所有的中间空位加起来

    进去刚开始第一只兔子隔掉的,那么就是可以玩几次

    这个题目就是不知道从哪里开始跳的(两边都可以跳)

    所以说

    ans-=min(a[2]-a[1]-1,a[n]-a[n-1]-1)

     

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=1e6+100;
    int a[maxn]; 
    int main(){
        int t;
        cin>>t;
        while(t--){
            int n;
            cin>>n;
            for(int i=1;i<=n;i++){
                cin>>a[i];
            }
            int ans=0;
            for(int i=2;i<=n;i++){
                ans+=(a[i]-a[i-1]-1);
            }
            int mi=min(a[2]-a[1]-1,a[n]-a[n-1]-1);
            cout<<ans-mi<<endl; 
        } 
    }
  • 相关阅读:
    ACwing(基础)--- 01背包和完全背包、多重背包问题
    Python --- 实战一
    Python --- 正则表达式
    Python --- 网络爬虫
    Python --- 异常处理
    Python --- 文件操作
    Python --- 模块
    Python --- 基础语法
    securecrt颜色设置
    Tomcat启动排查
  • 原文地址:https://www.cnblogs.com/lipu123/p/14019392.html
Copyright © 2011-2022 走看看