F. Education

考虑贪心
显然我们每次只有这样一种情况 就是钱够了就升级 然后到一个位置就一直不动了
不可能我们先在一个位置钱赚够了 再赚几轮 再去下一级
那么证明我们知道下一级赚的更多 我们还要在这个少的赚几轮 不是春春脑瘫吗
所以我们枚举在每一个位置速通前面的 再在这个位置狂赚
时间复杂度是O(n)的
注意的就是now更新时是now=now+up(need,a[i])*a[i]-b[i]
对于我们需要的上取整天数 再减去原本要的钱-b[i]

void solve(){
    int n,c;cin>>n>>c;
    vector<int>a(n+10),b(n+10);
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<n;i++)cin>>b[i];
    int now=0,day=0,ans=up(c,a[1]);
    for(int i=1;i<n;i++){
        int need=b[i]-now;
        if(need<=0){
            now-=b[i];
            day++;
        }else{
            day+=up(need,a[i])+1;
            now=now+up(need,a[i])*a[i]-b[i];
        }
        ans=min(ans,day+up(c-now,a[i+1]));
    }
    cout<<ans<<endl;
}

原文地址:http://www.cnblogs.com/ycllz/p/16865586.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性