题目描述:

新入职华为的小伙伴们都有在oj上面刷题的任务,共需要刷100道初级题,45道中级题,5道高级题,其中,做出来的高级题如果超标可以当初级或者中级题,做出来的中级题如果超标可以当初级题。每天,出题的大哥会给大家出Xi道题,这Xi道题属于同一个难度级别,小伙伴们要么用一天时间把这些题全做出来,要么就不做。现在,给你每天出题大哥出的题数以及难度,请问,小伙伴们最少要挑选其中几天去做题,才能把这150道题的任务完成呢?

输入示例:

5

100 70 5 5 55

1 2 2 2 3

输出:

2

表示两天就可以完成。

自己的解决思路:

这个题目的难点在于高难度的题目可以当做低难度的题目。

现将所有的题目按难度进行分类,并对每一类进行从大到小的排序。

首先,先做难度3的题目,如果难度三的题目搞定了 ,再将剩下的难度二和难度三的题目进行排序。在此基础上,再做难度二的。做完难度二以后,再将剩下的所有题目进行排序。在此基础上再做难度一的题目。

实现代码:

#include

#include

#include

#include

#include

using namespace std;

#define LOWLEVEL 100

#define MIDLEVEL 45

#define UPLEVEL 5

bool MoreThan(int a,int b)

{

return a > b;

}

int theMax(int a,int b,int c)

{

return (a>b?(a>c?a:c):(b>c?b:c));

}

void display(char* str,vector &src)

{

int i,n;

n = src.size();

cout<

for (i = 0; i < n; i++)

{

cout<

}

cout<

}

void OJDoWorks(int days,vector &numbers,vector &nandu)

{

int i,n;

int dayOver,flagu,flagm,flagl;

int lowsum,midsum,upsum;

vector lowv, midv, upv,sortv,sortlv;

n = numbers.size();

flagl = flagm = flagu = -1;

lowsum = midsum = upsum = dayOver = 0;

//将题目进行分类

for (i = 0; i < n; i++)

{

if (nandu[i] == 1)

{

lowv.push_back(numbers[i]);

}

else if (nandu[i] == 2)

{

midv.push_back(numbers[i]);

}

else

{

upv.push_back(numbers[i]);

}

}

//按大小进行排序

sort(upv.begin(),upv.end(),MoreThan);

sort(midv.begin(),midv.end(),MoreThan);

sort(lowv.begin(),lowv.end(),MoreThan);

display("up",upv);

display("mid",midv);

display("low",lowv);

n = theMax(upv.size(),midv.size(),lowv.size());

//先把高级的做满

for(i = 0; i < upv.size();i++)

{

dayOver++;

upsum += upv[i];

if (upsum >= UPLEVEL)

{

flagu = i;

break;

}

}

//高级题目不够

if (flagu < 0)

{

return;

}

midsum = upsum - UPLEVEL;

//将剩下的高级和中级的题目进行排序

for (i = flagu+1; i< upv.size(); i++)

{

sortv.push_back(upv[i]);

}

for (i = 0; i < midv.size(); i++)

{

sortv.push_back(midv[i]);

}

sort(sortv.begin(),sortv.end(),MoreThan);

display("sort mid:",sortv);

//再把中级的做满

n = sortv.size();

for (i = 0; i < n; i++)

{

if (midsum >= MIDLEVEL)

{

flagm = i;

break;

}

dayOver++;

midsum += sortv[i];

}

//中级题目数量不够

if (flagm < 0)

{

return;

}

lowsum = midsum - MIDLEVEL;

//再做低级的题目

for ( i = flagm; i < n; i++)

{

sortlv.push_back(sortv[i]);

}

for (i = 0; i < lowv.size(); i++)

{

sortlv.push_back(lowv[i]);

}

sort(sortlv.begin(),sortlv.end(),MoreThan);

display("sort low",sortlv);

n = sortlv.size();

for (i = 0; i < n; i++)

{

if (lowsum >= LOWLEVEL)

{

flagl = i;

break;

}

dayOver++;

lowsum += sortlv[i];

}

if ((upsum >= UPLEVEL) && (midsum >= MIDLEVEL) && (lowsum >= LOWLEVEL))

{

cout<

}

else

{

return;

}

}

int main()

{

//fstream in("data.txt");

int n,i,value;

vector numbers,nandu;

cin>>n;

for (i = 0; i < n; i++)

{

cin>>value;

numbers.push_back(value);

}

for (i = 0; i < n; i++)

{

cin>>value;

nandu.push_back(value);

}

OJDoWorks(n,numbers,nandu);

cout<

return 0;

}

华为 oj java题库_华为OJ题目:刷题相关推荐

  1. 牛客网数据开发题库_牛客网刷题笔记--数据库

    C.SC(S#,C#,G)答案:A. 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖. 关系模式S 中,(S#,Sd)→Dc,Sd →Dc,Dc不完全依赖于Sd且Sd为非主属性.故本题答案为 ...

  2. 改善好UI交互,创建题库,导入试题,刷题体验感

    ​​​​​UI交互调整 土著刷题微信小程序v1.1在开发方向上做了调整,完全成为一个提供围绕刷题相关功能的工具,在UI交互方面虽然参考了市面上刷题软件的UI交互,但在自己使用期间仍觉得有些别扭,所以在 ...

  3. 华为android机考题,华为无线题库_华为射频机考,华为无线射频题库

    该文档为华为认证的无线题库,题库知识覆盖非常的全面,适合拿来练练手 QUESTION 5 以下哪些标准是ⅥiF|联盟制定的()? A.80211a/b/gn B. WPA C. WPA2 D.802. ...

  4. 华为云NP考试题库_华为认证网络工程师怎么考

    如果现在打算学习华为认证的话,那么下一步该怎么开始呢?华为认证网络工程师的考试该怎么样考呢?有不少朋友长期关注网络工程师成长日记作者小编,看了大量小编关于华为认证的介绍之后,有些朋友时间充裕也打算进行 ...

  5. 华为云NP考试题库_华为云服务考试 华为云hcip认证试题

    怎样找到华为手机云服务? 在华为手机云服务的手机设置菜单中,以华为G9手机为例.搜索方法如下:1.打开手机的设置页面,在设置页面的顶部有一个搜索框. 2.在搜索框中,输入云服务以开始搜索.搜索结束后, ...

  6. 无忧考吧java的题库准吗,无忧考吧题库_无忧考吧从业题库难度和真正考试难度一样吗_淘题吧...

    『壹』 无忧考吧题库有效期365天什么意思 就是自从你开通会员开始算起,一年365天享有会员权限 『贰』 会计从业资格考试题库哪家的比较好,中华会计,东奥,还是无忧考吧的... 要我说吧,无所谓,两家 ...

  7. python编程基础题库_大学moocPython编程基础题库及答案

    参考答案如下 大学间接赞扬的方式可能受到意想不到的效果.() 编程郑玄对"一人贪戾"的"戾"的解释为(),形容在欲望的追寻中出现的人与人的矛盾状态. 郑谷有&l ...

  8. 计算机二级access选择题题库_资料最新计算机二级题库,选择题资料汇总+全真试题分享(Office)...

    学习资料 最近找到了一份最新版的计算机二级Office题库和选择题资料,如果你正好需要,不用客气可以直接拿走了,记得持续关注ZELINK科技(泽霖科技)公众号就行了,正如俗话所说"点关注不迷 ...

  9. 小米答题题库_拼多多果园答题题库74(每日更新)

    135编辑器 拼多多答题题库七十四 每周我们都会做一个总和的题库: 希望大家持续关注! 您的关注就是我们的动力! "成语之乡"指的是我国哪座城市? 1.河北邯郸  2.安徽蚌埠 答 ...

最新文章

  1. Oracle数据库之SQL基础(一)
  2. 十条技巧 更聪明地使用Google搜索
  3. 检测机安装mysql_centos安装mysql的正确方法
  4. Servlet→对象监听器、事件监听器、Session钝化活化、@WebListener标注、过滤器概念原理生命周期、过滤器链、@WebFilter标注、定时器Timer、cancel()、purge
  5. PHP学习笔记--array_map函数
  6. eclipse.ini
  7. Eps总结(2)——Eps常用命令与快捷键
  8. SciPy库主要功能
  9. 图像的特征提取——HOG特征、Harr特征、LBP特征
  10. android ionic框架,移动App开发框架—Ionic
  11. 中学计算机课小课题,中学信息技术课题题目
  12. 水平居中和transform: translateY(-50%) 实现元素垂直居中效果
  13. Java开发微信小程序(三)用小程序给用户推送服务消息
  14. snapchat为什么_什么是Snapchat?
  15. 诸葛新增快应用SDK,满足客户更多数据采集方案支持!
  16. 体感互动LED显示屏系统|体感互动屏幕|体感互动大屏软件
  17. ASP.NET.3.5揭秘
  18. CCD与CMOS摄像头哪个好
  19. 拿到北京户口了。。。
  20. [笔记]Unity粒子特效2:创建一个粒子特效

热门文章

  1. 关于计算机天赋测试,这是一道你绝没测过的测试题,能测出你的天赋究竟是什么...
  2. VBoxManager命令解析
  3. 大话数据结构读书笔记系列(三)线性表
  4. 实现word文档在线编辑
  5. 手把手教你使用NBS
  6. VirtualBox网络连接方式学习笔记
  7. android adb interface驱动安装
  8. 浅浅瞅瞅RSA-PSS 算法
  9. python如何下载安装glfw_Python之OpenGL笔记(1):窗口工具包GLFW的安装
  10. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1