2019牛客国庆集训派对day3 时间旅行(思维)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019牛客国庆集训派对day3 时间旅行(思维)相关的知识,希望对你有一定的参考价值。

LINK

现在 B o b Bob Bob在数轴点 t 0 t_0 t0,要回到 [ 0 , h 0 ] [0,h_0] [0,h0]

当处于数轴上 t t t点时,可以选择一个 x x x满足 ⌈ x h ⌉ ∗ h < = c \\lceil \\frac{x}{h} \\rceil*h<=c hxh<=c

时间机器会在 [ 0 , x ] [0,x] [0,x]随机选择一个数 y y y回到 t − y t-y ty处,同时燃料变成 c − y c-y cy

现在为了保证能回到 [ 0 , h 0 ] [0,h_0] [0,h0],求出最大的距离 T T T


可以想象,如果点 k k k无法回到 [ 0 , h 0 ] [0,h_0] [0,h0],那么 k k k以后的点也必然不能

因为时间机器是完全随机的,那么可以假定最坏情况,每次走 1 1 1

那么就要求 [ h 0 + 1 , k − 1 ] [h_0+1,k-1] [h0+1,k1]都是完全保证能回到 [ 0 , h 0 ] [0,h_0] [0,h0]

我们再看看这个式子 ⌈ x h ⌉ ∗ h < = c \\lceil \\frac{x}{h} \\rceil*h<=c hxh<=c

进一步可以得到 x x x的取值范围是 [ 0 , c − c % h ] [0,c-c\\%h] [0,cc%h]

换句话说,当 c < h c<h c<h时, x x x取值范围永远是 0 0 0,走不动,所以无法回到 [ 0 , h 0 ] [0,h_0] [0,h0]

那么当 c > h c>h c>h呢??因为时间机器的随机性,我们不管怎么选 x x x

设起点为 f f f,那么途径的点是 f − 1 , f − 2 , f − 3... h 0 f-1,f-2,f-3...h_0 f1,f2,f3...h0

这也要求期间每个位置的 c c c都要大于 h 0 h_0 h0

其实答案就是 c − 1 c-1 c1

#include<bits/stdc++.h>
using namespace std;
int h,c;
int main()
{
	while( cin >> h >> c )
	{
		if( c<h )	cout << h;
		else	cout << c+1;
		cout << endl;
	}
}

以上是关于2019牛客国庆集训派对day3 时间旅行(思维)的主要内容,如果未能解决你的问题,请参考以下文章

2019牛客国庆集训派对day3 J.买一送一(dfs+组合数学)

2019牛客国庆集训派对day1 F.4 Buttons(思维)

2019牛客国庆集训派对day2 J.Vertex Cover(思维,组合数学算贡献)

2019牛客国庆集训派对day1 H.有向图(高斯消元)

2019牛客国庆集训派对day2 C.Just h-index(主席树)

2019牛客国庆集训派对day1 D.Modulo Nine(巧妙的dp)