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)

 

posted @ 2020-02-07 09:59  IAT14  阅读(186)  评论(0编辑  收藏  举报