蝈蝈的多线程Ⅳ

TimeLimit:1000MS  MemoryLimit:64MB
64-bit integer IO format:%lld
未提交 | 登录后收藏
Problem Description

众所周知,多线程即并发,就是多个CPU同时运行多个线程来缩短时间和提高效率。每个线程被分为数个时间长度为 1 的时间片,CPU每次运行的不是整个线程,而是线程的一个时间片,同样,运行中间不会停止,直至当前时间片结束。尽管线程被拆分,但是一个线程内时间片的相对运行顺序是不会变的,如果前面的时间片还没有运行,则只会运行前面的时间片。当CPU运行完当前线程的时间片时,CPU可以选择继续运行这个线程的下一个时间片,或者选择另一个线程的时间片。一个线程的完成可以经过多个CPU,即不要求所有时间片都由同一个CPU完成,但是一个线程同一时间最多只能由一个CPU运行。每个CPU都有自己的性能分数,每个线程也都有性能要求,线程的性能要求代表线程内全部时间片的性能要求。一个时间片只能运行在性能分数不低于自己性能要求的CPU上。现在有 2 个CPU和 n 个线程,已知每个CPU的性能分数、每个线程需要的时间和性能要求,请问完成所有线程需要的最短时间。

Input

第一行三个整数 n、k1 和 k2,分别表示线程的数量和两个CPU的性能分数(1 ≤ n ,k1,k2 ≤ 100)

 接下来 n 行,每行两个整数 ai 和 bi,分别表示第 i 个线程的所需时间和性能要求(1 ≤ ai,bi ≤ 100)

Output

如果所有线程能够完成,则先输出一行“YES”,再输出一行一个整数表示完成所有线程需要的最短时间;反之,如果不能完成所有线程,则输出一行“NO”

SampleInput
3 1 2
1 1
1 2
2 1
SampleOutput
YES
2

tip:
最开始三个线程进度为(0,0,0)
当t=1时:性能为1的CPU运行第三个线程,性能为2的CPU运行第一个线程,三个线程进度为(1,0,1)
当t=2时:性能为1的CPU运行第三个线程,性能为2的CPU运行第二个线程,三个线程进度为(1,1,2)
此时所有线程全部完成,所需时间为2
Submit
题目统计信息详细
总AC数10
通过人数8
尝试人数11
总提交量38
AC率21.05%
AC该题后可以添加标签
贴完标签可以获得20ACB。
并且可以获得本题所有提交代码查看权限。
点击标题可以显示标签。
如果你还没认真思考过这题,请不要查看标签
如果您已经通过了该题,请务为该题贴上标签

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: