Content

给定一个坐标系,已知第一个点的坐标为 \((x_0,y_0)\),第 \(i(i>0)\) 个点的坐标满足这样的两个递推式:\(x_i=a_xx_{i-1}+b_x,y_i=a_yy_{i-1}+b_y\)。现在从 \((x_s,y_s)\) 出发,每秒钟能够上下左右走一个格子,求在 \(t\) 秒内最多能够经过的点的个数。

数据范围:\(1\leqslant x_0,y_0,x_s,y_s,t\leqslant 10^{16},2\leqslant a_x,a_y\leqslant 100,0\leqslant b_x,b_y\leqslant 10^{16}\)。

Solution

我们发现,坐标的增长是指数级的。因此坐标在 \(10^{16}\) 以内的点其实并不多,甚至可以说是非常有限。而且可以确定的是,要想经过点最多,一定得要从近的点走到远的点。所以我们考虑直接暴力模拟,先往左跑,再往右跑,看哪边能够经过的点多就取哪一边的答案。

依据这种思路写的代码跑的挺快,最慢的点大约也就 \(30\) ms,不用担心会超时。

Code

long long ax, ay, bx, by, xs, ys, t, x[100007], y[100007];

int main() {
getll(x[0]), getll(y[0]), getll(ax), getll(ay), getll(bx), getll(by), getll(xs), getll(ys), getll(t);
int num = 0;
while(x[num] <= xs + t && y[num] <= ys + t) num++, x[num] = ax * x[num - 1] + bx, y[num] = ay * y[num - 1] + by;
ll tmp = 0; int ans = 0;
_for(i, 0, num) {
tmp = t - llabs(x[i] - xs) - llabs(y[i] - ys);
int j = i + 1, cnt = 0;
while(tmp >= 0 && j <= num) cnt++, tmp -= (x[j] - x[j - 1] + y[j] - y[j - 1]), j++;
cnt += (tmp >= 0), ans = max(ans, cnt), tmp = t - abs(x[i] - xs) - abs(y[i] - ys), j = i - 1, cnt = 0;
while(tmp >= 0 && j <= num) cnt++, tmp -= (x[j + 1] - x[j] + y[j + 1] - y[j]), j--;
cnt += (tmp >= 0), ans = max(ans, cnt);
}
writeint(ans);
return 0;
}

CF1292B Aroma's Search 题解的更多相关文章

  1. Codeforces 1292B/1293D - Aroma's Search

    题目大意: Aroma想要找数据第0个数据再x0,y0这个点其后所有数据所在的坐标点满足x[i]=x[i-1]*ax+bxy[i]=y[i-1]*ay+byAroma一开始在点(xs,ys),她最多只 ...

  2. N - Aroma's Search CodeForces - 1293D math+greedy

    作为DIV2的D题来讲,这个题目不算难. 题目大意:再规定的时间内寻找宝藏,第i个宝藏的位置为a*x(i-1)+b,a*y(i-1)+b.然后给出初始位置xs,ys和时间t让求再时间t内能够寻找到多少 ...

  3. HDU2222:Keywords Search——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意: 给定 n 个长度不超过 50 的由小写英文字母组成的单词,以及一篇长为 m 的文章,问有多少个 ...

  4. 洛谷P1189 SEARCH 题解 迭代加深

    题目链接:https://www.luogu.com.cn/problem/P1189 题目大意: 给你一个 \(n \times m\) 的矩阵,其中有一些格子可以走,一些各自不能走,然后有一个点是 ...

  5. 【CF1436C】Binary Search 题解

    原题链接 题意简介 要求有多少种 n 的排列,能够通过二分法正确地找到放在 pos 处的数字 x. 答案对 1e9+7 取模.n<=1000. 采用的二分法如下图: 思路分析 首先,这个排列中有 ...

  6. Codeforces Round #614 (Div. 2) A-E简要题解

    链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...

  7. LeetCode编程训练 - 折半查找(Binary Search)

    Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...

  8. 算法与数据结构基础 - 折半查找(Binary Search)

    Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...

  9. LeetCode编程训练 - 回溯(Backtracking)

    回溯基础 先看一个使用回溯方法求集合子集的例子(78. Subsets),以下代码基本说明了回溯使用的基本框架: //78. Subsets class Solution { private: voi ...

随机推荐

  1. 【Redis】(1)-- 关系型数据库与非关系型数据库

    关系型数据库与非关系型数据库 2019-07-02  16:34:48  by冲冲 1. 关系型数据库 1.1 概念 关系型数据库,是指采用了关系模型来组织数据的数据库.关系模型指的就是二维表格模型, ...

  2. Docker之容器化学习之路v20.10.3

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...

  3. 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚

    1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...

  4. Kubernetes:了解 Deployment

    本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...

  5. [NOI Online 2021 提高组] 积木小赛

    思路不说了. 想起来自己打比赛的时候,没睡好.随便写了个\(HASH\),模数开小一半分都没有. 然后学了\(SAM\),发现这个判重不就是个水题. \(SAM\)是字串tire的集合体. 随便\(d ...

  6. Godunov's 定理

    Godunov's theorem 转自Wiki 目录 Godunov's theorem 简介 定理 定理1. 单调保持性(Monotonicity preserving) 定理2. Godunov ...

  7. doxygen相关命令

    主要配置修改 整个程序配置分几个部分 Project related configuration options 项目相关,包括: 项目名 输出目录 输出语言 是否显示继承属性 是否对C.Java.F ...

  8. miRNA分析--靶基因预测(三)

    miRNA分析--数据过滤(一) miRNA分析--比对(二) 根据miRNA Target Prediction in Plants, miRNA并非所有区域都要求严格匹配,其中第1位碱基和第14位 ...

  9. nohup使用

    nohup:不挂断运行 在忽略挂起信号的情况下运行给定的命令,以便在注销后命令可以在后台继续运行. 可以这么理解:不挂断的运行,注意并没有后台运行的功能,就是指,用nohup 运行命令可以是命令永远运 ...

  10. 利用vcftools比较两个vcf文件

    因为最近有一项工作是比较填充准确性的,中间有用到vcftools比较两个vcf文件. 使用命令也很简单: 1 vcftools --vcf file1.snp.vcf --diff file2.snp ...