2026牛客暑期多校训练营3
📅 2026/7/30 4:34:11
👁️ 次浏览
K. 转向导航题意给定平面上nnn个整点航点P1,…,PnP_1, \dots, P_nP1,…,Pn汽车依次沿直线段P1→P2→⋯→PnP_1 \to P_2 \to \dots \to P_nP1→P2→⋯→Pn行驶。在每个中间航点PiP_iPi2≤i≤n−12 \le i \le n-12≤i≤n−1比较到达方向Pi−1Pi→\overrightarrow{P_{i-1}P_i}Pi−1Pi与离开方向PiPi1→\overrightarrow{P_iP_{i1}}PiPi1判断是左转LEFT、右转RIGHT还是直行STRAIGHT。保证不会掉头。题解设到达方向向量a⃗Pi−Pi−1\vec{a} P_i - P_{i-1}aPi−Pi−1离开方向向量b⃗Pi1−Pi\vec{b} P_{i1} - P_ibPi1−Pi则两者之间的转向关系恰好由二维叉积的符号给出a⃗×b⃗axby−aybx{0⇒LEFTb⃗ 由 a⃗ 逆时针旋转0∘∼180∘ 得到0⇒RIGHT顺时针0⇒STRAIGHT同向掉头已被输入排除\vec{a} \times \vec{b} a_xb_y - a_yb_x \begin{cases} 0 \Rightarrow \text{LEFT} \text{} \vec{b} \text{ 由 } \vec{a} \text{ 逆时针旋转} 0^\circ \sim 180^\circ \text{ 得到} \\ 0 \Rightarrow \text{RIGHT} \text{顺时针} \\ 0 \Rightarrow \text{STRAIGHT} \text{同向掉头已被输入排除} \end{cases}a×baxby−aybx⎩⎨⎧000⇒LEFTb由a逆时针旋转0∘∼180∘得到⇒RIGHT顺时针⇒STRAIGHT同向掉头已被输入排除直接对每个中间航点计算叉积并输出即可。时间复杂度O(∑n)O(\sum n)O(∑n)。L题目大意给定一个n×mn \times mn×m的网格地图每个格子有一个互不相同的整数高度hi,jh_{i,j}hi,j。两名玩家轮流移动一面旗帜先手先走。每次移动必须将旗帜从当前格子移动到正交相邻上下左右且高度严格更大的格子。如果当前格子没有可移动的相邻更高格子则当前玩家无法移动判负。有qqq次独立询问每次给出旗帜的起始位置问在双方都采取最优策略的情况下先手胜还是后手胜。分析首先注意到一个关键性质每次移动都严格增加高度。这意味着旗帜永远不会回到已经经过的格子游戏一定在有限步内结束。这是一个典型的无偏组合游戏Impartial Game可以考虑用 Sprague-Grundy 定理分析。为什么不能直接用 BFS如果尝试对每个询问的起点做 BFS/DFS 搜索游戏状态单次询问复杂度是O(nm)O(nm)O(nm)qqq次询问总复杂度O(q⋅nm)O(q \cdot nm)O(q⋅nm)当qqq很大时会超时。核心观察按高度从大到小处理由于每次只能移动到严格更高的格子一个格子的后继状态能一步到达的格子高度都比它大。因此如果我们按照高度从大到小的顺序处理每个格子那么处理到某个格子时它所有后继的 SG 值都已经计算完毕了。这提示我们可以离线预处理所有格子的 SG 值每次询问O(1)O(1)O(1)回答。SG 值的简化其实不必真的求出 SG 函数等等让我们再仔细看一下。题目只要求判断胜负先手胜还是后手胜而不需要具体的 SG 值。对于无偏组合游戏一个状态的 SG 值为000当且仅当它是必败态P-position非000则是必胜态N-position。更进一步由于每个格子可以移动到多个更高的相邻格子我们实际上只需要知道是否存在一个后继状态是必败态SG0如果存在当前状态是必胜态否则是必败态。这等价于当前格子的 SG 值等于其所有后继 SG 值的 mex最小非负整数不在集合中。但由于我们只关心是否为 0可以换个角度理解设当前格子能到达的后继状态的 SG 值集合为SSS。则若0∉S0 \notin S0∈/S则mex(S)\text{mex}(S)mex(S)至少为 0实际上 mex 就是 0 当且仅当 0 不在 S 中当前状态 SG 0先手胜。若0∈S0 \in S0∈S则 mex 可能非 0需要进一步判断。但实际上由于我们只关心胜负可以直接用经典结论状态为必败态当且仅当所有后继都是必胜态。这样预处理复杂度为O(nmlog(nm))O(nm \log(nm))O(nmlog(nm))主要是排序每次询问O(1)O(1)O(1)。代码#includebits/stdc.h#defineintlonglongusingnamespacestd;constintN2e55;intdx[]{0,1,0,-1};intdy[]{1,0,-1,0};structNode{intx,y,w;};boolcmp(Node a,Node b){returna.wb.w;// 按高度降序排序}voidsolve(){intn,m;cinnm;vectorvectorinth(n2,vectorint(m2,0));vectorNodes(n*m1);intscnt1;// 读入地图for(inti1;in;i){for(intj1;jm;j){cinh[i][j];s[scnt].wh[i][j];s[scnt].xi;s[scnt].yj;scnt;}}// sg[x][y] 表示格子 (x,y) 的 SG 值-1 表示未计算vectorvectorintsg(n2,vectorint(m2,-1));// am[x][y] 存储格子 (x,y) 的已处理邻居的 SG 值// 由于按高度降序处理已处理的邻居一定比当前格子高vectorintam[n2][m2];sort(s.begin()1,s.end(),cmp);// 按高度从大到小处理每个格子for(intk1;kn*m;k){intxs[k].x,ys[k].y;mapint,intcnt;// 统计已收集的后继 SG 值for(inti0;iam[x][y].size();i){cnt[am[x][y][i]];}// 计算 mex得到当前格子的 SG 值for(inti0;i4;i){if(!cnt[i]){sg[x][y]i;break;}}// 将当前格子的 SG 值传播给未处理的低邻居for(inti0;i4;i){intxxxdx[i],yyydy[i];if(xx0||xxn||yy0||yym){continue;}// 若邻居未处理高度更低则将当前 SG 值加入其 amif(sg[xx][yy]-1){am[xx][yy].push_back(sg[x][y]);}}}intq;cinq;while(q--){intx,y;cinxy;// SG 非 0 则先手胜否则后手胜if(sg[x][y]){coutFirst\n;}else{coutSecond\n;}}}signedmain(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int_1;cin_;while(_--)solve();return0;}总结这道题的关键在于发现高度顺序与游戏方向的一致性从而避免了对每个询问重复搜索。虽然代码中仍然计算了完整的 SG 值但由于值域极小效率非常高如果只关心胜负理论上还可以进一步简化但当前写法已经足够简洁高效。
1. 从“认识”到“驾驭”:电子元件的实战视角干了这么多年硬件设计,我越来越觉得,电路设计这活儿,三分靠理论,七分靠对元件的“手感”。新手和老手最大的区别,往往不在于能画出多复杂的原理图,而…
📅 2026/7/30 4:34:11
1. 项目概述:为什么ADCDMA是嵌入式数据采集的“黄金搭档”?搞过STM32的朋友,尤其是做过数据采集项目的,应该都对ADC(模数转换器)不陌生。无论是读取电位器的电压、检测电池电量,还是采集传感器&…
📅 2026/7/30 4:34:11
1. 项目概述:为什么Vitis-AI 3.0的GPU Docker环境如此“磨人”?如果你正在为AMD的AI加速平台Vitis-AI搭建开发环境,并且选择了GPU模式,那么恭喜你,你已经踏上了一段充满“惊喜”的旅程。Vitis-AI 3.0作为AMD统一AI软件…
📅 2026/7/30 4:34:11
1. 从WPA3的“绝对安全”神话说起最近在安全圈里,一个关于WPA3安全性的讨论又热了起来,源头就是“H2E”这个缩写。很多朋友,尤其是刚接触无线安全或者对家庭网络防护比较上心的朋友,看到“WPA3也不安全啦?”这样的标题…
📅 2026/7/30 5:36:52
1. 项目概述:为什么要在服务器上搭建Python环境?如果你刚开始接触编程,或者刚拿到一台云服务器,看到“环境搭建”几个字可能有点发怵。别担心,这几乎是每个开发者都会经历的第一步。简单来说,在服务器上搭建…
📅 2026/7/30 5:36:52
暑期实践来到第十天,确定好个人所负责的章节任务后,今日重心放在素材规整与前期准备上。为了让后续剪辑工作高效有序、避免素材混乱,我系统性整理了负责章节的全部原片素材与配套资料,同时完整浏览了老师提供的剪辑好的成品视频和…
📅 2026/7/30 5:36:52
1. 项目概述:为什么Elasticsearch的部署配置值得单独聊聊如果你负责过线上搜索、日志分析或者任何需要处理海量数据的业务,大概率听说过或者已经用上了Elasticsearch。这东西用好了是真香,查询快、扩展性强,但要是部署配置没弄好&…
📅 2026/7/30 5:36:52
1. 光子晶体微腔:光与物质的量子舞池2018年诺贝尔物理学奖得主Arthur Ashkin曾说:"光镊技术让我们能够像操作积木一样摆弄微观粒子。"而光子晶体微腔正是这种操控达到量子级别的精密舞台。这种由周期性介电材料构成的微纳结构,通过…
📅 2026/7/30 5:36:52
Sharp-dumpkey:一键提取微信数据库密钥的终极免费工具 【免费下载链接】Sharp-dumpkey 基于C#实现的获取微信数据库密钥的小工具 项目地址: https://gitcode.com/gh_mirrors/sh/Sharp-dumpkey
你是否曾因为换手机时微信聊天记录无法迁移而烦恼?或…
📅 2026/7/30 5:35:51
本文关键词:geo2是共价化合物哎,说实话,每次看到化学题里那些弯弯绕绕的电子式,我就头大。特别是遇到那种非要让你判断是离子还是共价的,心里就发毛。今天咱不整那些虚头巴脑的定义,就聊聊二氧化硅,也就是大家常说的硅石、石英,很多人会误写成geo2,虽然化学式不对,但…
📅 2026/7/30 0:00:24
B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…
📅 2026/7/30 0:00:26
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer
您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…
📅 2026/7/30 0:00:26
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/30 1:16:07
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/30 1:16:07
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/30 1:16:07
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/29 7:15:11
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/29 17:15:46
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/30 5:16:22