列表

详情


NC201954. 修炼

描述

有一款双人小游戏,两个玩家分别控制两个人物,这两个人物的能力可以用 来表示,初始两人的能力都为
游戏进行的单位是天,每一天这两个人都会分别提升 的能力值,此外,每天可以获得一个能力点,可以让 或者
等到两人修炼足够长的时间,就可以去打boss通关了。
小沃沃通过查攻略,发现最后两人的能力值组合只要满足,就可以过关。
由于通关方式有很多种,可能有很多组 的组合,只要满足其中任意一组就可以通关。
现在小沃沃想知道最短几天能够通关。

输入描述

第一行  个数,表示 
接下来一行输入一个数
下面 行,每行 个数,表示一组可以通关的

输出描述

一个数表示最短通关天数。

示例1

输入:

0 0
1
1 2

输出:

2

示例2

输入:

1 1
2
5 7
6 6

输出:

3

示例3

输入:

0 0
1
3 3

输出:

3

说明:

此样例为网友提供的hack数据,之前提交的代码已进行rejudge -2020/2/10

原站题解

import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
// todo
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

C++(g++ 7.5.0) 解法, 执行用时: 12ms, 内存消耗: 436K, 提交时间: 2023-04-18 20:15:16

#include <bits/stdc++.h>
using namespace std;
int a1,a2,b1,b2,v1,v2,n,res=1e9;
int main()
{
cin>>a1>>a2;
cin>>n;
while(n--)
{
v1=v2=0;
cin>>b1>>b2;
int c1=a1,c2=a2,m=0;
while(!(v1>b1&&v2>b2))
{
v1+=++c1;
v2+=++c2;
m++;
}
res=min(m,res);
}
cout<<res<<endl;
return 0;
}

C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 504K, 提交时间: 2020-02-02 14:00:08

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
typedef long long ll;
int main(){
ll a1,a2;
cin>>a1>>a2;
int n;
cin>>n;
ll t=1e9+5;
while(n--){
ll b1,b2;
cin>>b1>>b2;
double t1 = (sqrt((2*a1+1)*(2*a1+1)+8*b1)-1-2*a1)/2;
double t2 = (sqrt((2*a2+1)*(2*a2+1)+8*b2)-1-2*a2)/2;
t =min(t,(ll)ceil(max(t1,t2))) ;
}
cout<<t<<endl;
return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 11ms, 内存消耗: 444K, 提交时间: 2023-04-18 09:07:58

#include<iostream>
#include<algorithm>
using namespace std;
int a1,a2,v1,v2,b1,b2,n,res=1E9;
int main()
{
cin>>a1>>a2;
cin>>n;
while(n--)
{
cin>>b1>>b2;
v1=v2=0;
int ans=0,c1=a1,c2=a2;
while(!(v1>b1&&v2>b2))
{
v1+=++c1;
v2+=++c2;
ans++;
}
res=min(res,ans);
}
cout<<res<<endl;
return 0;
}

上一题