
网易2016研发工程师编程题及答案 (二).pdf
6页小 v 今年有 n 门课,每门都有考试,为了拿到奖学金,小 v 必须让自己的平均成绩至少为 avg每门课由平时成绩和考试成绩组成,满分为 r现在他知道每门课的平时成绩为 ai,若想让这门课的考试成绩多拿一分的话,小 v 要花bi的时间复习,不复习的话当然就是 0 分同时我们显然可以发现复习得再多也不会拿到超过满分的分数为了拿到奖学金,小 v 至少要花多少时间复习12345678910111213141516171819202122/*(c/c+)只需满足平均成绩大于等于 avg 即可,不管单科成绩所以先从花时间最少的课开始复习,使其满分伪码:if(当前成绩=avg*n)cout 0 endl;elsesort(时间花费);for(时间花费从小到大)if 当前课程满分后不能获得奖学金复习至满分,累加复习时间,然后复习下一门else if 当前课程满分后能获得奖学金所需时间+=(所需总分-当前分数)*在该课程上获得 1 分所需时间输出时间;退出循环/#include#include#include using namespace std;2324252627282930313233343536373839404142434445464748struct score_hourint score;int hour;bool cmp(score_hour a,score_hour b)return a.hour n r avg)vector v;score_hour tmp;while(n-)cin tmp.score tmp.hour;v.push_back(tmp);int target=v.size()*avg;4950515253545556575859606162636465666768697071727374int score_cur=0;long time=0;for(int i=0;i=target)cout 0 endl;elsesort(v.begin(),v.end(),cmp);for(int i=0;i=target)/当前分数超过目标成绩说明该课程不得满分也可满足奖学金条件score_cur-=(r-vi.score);time+=(target-score_cur)*vi.hour;cout time endl;break;elsetime+=(r-vi.score)*vi.hour;75767778return 0;一条长 l 的笔直的街道上有n 个路灯,若这条街的起点为 0,终点为 l,第 i 个路灯坐标为 ai,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要是这个d 最小,请找到这个最小的d。
1234567891011121314151617/*(c/c+)先对路灯坐标进行排序,然后求相邻路灯之间的最大间隔需注意边界情况:路灯要照到边界,那么它的照明距离应该为其到边界距离的二倍输出结果要保留到小数点后 2 位/#include#include#include#include using namespace std;int main()int n;long l;vector v;int tmp;while(cin n l)v.clear();1819202122232425262728293031323334353637while(n-)cin tmp;v.push_back(tmp);sort(v.begin(),v.end();long maxm=0;for(int i=0;imaxm)maxm=vi+1-vi;int bianjie=max(2*(l-vv.size()-1),2*v0);if(maxm bianjie)maxm=bianjie;printf(%.2fn,maxm/2.0);return 0;。












