首页 > 其他 > 详细

【hdu3233】Download Manager

时间:2021-05-07 10:38:56      阅读:9      评论:0      收藏:0      [点我收藏+]

https://vjudge.net/problem/HDU-3233

写完模拟AC后看下题解,发现只是很简单的思维题。(不知道说什么好了

模拟:完全按照题意,读入,sort,用优先队列存储n个同时执行的管道,遍历文件,加入到值最小的管道,最后按照存在的文件数求speed,时间累加至ans

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
using pdd = pair<double,double>;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T,n,B;
    int cnt = 0;
    while(cin>>T>>n>>B){
        if(T==0 && n==0 && B==0) break;
        cnt++;
        cout<<"Case "<<cnt<<": ";
        vector<pdd> v(T);
        double S,R;
        int P;
        for(int i=0;i<T;++i){
            cin>>S>>P;
            R = (100-P)*S/100;
            v[i] = make_pair(S,R);
        }   
        sort(v.begin(),v.end());
        priority_queue<double,vector<double>,greater<double>> q;
        for(int i=0;i<n;++i) q.push(0);
        for(int i=0;i<T;++i){
            R = v[i].second;
            double t = q.top();
            t += R;
            q.pop();
            q.push(t);
        }
        double ans = 0;
        double pre = 0;
        while(q.size()){
            double t = q.top();
            double speed = B*1.0/q.size();
            ans += (t-pre)/speed;
            pre = t;
            q.pop();
        }
        cout<<fixed<<setprecision(2)<<ans<<endl;
        cout<<endl;
    }

    return 0;
}

思维转换:因为带宽无论怎样下载都不会有浪费,只是有些文件共享带宽一起下载,有些文件独享带宽单独下载,所以ans=总下载/总带宽

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T,n,B;
    int cnt = 0;
    while(cin>>T>>n>>B){
        if(T==0 && n==0 && B==0) break;
        double S;
        int P;
        double ans = 0;
        for(int i=1;i<=T;++i){
            cin>>S>>P;
            ans += S*(100-P)/100;
        }
        cnt++;
        cout<<"Case "<<cnt<<": ";
        cout<<fixed<<setprecision(2)<<ans/B<<endl;
        cout<<endl;
    }

    return 0;
}

 

ps: 一个月没写博客了...上个月忙于软件杯(学习前端,乱七八糟学了好多,从html/css/js 到jqery vue node,还有http tcp/ip ajax json markdown github linux),然后下半月又准备期中考试(之前一直没怎么听课,补了好久)。

pss: 目前的目标是:cf rating 1179->1600 (div2 A-D div3 A-F)

两方面训练:1.比赛:cf VP:尽量要把最近的div2/3这些我应该做出的题做完,要保证比赛时div2 A-C稳出, div3 A-E稳出,这样基本就能到1600了,D/F也尽量补

          atc ABC:按照https://www.cnblogs.com/wawcac-blog/articles/12245307.html 这个帖子的训练方法去板刷B/C题

      2.学习:(之前先是洛谷刷官方题单刷不下去,后来又刷蓝书又刷不下去...)这次找到本简单的《算法竞赛入门到进阶》,基本都是hdu的题目,感觉应该还行,一方面把之前学过的专题(排位赛板题)去刷完,另一方面按顺序学和练。(今天这题就是这本书的题库)(https://vjudge.net/article/2033)

【hdu3233】Download Manager

原文:https://www.cnblogs.com/FlowRays/p/14737447.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!