CF1293D - Aroma's Search 思维
x和y的系数,常数项,本身均为正。整个图像以指数级别向右上跑。我们必定是从起点出发,到一个点后,一直向下或一直向上。
所以我们就枚举走的这一段的边界,然后看上下端点哪个和起点近取那段就好。因为坐标指数级别增加,所以可能到达的点数不会本多,O(N^2)枚举完全可以接受。
c++WA了,应该是炸long long,直接用python上了。
1 import string 2 MAX = 2e18 3 x = [] 4 y = [] 5 s = input().split(" ") 6 x.append(int(s[0])) 7 y.append(int(s[1])) 8 ax = int(s[2]) 9 ay = int(s[3]) 10 bx = int(s[4]) 11 by = int(s[5]) 12 ans = 0 13 14 while (x[len(x) - 1] <= MAX and y[len(y) - 1] <= MAX): 15 x.append(ax * x[len(x) - 1] + bx) 16 y.append(ay * y[len(y) - 1] + by) 17 18 s = input().split(" ") 19 sx = int(s[0]) 20 sy = int(s[1]) 21 t = int(s[2]) 22 for i in range(0,len(x)): 23 for j in range(i,len(y)): 24 tmp = min(abs(sx - x[i]) + abs(sy - y[i]),abs(sx - x[j]) + abs(sy - y[j])) + abs(x[j] - x[i]) + abs(y[j] - y[i]) 25 if (tmp <= t): 26 ans = max(ans,j - i + 1) 27 28 print(ans)
心之所动 且就随缘去吧