当前位置: 首页 > news >正文

CF纯思维题大汇总(一)

CF纯思维题大汇总(一)

前言

汇总第一部分来自题单:https://www.luogu.com.cn/training/2018#problems ,主要是三年前的题。大概断断续续做了两个礼拜,总体而说涉及到的算法很少,思路非常新颖,某些题也有多种不同的思路。适合给我们这种被模板化思维洗脑的老选手清理下脑子(。

因为 \(a_x,a_y\ge 2\),并且 \(b_x\ge 0,b_y\ge 0\),所以关键点单调右下且非常稀疏。点的数量最多为 \(log_2 10^{16}\)。大概在 \(60\) 这个样子。因为点单调右下,任意两个点都能花费之间曼哈顿距离的时间互相到达。因为人的位置可能不在关键点。我们不妨先把视角放在在某个关键点如何在有限时间抵达尽可能多的关键点。假设关键词在中间,因为左上点比较稀疏,我们是不是应该 先尽量去到最左上角然后返回这个点再往下跑 ?这个贪心策略是正确的吗?考虑证明。\((X,Y)\)的右下相邻点坐标为 \((a_x*X+b_x,a_y*Y+b_y)\),因为\(a_x\ge 2,a_y\ge 2,x_0\ge 1,y_0\ge 1,b_x\ge 0,b_y \ge 0\),所以 \((a_x-1)*X+b_x>X-x_0\)\((a_y-1)*Y+b_x>Y-y_0\)。所以某个点到最左上角的点距离比其右下方任意到到其右下相邻点距离小(*)。

对于最坏情况,左上角只有一个点,当只能获取一个点,显然向左上更优,当还能获取更多时。假设我们先左上获取 \(1\) 个点,再右下获取 \(k-1(k\ge 1)\) 个点将其与直接右下获取 \(k\) 个点做比较,第一种方案比第二种方案到第 \(k-1\) 个点多出一个返回的价值。由(*)得这个价值必定比右下第 \(k-1\) 个点到第 \(k\) 个点距离小。对于左上角有更多点的例子必定比最坏情况更优。贪心策略得证。

下一步由于我们起始不在关键点上,我们只要到了关键点就可以愉快地应用贪心策略了。一个暴力的做法是枚举起始点第一个抵达的关键点,因为关键词数量极少,\(n^2\) 大力枚举即可。思路清晰后实现难度极小。

#include <bits/stdc++.h>#define int long longusing namespace std;vector<pair<int, int> > q;const int inf = 2e16;int cal(int s, int t) {int res = 1;for (int i = 0; i < s; ++i) {if (t >= abs(q[s].first - q[i].first) + abs(q[s].second - q[i].second)) {t -= (abs(q[s].first - q[i].first) + abs(q[s].second - q[i].second)) * 2;res = s - i + 1;break;}}for (int i = q.size() - 1; i > s; --i) if (t >= abs(q[s].first - q[i].first) + abs(q[s].second - q[i].second))return i + 1;return res;
}signed main() {ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);int x0, y0, ax, ay, bx, by;cin >> x0 >> y0 >> ax >> ay >> bx >> by;int xs, ys, t;cin >> xs >> ys >> t;while (x0 <= inf && y0 <= inf) {q.push_back(make_pair(x0, y0));x0 = ax * x0 + bx, y0 = ay * y0 + by;}int ans = 0;for (int i = 0; i < q.size(); ++i) if (abs(xs - q[i].first) + abs(ys - q[i].second) <= t)ans = max(ans, cal(i, t - abs(xs - q[i].first) - abs(ys - q[i].second)));cout << ans;return 0;
}
http://www.jsqmd.com/news/343162/

相关文章:

  • 软件工程毕业设计智能化:8款AI工具高效完成论文与编程
  • 2026年休闲食品品牌哪个靠谱?这份“走心”榜单将从品质、健康、品牌角度为你逐一解析 - Top品牌推荐
  • jEasyUI 自定义分页
  • 《Foundation 网格 - 小型设备》
  • 2026年NMN十大品牌推荐榜:NMN抗衰老产品推荐,聚焦成分迭代与协同抗衰的巅峰较量 - 资讯焦点
  • 赛拉嗪NHS酯,Xylazine SE:关键胺基修饰工具的结构、机理与应用解析
  • 论文AI率99%?这几款降低ai率工具亲测好用,拒绝论文变“草稿”!
  • Julia 日期和时间处理指南
  • 【无线通信】基于matlab WMMSE(SDP-WMMSE)算法和逐次凸近似算法SCA解决MIMO干扰无线网络的能效优化问题附Matlab代码
  • 《Foundation 图标》
  • 字节三面:千万级订单对账,怎么保证“一分钱不错”?答不出“流式比对+缓冲池”,基本就挂了
  • 技术前沿视角下!nad+口服哪个牌子好?2026年NMN十大品牌推荐榜单正式揭晓 - 资讯焦点
  • React Native for OpenHarmony:简易计算器应用的开发与跨平台适配实践
  • 2026年AI应用大模型选型终极指南:最值得关注的权威大模型排行榜与Benchmark榜单
  • sql语言之where in语句
  • 机器学习 - 感知机(Perceptron)
  • 面试官:“聊聊你最复杂的项目?” 别傻傻报流水账,用这套“3D解构法”降维打击
  • wpf之行为
  • Docker安装部署OpenClaw
  • 大数据毕设项目:基于Python+Echart的学生心理健康数据可视化系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 【无线充电车辆路线和速度预测】使用随机搜索优化方法同时具有路由和速度分配的模型研究附Matlab代码
  • 2026年休闲食品品牌推荐榜单:基于健康指标的选购指南 - Top品牌推荐
  • MAF快速入门(14)快速集成A2A Agent
  • 腾讯二面:1亿玩家实时排名,我答“Redis分桶”被挂!面试官:钻石局5000万人,你那个桶早炸了!
  • 【无线传感器网络】LEACH和LEACH-C协议研究附Matlab代码
  • 基于PageIndex的文档问答
  • P1941 [NOIP 2014 提高组] 飞扬的小鸟
  • Git与GitHub:深度解析与实用指南
  • TCP三次握手和四次断开 - 指南
  • 大数据计算机毕设之基于Python+Echart的学生心理健康数据可视化系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)