CF1292B Aroma's Search 题解
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 题解的更多相关文章
- 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),她最多只 ...
- 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内能够寻找到多少 ...
- HDU2222:Keywords Search——题解
http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意: 给定 n 个长度不超过 50 的由小写英文字母组成的单词,以及一篇长为 m 的文章,问有多少个 ...
- 洛谷P1189 SEARCH 题解 迭代加深
题目链接:https://www.luogu.com.cn/problem/P1189 题目大意: 给你一个 \(n \times m\) 的矩阵,其中有一些格子可以走,一些各自不能走,然后有一个点是 ...
- 【CF1436C】Binary Search 题解
原题链接 题意简介 要求有多少种 n 的排列,能够通过二分法正确地找到放在 pos 处的数字 x. 答案对 1e9+7 取模.n<=1000. 采用的二分法如下图: 思路分析 首先,这个排列中有 ...
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- LeetCode编程训练 - 折半查找(Binary Search)
Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...
- 算法与数据结构基础 - 折半查找(Binary Search)
Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...
- LeetCode编程训练 - 回溯(Backtracking)
回溯基础 先看一个使用回溯方法求集合子集的例子(78. Subsets),以下代码基本说明了回溯使用的基本框架: //78. Subsets class Solution { private: voi ...
随机推荐
- idea配置MyBatis
新建工程 删掉src 创建Module 在工程中的porn.xml输入以下依赖 <?xml version="1.0" encoding="UTF-8"? ...
- ound interface org.elasticsearch.common.bytes.BytesReference, but class was expected
es得版本和本地项目不一致.. 配置es版本,现在使用得是5.2得版本,可是 maven上看到 elasticsearch-rest-high-level-client 最低也得6版本.下载安装高版本 ...
- 如何删除一个win10的服务
使用场景: 之前电脑玩腾讯qq微端游戏,后来卸载残留服务一直在后台占用系统资源.那么如何关闭这个服务呢. 1.首先 管理员运行--cmd.exe 2.打开任务管理器,找到服务名称,如果服务开启可以关闭 ...
- CF1511E Colorings and Dominoes
考虑计数拆开贡献. 因为在一个方案中一个格子最多只会贡献一次,那么不妨反过来求这个格子贡献了多少次. 然后发现,行列独立,那么我们单独计算红蓝色,即可. 一个偶数块贡献当且仅当前面也是偶数块. 然后显 ...
- 洛谷 P4900 - 食堂(推式子)
洛谷题面传送门 首先推式子: \[\begin{aligned} ans&=\sum\limits_{i=A}^B\sum\limits_{j=1}^i\{\dfrac{i}{j}\} \en ...
- LOJ 3399 -「2020-2021 集训队作业」Communication Network(推式子+组合意义+树形 DP)
题面传送门 一道推式子题. 首先列出柿子,\(ans=\sum\limits_{T_2}|T_1\cap T_2|·2^{T_1\cap T_2}\) 这个东西没法直接处理,不过注意到有一个柿子 \( ...
- 【豆科基因组】木豆Pigeonpea (Cajanus cajan) 292个自然群体重测序2017NG
目录 一.来源 二.结果 一.来源 Whole-genome resequencing of 292 pigeonpea accessions identifies genomic regions a ...
- admixture 群体结构分析
tructure是与PCA.进化树相似的方法,就是利用分子标记的基因型信息对一组样本进行分类,分子标记可以是SNP.indel.SSR.相比于PCA,进化树,群体结构分析可明确各个群之间是否存在交流及 ...
- 【百奥云GS专栏】全基因组选择之工具篇
目录 1. 免费开源包/库 1.1 R包 1.2 Python库 2. 成熟软件 3. WEB/GUI工具 前面我们已经介绍了基因组选择的各类模型,今天主要来了解一下做GS有哪些可用的软件和工具.基因 ...
- python-django-类函数__str__ 函数
打印一个实例化对象时,打印的其实时一个对象的地址.而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西. 因为再python中调用print()打印实例化对象时会调用_ ...