您的位置:首页 > 其它

备考(京东2016实习生真题)

2017-04-24 21:56 274 查看
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> lst = new ArrayList<Integer>();
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
Scanner in = new Scanner(System.in);
int d = in.nextInt();
int sumtime = in.nextInt();
int i = 0;
int[] a = new int[d];
int[] b = new int[d];
int minsum=0,maxsum=0;
while(i<d)
{
int imin = in.nextInt();
int imax = in.nextInt();
a[i] = imin;
b[i] = imax;
minsum+=a[i];
maxsum+=b[i];
i++;

}

if(minsum<=sumtime&&maxsum>=sumtime)
{
System.out.println("Yes");
int extra = sumtime - minsum; //满足最基本的要求
int[] c = a;
for(int t=0;t<d;t++)
{

int cha = b[t]-a[t];
if(extra>=cha)
{
c[t]=b[t];
extra -= cha;

}
else{
c[t]=a[t]+extra;
}
}
for(int e=0;e<d;e++)
{

if(e==d-1)
{
System.out.println(c[e]);
}else
{
System.out.print(c[e]+" ");
}

}
//System.out.println("");
}
else
{
System.out.println("No");
}

}

}



题目描述
临近期末,让小东头疼的考试又即将到来了,而且是小东最不喜欢的科目。遗憾的是,小东得知d天后她必须参加此次考试。小东的父亲对她要求非常严格,要求她立即开始复习功课。为照顾她的情绪,父亲要求她每天该科目的学习时间在iminTime到imaxTime之间,并计划在考前检查小东是否按要求做了。若未能完成,小东将会受到惩罚。
现在小东的父亲要求检查小东的备考情况。遗憾的是,由于专注于备考,小东只是记录了自己备考的总时间sumTime,并没有记录每天复习所用的时间,也不知道准备情况是否符合父亲的要求。她想知道是否能够制作一个满足要求的时间表以应付父亲的检查。
小东希望你能够帮到她,你是否愿意?


输入

输入中有多组测试数据。每组测试数据的第一行包含两个整数d和sumTime,1<=d<=30, 0<=sumTime<=240,分别表示小东复习的天数以及每天用于复习的时间之和。紧随其后的d行中,每行包含两个空格分隔的整数,为小东父亲要求小东在这一天用于复习时间的范围iminTime和imaxTime,0<=iminTime<=imaxTime<=8。

样例输入

1 48

5 7

2 5

0 1

3 5

输出

对每组测试数据,若能够做出一个满足小东父亲要求的时间表,则在单独的一行中输出Yes,并在随后的一行中给出每天复习花费的时间。否则输出No。

若满足要求的时间表不唯一,小东希望给父亲留下比较用功的映像,开始时每天复习的时间比较长。

样例输出

No

Yes

1 4

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: