zoukankan      html  css  js  c++  java
  • Codeforces Round #621 (Div. 1 + Div. 2)B Cow and Friend

    第一感觉最小步数只和移动距离的最大值有关

    对于任一移动距离a,水平移动距离范围0~a   而跳两步水平移动距离范围0~2a 且两步对称 就能回到x轴  这样就和纵坐标无关了

    贪心策略:水平跳动amax,直到剩下距离amax<res<2amax或为0,显然可以两步到达

    证明:水平跳动显然amax最优,对于剩下的距离只用amax需要两步 其他移动距离或组合也至少需要两步 因为amax<res<2amax 而amax又是最大移动距离

    此时答案$max(2,ceil(frac{a}{b}))$ 当然还存在一些可行解对于前一部分采取的策略可能是水平跳动其他距离或组合 代入前面的式子 显然不会比amax更优

    注意:需要特判一步就能到的

    官方:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=105;
    int a[N];
    int main(){
        int T;
        ios::sync_with_stdio(false);cin.tie(0);
        cin>>T;
        while(T--){
            int n,d;
            cin>>n>>d;
            for(int i=1;i<=n;i++)cin>>a[i];
            int ans=a[1];
            for(int i=2;i<=n;i++)
             if((i-1)*a[i]<=d){
                 d-=(i-1)*a[i];
                 ans+=a[i];
             }
             else{
               ans+=d/(i-1);break;
                 
             }
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    selenium+python常用函数
    不同网络层的协议与工具
    Loudrunner编写WinSocket接口测试脚本
    python常见问题汇总
    Appium简介及工作原理
    Http协议详解
    Selenium 工作原理
    HTTP与HTTPS有哪些区别?
    【Appium】Appium工作原理(2)
    MySQL 必知必会学习笔记(常用命令二)
  • 原文地址:https://www.cnblogs.com/wyh447154317/p/12334120.html
Copyright © 2011-2022 走看看