/ Vijos / 题库 /

排队

排队

时间限制:1秒  内存限制:256M


【题目描述】

   小F的学校在城市的一个偏僻的角落,所有学生只好在学校食堂吃饭。学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学满意的菜肴。当然,不同的人的口味也不一定相同,但每个人的口味都可以用一个非负整数表示。

  由于人手不够,食堂在同一时间只能为一个人做菜。每道菜所需时间是和前一道菜有关的,若前一道菜对应的口味是a,这一道为b,则做这道菜所需要的时间为(a or b)-(a and b),而做第一道菜是不需要计算时间的。其中or和and表示整数逐位或运算及逐位与运算,C语言中对应的运算符为“|”和“&”。

  学生数目相对还是比较多的,吃饭做菜往往会花去大量时间。因此,学校食堂偶尔会不按照大家的排队顺序做菜,以缩短总的进餐时间。

  虽然同学们能够理解学校食堂的这种做法,不过每个同学还是有一定的容忍度的。也就是说,队伍中的第i个同学,最多允许紧跟其后的Bi个人先拿饭菜。一旦在此之后的任意同学比当前同学先拿到饭菜,当前同学会十分愤怒。因此食堂做菜还是要照顾到同学们的情绪。

  现在小F想知道在满足所有人容忍度的这一前提下,学校食堂做完所有菜需要最少时间。

【输入格式】

   第一行一个整数C,表示测试点的数据组数。每组数据的第一行是一个整数N,表示学生数量。接下来的N行,每行包含两个整数:Ti和Bi,表示队伍按顺序从前向后的每个学生的所需菜的口味和这个学生的容忍度。

【输出格式】

  包含C行,每行一个整数,表示对应数据中食堂完成所有菜所需要的时间。

【输入输出样例1】

 Input

2
5
5 2
4 1
12 0
3 3
2 2
2
5 0
4 0 

 Output

16
1

对于第1组数据,一种最优秀的做菜方案是:3,2,1,4,5,每道菜所须时间为:0,8,1,6,1

【数据限制】

  30%的数据,满足1<=N<=20
100%的数据,满足1<=N<=1000,0<=Ti<=1000,0<=Bi<=7,1<=C<=5
存在30%的数据,满足0<=Bi<=1。
存在65%的数据,满足0<=Bi<=5。
存在45%的数据,满足0<=Ti<=130。
bzoj 1226

【来源】

  Mr.he

信息

ID
3226
难度
9
分类
动态规划 | 状态压缩DP 点击显示
标签
(无)
递交数
3
已通过
1
通过率
33%
被复制
2
上传者