咳咳,此乃本博主第一文。所以前面一大段全部会是废话,想看题目与思路请麻烦往下翻翻。

作为算法竞赛刚刚入门的新手,刷的题目是真的少,所以我是真的菜。。。
我在CSDN上查过不少题目,emmmmm,大部分大佬都是给出题目出处,然后上代码,作为萌新,我有时真的头疼,就算大佬们的代码可读性高,该看不懂还是看不懂啊╮(╯﹏╰)╭。我去查那个题目,我是只要答案吗,人家更想要解析好吧。读书读了这么多年了,在数学上是真的没什么成绩,,,连简单的数学思维也没有,有时候绕着题目,案例,连最后一点逻辑也会丧失。。。。。。
当然,我把这归结为刷的题目实在是太少了。在接触算法竞赛的这不足半年的时间里,我恐怕加起来是一千行代码都没打过。
想送给与我一般刚刚踏入算法竞赛的萌新们一句话:别放弃,你不会,只是你努力得还不够。大家一起,为了成为杰出的程序员而努力吧。
一个杰出的程序员就得有好的计算思维和逻辑思维,所以,我比较想与大家分享的,主要还是我的思路。

来,首先先看hdu的3233题:http://acm.hdu.edu.cn/showproblem.php?pid=3233

此题呢,是让我们模仿下载器,题目给了总文件数T,能同时下载的文件数n,以及下载速度B。下面跟T行,每行首先有一个s表示这个文件总共占多少兆,然后跟一个p表示这个已经下载完了百分之多少。然后让我们输出总共要下载的时间。

审完题,首先就会想到,每行的s*(100-p)/100就表示那个文件还需要下载多少兆。

