You are fighting with Zmei Gorynich — a ferocious monster from Slavic myths, a huge dragon-like reptile with multiple heads!

Initially Zmei Gorynich has x heads. You can deal n types of blows. If you deal a blow of the i-th type, you decrease the number of Gorynich's heads by min(di,curX), there curX is the current number of heads. But if after this blow Zmei Gorynich has at least one head, he grows h_i new heads. If curX=0 then Gorynich is defeated.

You can deal each blow any number of times, in any order.

For example, if curX=10, d=7,h=10 then the number of heads changes to 13 (you cut 7 heads off, but then Zmei grows 10 new ones), but if curX=10d=11, h=100 then number of heads changes to 0 and Zmei Gorynich is considered defeated.

Calculate the minimum number of blows to defeat Zmei Gorynich!

You have to answer tt independent queries.

Input

The first line contains one integer t (1≤t≤100) – the number of queries.

The first line of each query contains two integers nn and x (1≤n≤100, 1≤x≤10^9) — the number of possible types of blows and the number of heads Zmei initially has, respectively.

The following nn lines of each query contain the descriptions of types of blows you can deal. The ii-th line contains two integers d_i and h_i (1≤d_i,h_i≤109) — the description of the i-th blow.

Output

For each query print the minimum number of blows you have to deal to defeat Zmei Gorynich.

If Zmei Gorynuch cannot be defeated print −1.

Example
input
3
3 10
6 3
8 2
1 4
4 10
4 1
3 2
2 6
1 100
2 15
10 11
14 100
output
2
3
-1
Note

In the first query you can deal the first blow (after that the number of heads changes to 10−6+3=7), and then deal the second blow.

In the second query you just deal the first blow three times, and Zmei is defeated.

In third query you can not defeat Zmei Gorynich. Maybe it's better to convince it to stop fighting?

先解释下题意,给定T组数据,每组数据第一行输入两个整数n和x,接下来n行每行输入两个整数d-i和h_i。分别是一回合能造成的damage和造成伤害后怪物回复的hp,怪物总hp是x点。

思路是贪心,先选出一个最大的max_d_i判断与x的关系,在对d_i-h_i排个序,<0则一定有解。

下面给出代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct ss
{
long long a;
long long b;
}e[];
inline bool cmp(const ss&A,const ss&B)
{
return A.a>B.a;
}
int main()
{
int t;
scanf("%d",&t);
for(int i=;i<=t;++i)
{
ll n,m;
cin>>n>>m;
ll mmax=;
for(int j=;j<n;++j)
{
long long x,y;
cin>>x>>y;
e[j].a=x-y;
e[j].b=x;
mmax=max(mmax,x);
}
sort(e,e+n,cmp);
m-=mmax;
if(m<=)
{
cout<<<<endl;continue;
}
if(e[].a>)
{
int tt=m/e[].a+;
if(m%e[].a==)
{
tt--;
}
cout<<tt<<endl;
}
else
{
cout<<-<<endl;
}
}
return ;
}

做这题时混用了scanf和cin,为了加速关闭了文件流同步,最后就疯狂RE,切忌偷懒啊。

CF1217B Zmei Gorynich的更多相关文章

  1. Educational Codeforces Round 72 (Rated for Div. 2)

    https://www.cnblogs.com/31415926535x/p/11601964.html 这场只做了前四道,,感觉学到的东西也很多,,最后两道数据结构的题没有补... A. Creat ...

  2. Educational Codeforces Round 72

    目录 Contest Info Solutions A. Creating a Character B. Zmei Gorynich C. The Number Of Good Substrings ...

  3. Educational Codeforces Round 72 (Rated for Div. 2) B题

    Problem Description: You are fighting with Zmei Gorynich — a ferocious monster from Slavic myths, a ...

  4. Educational Codeforces Round 72 (Rated for Div. 2) Solution

    传送门 A. Creating a Character 设读入的数据分别为 $a,b,c$ 对于一种合法的分配,设分了 $x$ 给 $a$ 那么有 $a+x>b+(c-x)$,整理得到 $x&g ...

  5. CF1217B

    CF1217B 题意: 有一个有 $ x $ 个头的龙,你有 $ n $ 种方案,每种方案中包含你可以砍掉的头 $ d_i $ 和龙会生长的头 $ h_i $ 找到一种方案,使得操作数最少. 解法: ...

随机推荐

  1. Matplotlib 基本概念

    章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...

  2. python2学习------基础语法3(类、类的继承、类成员函数、防御式编程)

    1.类的定义以及实例化 # 类定义 class p: """ this is a basic class """ basicInfo={&q ...

  3. HiBench成长笔记——(10) 分析源码execute_with_log.py

    #!/usr/bin/env python2 # Licensed to the Apache Software Foundation (ASF) under one or more # contri ...

  4. 2-10 就业课(2.0)-oozie:6、通过oozie执行mr任务,以及执行sqoop任务的解决思路

    执行sqoop任务的解决思路(目前的问题是sqoop只安装在node03上,而oozie会随机分配一个节点来执行任务): ======================================= ...

  5. 第1节 网站点击流项目(上):4、网站的数据采集,使用flume的taildir实现多个文件的监控采集

    一. 模块开发----数据采集 1. 需求 在网站web流量日志分析这种场景中,对数据采集部分的可靠性.容错能力要求通常不会非常严苛,因此使用通用的flume日志采集框架完全可以满足需求. 2. Fl ...

  6. Ubuntu用sudo apt-get update出错:E: Problem executing scripts APT::Update::Post-Invoke-Success

    Ubuntu用sudo apt-get update出错:   E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /u ...

  7. 云时代架构阅读笔记十五——之前碰到的Java面试题

    1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...

  8. 使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便

    一.定义 JSON 是一种数据格式 使用 javaScript (Java 死鬼破特)对象表示法 二.特点 1.JSON 与 XML格式数据的区别 ====== 两种格式的数据,都是跨语言,跨平台 c ...

  9. uniapp属性插值报错Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead.

    解决方法: 因为vue 2.x不支持对属性使用插值{{}}的方式赋值,所以要使用v-bind指令(或简写“:”)来指定属性. v-bind指令 v-bind:id="item.id" ...

  10. 如何让你的学术Essay写作看起来更高级?

    学术风格不仅是使用某些特定的词汇或者特定的表达方式.学术风格还会涉及到你的思考方式.推理方式以及你如何利用某个领域内已知的发现.学术风格是英国大学学习的核心.所以在平时的学习中,英国环球论文小编建议大 ...