然后怎么算呢?像题目描述的那样找最小然后加起来再更新数据再找最小直到全下完?仿佛也不是不可以,但是,我算着算着,感觉到不对劲,感觉自己是不是绕了好多弯子。
但是题目给的第一个案例不太直观,于是,我就自己弄了一个案例。如下:
(花里胡翘的计算实际要下载多少兆就省去,我下面就直接放实际要下多少兆)

  • T=4,n=2,B=10;
  • 5
  • 10
  • 15
  • 20
    题目说,并行下载的时候,宽带流量要分摊,也就是说,我n个文件一起下载的时候,下载的速度就为B/n。
    首先,我们找最小的n个,就是5和10,然后下载速度为5,一秒后,第一个文件下载完了,更新一下数据,原来的10会变成5,然后找到15,再一起并行下载,一秒后,第二个文件也会下完,更新数据,原来的15会变成10,然后找到20。两秒后,第三个文件下完,更新数据,20变10,此时只剩下第四个文件了,只下载这一个文件,流量就全砸它上面,一秒下完最后的10兆。所以总时间加起来呢,是1+1+2+1=5(秒)。
    我们把数据理一下就会发现,我们第一秒内,总共下载了10兆,第二秒内,总共下载的10兆,第三秒与第四秒,总共下了20兆,第五秒,下了10兆。
    十分的有规律,哈哈,我总共下了50兆,总共花了5秒。聪明的你们发现了什么,我们要求的这时间,不就等于我需要下载的总兆数除上我宽带的速度嘛。也就是说,这个题目,计算完总兆,直接除去B就行,同时下载数n?这玩意重要吗???
    当然,聪明的具有数学思维的同学,逻辑思维稍微强一点的同学,看到题目要求的“宽带由所有正在下载的文件平均共享”估计就知道是总兆除速度了,没办法,我们这些还没有形成这种逻辑思维的小伙伴们还是要多想几步才想得到。但是没关系嘛,咱们一步一步来,迟早能达到一眼看穿题目的程度的。✧(≖ ◡ ≖✿ 。

然后呢,就是此题的注意事项了。我每次都是理完思路后再审一遍题去挑注意事项,我的小脑子做不到一边注意这些事项一边思考╮(╯﹏╰)╭。

  • 首先看参数范围。
    T是1到20000的整数,嗯,int就够了,然后,T如果等于2000,就意味着,下面至少会输入4000次(每行一个s一个p)。所以绝对绝对绝对不能用cin,绝对超时的节奏哇,得用scanf。因为呢,cin虽然比scanf写起来方便,但其实比scanf效率低,它速度比scanf慢很多。一旦题目需要大量输入,就绝对是TLE(超时,Time Limit Exceeded)卡死你的点。输出的cout和printf也是同样的道理。所以这题呢,我是直接用c写了。
    n是1到2000整数,嗯,int。这个题目和n是真的没关系,如果这个题目所描写的是真实的状况的话,也就是说,我下载东西的时候把同时下载数调再高也没有用,反而会拖累单个文件的下载速度,想起来就觉得太坑了,我的腾讯会员可同时下载三个视频有屁用啊我摔!(╬ ̄皿 ̄)=○
    B是50到1000,emmmmm,上面的案例不符合哈哈哈哈,不过不重要了,自己为了理清题目创的案例简单最重要嘛。反正思路是理清了。嗯,int。
    s,小于20000的非负浮点数,float,那么总兆也应该是个浮点数,不过总文件高达2000个的话,总兆最多可能会达到20000*20000,嗯,此处应该用double(因为改成float就过不了。。。)。这里博主也是钻过牛角尖的,两万乘两万不就2e16吗,float不是有2e128嘛,为毛用float不让过,为什么!!!后来想想,可能不是范围的问题而是精度的问题,float精度达7,double精度达16,也许此题需要的精度高一点。。。咱也不知道,咱也不敢问(⊙_⊙)。然后建议呢,参与计算的,不,题目中出现的浮点数呢,别管什么范围了一率double吧。至于范围超过了double的范围的数,就不建议用c啊c++写了,,,麻烦死了,介意用Java或者Python处理大数。一位杰出的程序员应该掌握多种编程语言,不会的话,emmmmm,博主这边还是介意去学呢。
    p,1到100的整数,int。

  • 然后注意输入结束方式。
    一般有三种:
    1.默认结束。就是以文件结束(EOF)作为结束标志。
    2.有t或者n来确定数据组数的。
    3.以特定元素作为结束符的,一般是0。
    此题属于第三种,以“0 0 0”结尾。

  • 然后注意输出格式,空格啊换行啊什么的。

最后的最后,上代码:(s是float能过博主试过了,但是如果比赛中的话呢,建议直接用double,别冒这个险叭,错一次划不来诶)

#include<stdio.h>
int main() {int t, n, b, p;float s;int cnt = 1;while (~scanf("%d%d%d", &t, &n, &b) && t && n && b) {double sum=0;while (t--) {scanf("%f%d", &s, &p);sum += s * (100 - p) / 100;}printf("Case %d: %.2f\n\n", cnt++, sum / b);}return 0;
}

思路分享——hdu 3233相关推荐

  1. js实现简单的循环打字效果(思路分享)

    1.初始化"打字创建"属性 代码类似于这样: <div id="demo"></div> <script>var typin ...

  2. 【安全漏洞】SRC另类思路分享:不受限制的资源调用

    前言 对于SRC的挖掘思路,很多师傅已经给出了挖掘实用技巧.今天带来一篇本人的思路分享:不受限制的资源调用. 一.进入正题 相信在各位的学习.生活中都遇到过这样的页面 此处我以某厂商的云服务购买为例, ...

  3. [凯圣王]减脂挑战第15天变化/饮食思路分享/碳水循环+轻断食/GI值和GL值的应用/碳水后置的理论基础

    减脂挑战第15天变化/饮食思路分享/碳水循环+轻断食/GI值和GL值的应用/碳水后置的理论基础 一.视频 二.饮食思路分享 三.碳水循环+轻断食 四.GI值和GL值的应用 五.碳水后置的理论基础 一. ...

  4. 2022年高教杯国赛数学建模思路分享

    2022年高教杯国赛数学建模思路分享(你不看你获不了奖) 2022年高教杯数学建模竞赛A题思路分享 2022年高教杯数学建模竞赛B题思路分享 2022年高教杯数学建模竞赛C题思路分享 2022年高教杯 ...

  5. 第一届华数杯A题完整思路分享

    A题完整思路分享 第一问: 要想问题做的好,美图肯定少不了.这道题,建模时不但要用数学公式把模型说清楚,还要一些图来帮助别人理解,让别人一眼就看懂你写的东西,话不多说,我们先放一张类似下面的图,记得说 ...

  6. 2020“东方国信杯”高校大数据开发大赛最终榜第三名思路分享

    2020"东方国信杯"高校大数据开发大赛最终榜第三名思路分享 2020"东方国信杯"高校大数据开发大赛刚刚结束,我所在的队伍"三人运动团"最 ...

  7. 两种链表的实现以及例题思路分享

    前言 鉴于顺序表在内存中存储有诸多缺点,其中典型的就是数组,数组每个元素在内存中都是连续存放的,导致每次在头部或者中间插入新元素都需要挪动已有的元素,而链表就恰好弥补了顺序表的一些缺点.本篇文章主要讲 ...

  8. 安卓Hook微信-计步器、万能骰子、自动回复、反撤回、抢红包思路分享

    此篇博客仅实现的思路分享,不提供最终成品 目录 学完你能收获什么 要求 前置条件 运行环境 成果 最终效果 开发耗时 最终Hook的类 实现 需知 1.选择root或VA 2.反编译代码工具 3.YA ...

  9. HyperLedger Fabric 学习思路分享

    HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常 ...

  10. NB-IOT实现万物互联设计思路分享 (从硬件到单片机到云平台)

    NB-IOT实现万物互联 产品设计思路分享 NB-IOT窄带物联网(Narrow Band Internet of Things, NB-IoT),是一种专为万物互联打造的蜂窝网络连接技术.NB-IO ...

最新文章

  1. 详解Pytorch的nn.DataParallel
  2. 意识到自己的无知这就是进步
  3. Builder建造者设计模式
  4. python王者归来 pdf_OpenStack开源云:王者归来 PDF 下载
  5. 带电检测必要性_接地电阻检测分析的必要性
  6. 我发现:在StackOverflow上拯救歪果仁十分有意思!
  7. [20170828]grep过滤技巧.txt
  8. Microsoft Office 2008 for Mac Service Pack 1 更新后无法启动程序问题解决方案
  9. 实战flex:模拟实现静态知乎首页
  10. 2021年上半年系统集成项目管理工程师上午真题及答案解析
  11. mysql update 子表,mysql update 子查询锁表问题
  12. 建造者模式(Builder和Director)
  13. 大脑中的CD19表达与CAR-T治疗关系
  14. java POI导出excel,导出的excel,打开文件提示文件格式或扩展名无效
  15. Kafka 概念、单机搭建与使用
  16. 正味集团冲刺港股:年营收3.4亿杨声耀夫妇控制64%股权
  17. ROS——roscpp
  18. 秒 毫秒 微秒 纳秒 Hz KHz MHz GHz
  19. 什么是“大中台、小前台”
  20. DCDC知识总结整理

热门文章

  1. FPGA经验谈系列文章——写代码心中要有电路?
  2. iso镜像添加软件包_ubuntu安装 win7_怎么把自己需要的程序添加到WIN7的原版ISO镜像中? - Win7之家...
  3. 从JavaScript单例模式到Vuex中store
  4. f(x;\Theta); 函数中间带分号的意思
  5. 在线有道词典,又添新特色了!
  6. 联想裁员与全球化背景下的知识阶层失业
  7. matlab正激变换器,12个步骤设计恒流正激式开关电源
  8. roundcube db.inc.php,开源电子邮件系统(Roundcube Webmail)
  9. 【学习笔记】广义逆矩阵及共轭转置求解
  10. chrome浏览器恢复书签方法