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

题解:洛谷 P5688 [CSP-S 2019 江西] 散步

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷P5688 [CSP-S 2019 江西] 散步 - 洛谷【题目描述】公园内有n nn个人正在散步随着天色渐晚所有人准备回家离开公园。公园的结构是一个首尾相连的环形图它共有m mm个出口为了方便叙述我们将人从1 ∼ n 1\sim n1∼n编号将出口按逆时针顺序从1 ∼ m 1\sim m1∼m编号。公园总长L LL米我们令1 11号出口所在的位置为0 00米则 编号为i ( 2 ≤ i ≤ m ) i\ (2\le i\le m)i(2≤i≤m)的出口在1 11号出口逆时针方向a i a_iai​米的位置上其中a i a_iai​严格递增 即i ( 1 ≤ i m ) i\ (1\le i m)i(1≤im)号出口与i 1 i1i1号出口相邻由于公园是环形图故m mm号出口与1 11号出口也相邻。每个出口还有一个通行限制l i l_ili​表示最多有l i l_ili​个人能从i ii号出口离开。所有人回家时将按自己的朝向可能是顺时针方向也可能是逆时针方向不断前行当他们走到一个还能离开的出口时将从该出口离开公园。特别地当两个人同时走到一个只能允许1 11个人离开的出口时编号小的那个人能从该出口离开编号较大的人将继续前进。现在给定n nn个人所在的起始位置与他们的前进方向请你求出每个人从哪个出口离开若编号为i ii的 人从k i k_iki​号出口离开你只需要给出i × k i i\times k_ii×ki​的异或和即( 1 × k 1 ) xor ⁡ ( 2 × k 2 ) xor ⁡ ⋯ xor ⁡ ( n × k n ) (1\times k_1) \operatorname{xor} (2\times k_2) \operatorname{xor}\cdots \operatorname{xor} (n\times k_n)(1×k1​)xor(2×k2​)xor⋯xor(n×kn​)其中xor ⁡ \operatorname{xor}xor是位异或运算。特别地若一个人最后无法离开则他的k i 0 k_i 0ki​0。【输入】第一行三个正整数n , m , L n, m, Ln,m,L意义见题目描述。第二行m − 1 m - 1m−1个正整数a i ( 2 ≤ i ≤ m ) a_i\ (2\le i \le m)ai​(2≤i≤m)表示出口位置。保证a i a_iai​严格递增。第三行m mm个正整数l i l_ili​表示出口的人数限制。接下来n nn行每行两个整数s i , b i ( 1 ≤ i ≤ n ) s_i,b_i\ (1 \le i \le n)si​,bi​(1≤i≤n)。若s i s_isi​为0 00表示编号为i ii的人前进方向是逆时针方向为1 11表示是顺时针方向。b i b_ibi​表示编号为i ii的人的起始位置为离1 11号出口逆时针方向b i b_ibi​米的位置。【输出】仅一行一个整数表示答案。【输入样例】3 2 5 2 2 1 0 1 1 3 0 4【输出样例】3【算法标签】#省选# #链表#【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglongtypedefpairint,intPII;constintN400005;intn,m,L;// n: 士兵数量, m: 基地数量, L: 战场长度ints[N];// 基地位置intb[N];// 每个基地的容量inttp[N];// 士兵类型 (0/1)inted[N];// 士兵分配的基地PII X[N];// 用于排序的临时数组inttt;// 临时数组的大小vectorPIIA[2];// 按类型存储士兵 (位置, id)// 优先队列中的数据结构structdata{intx,y,z;// x: 士兵id, y: 基地idn, z: 距离};// 重载小于运算符定义优先队列的排序规则booloperator(data x,data y){if(x.zy.z)// 如果距离相等{returnx.xy.x;// 士兵id小的优先}else{returnx.zy.z;// 距离小的优先}}priority_queuedataq;// 优先队列存储可匹配的(士兵, 基地)对// 双向链表结构用于维护相邻关系structlianbiao{PII nxt[N],lst[N];// 下一个节点和上一个节点// 连接两个节点voidlink(intx,inty,intz){xabs(x);// 取绝对值yabs(y);nxt[x]{y,z};// 设置x的下一个节点是y距离为zlst[y]{x,z};// 设置y的上一个节点是x距离为z// 如果x是士兵y是基地则将这对加入优先队列if(xnyn){q.push((data){x,y,z});}}// 删除节点x并将其前后节点连接voiderase(intx){link(lst[x].first,nxt[x].first,lst[x].secondnxt[x].second);}}D[2];// 两个方向的双向链表signedmain(){cinnmL;// 输入士兵数量、基地数量、战场长度// 输入基地位置for(inti2;im;i){cins[i];}// 输入每个基地的容量for(inti1;im;i){cinb[i];}// 输入士兵信息for(inti1,k,x;in;i){cinkx;// 输入士兵类型和位置A[k].push_back({x,i});// 将士兵按类型存储tp[i]k;// 记录士兵类型}// 处理类型0的士兵tt0;for(inti1;im;i)// 添加基地{X[tt]{s[i],ni};// 基地id为ni}for(autop:A[0])// 添加类型0的士兵{X[tt]{p.first,-p.second};// 士兵id为负数}sort(X1,Xtt1);// 按位置排序// 构建类型0的循环链表for(inti1;itt;i){D[0].link(X[i].second,X[i1].second,X[i1].first-X[i].first);}D[0].link(X[tt].second,X[1].second,L-X[tt].first);// 连接首尾// 处理类型1的士兵tt0;for(inti1;im;i)// 添加基地{X[tt]{s[i],-n-i};// 基地id为负数}for(autop:A[1])// 添加类型1的士兵{X[tt]p;// 士兵id为正数}sort(X1,Xtt1);// 按位置排序// 构建类型1的循环链表for(inti1;itt;i){D[1].link(X[i1].second,X[i].second,X[i1].first-X[i].first);}D[1].link(X[1].second,X[tt].second,L-X[tt].first);// 连接首尾intcntm;// 未分配完的基地数量// 贪心匹配while(cnt!q.empty()){data nowq.top();// 取出距离最小的(士兵, 基地)对q.pop();intxnow.x;// 士兵idintynow.y;// 基地idnintzy-n;// 基地实际id// 如果士兵已分配或基地容量为0跳过if(ed[x]||!b[z]){continue;}ed[x]z;// 分配士兵到基地--b[z];// 减少基地容量// 如果基地容量用完if(!b[z]){D[0].erase(y);// 从类型0的链表中删除基地D[1].erase(y);// 从类型1的链表中删除基地--cnt;// 减少未分配完的基地数量}D[tp[x]].erase(x);// 从对应类型的链表中删除士兵}// 计算结果intans0;for(inti1;in;i){ans^i*ed[i];// 计算异或和}coutansendl;// 输出结果return0;// 程序正常结束}【运行结果】3 2 5 2 2 1 0 1 1 3 0 4 3

相关文章:

题解:洛谷 P5688 [CSP-S 2019 江西] 散步

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

MacBook外接显示器踩坑记:我是如何用一份XML配置文件拯救了2K屏的显示效果

MacBook外接2K显示器终极调校指南:从字体发虚到视网膜级显示的进阶之路 第一次将那台27英寸2K显示器连接到我的MacBook Pro时,满心期待瞬间化为失望——那些本该锐利的文字边缘像被水浸过一样模糊不清。作为每天需要处理代码和设计稿的开发者&#xff0c…...

手把手解析AHB总线:HREADY、HREADYOUT、HRESP这些关键信号到底怎么用?

手把手解析AHB总线:HREADY、HREADYOUT、HRESP这些关键信号到底怎么用? 在数字芯片设计中,AMBA总线堪称工程师的"老熟人",而AHB作为其高性能成员,几乎出现在所有需要高速数据传输的场景中。但真正动手写过AHB…...

Linux服务器被植入挖矿木马后,除了删文件你还应该做的7件事(含UFW/密钥登录配置)

Linux服务器遭遇挖矿木马后的深度安全加固指南 当你的Linux服务器突然变得异常卡顿,GPU占用率飙升到100%,很可能已经沦为挖矿木马的"肉鸡"。很多管理员的第一反应是找到并删除可疑文件,但这只是治标不治本。去年处理过数十起类似事…...

【2024最新实践】:R语言调用Hugging Face模型+内置bias_test()函数实现端到端偏见扫描(仅需R 4.3.2+3个CRAN包)

更多请点击: https://intelliparadigm.com 第一章:R语言在大语言模型偏见检测中的统计方法 R语言凭借其强大的统计建模能力与丰富的文本分析生态,已成为评估大语言模型(LLM)社会偏见的重要工具。通过构造受控提示集、…...

如何在老旧电脑上安装Windows 11:MediaCreationTool.bat完整指南

如何在老旧电脑上安装Windows 11:MediaCreationTool.bat完整指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat…...

告别试用期焦虑:IDE Eval Resetter让你的JetBrains工具永不过期

告别试用期焦虑:IDE Eval Resetter让你的JetBrains工具永不过期 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为IntelliJ IDEA、PyCharm等JetBrains IDE的试用到期而烦恼吗?每次看到…...

3个实战技巧掌握obs-virtual-cam:从零构建专业级虚拟摄像头系统

3个实战技巧掌握obs-virtual-cam:从零构建专业级虚拟摄像头系统 【免费下载链接】obs-virtual-cam obs-studio plugin to simulate a directshow webcam 项目地址: https://gitcode.com/gh_mirrors/ob/obs-virtual-cam 你是否厌倦了视频会议中单调的摄像头画…...

别再乱用MyBatisPlus的selectOne了!这3个坑我帮你踩过了(附正确用法)

MyBatisPlus查询方法避坑指南:从生产事故看selectOne的正确使用姿势 上周团队里刚发生一起线上事故——用户积分无故清零。排查后发现是某位同事在代码中误用了selectOne方法,导致本该返回唯一结果的查询匹配到多条数据,系统错误地取了第一条…...

手机端实时低光增强:手把手部署CVPR2020的ZeroDCE模型到Android (附TensorFlow Lite转换教程)

手机端实时低光增强:ZeroDCE模型在Android端的完整部署指南 从实验室到口袋:为什么选择ZeroDCE 深夜街头抓拍、昏暗餐厅记录美食、逆光环境下的自拍——这些场景对手机摄影始终是巨大挑战。传统图像处理方案要么效果生硬,要么计算复杂难以实时…...

别再被X11报错卡住!手把手教你解决虚拟机里Java Swing程序显示不了的坑

别再被X11报错卡住!手把手教你解决虚拟机里Java Swing程序显示不了的坑 每次在Linux虚拟机里调试Java Swing程序时,那个刺眼的"AWTError: Cant connect to X11 window server"报错是不是让你血压飙升?作为常年与虚拟机打交道的开发…...

Xilinx FPGA DDR3实战:手把手教你封装MIG IP,并搞定Vivado仿真(附TestBench)

Xilinx FPGA DDR3接口开发实战:从MIG IP封装到仿真验证全流程解析 1. DDR3存储系统设计基础与MIG IP核心架构 在高速数据采集、图像处理等应用场景中,DDR3 SDRAM因其大容量和高带宽特性成为FPGA系统设计的首选存储方案。Xilinx提供的Memory Interface Ge…...

MySQL主从复制报错13117?手把手教你排查并修复UUID冲突(附Docker环境实战)

MySQL主从复制报错13117?Docker环境UUID冲突排查与修复指南 1. 故障现象与初步诊断 当你发现MySQL从库突然停止同步,第一时间查看show slave status\G命令输出时,可能会遇到这样的错误提示: Last_IO_Errno: 13117 Last_IO_Error: …...

WechatDecrypt:如何安全解密微信聊天记录数据库?

WechatDecrypt:如何安全解密微信聊天记录数据库? 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt WechatDecrypt 是一个开源的微信消息解密工具,专为需要访问自己微信聊…...

从Elasticsearch到Milvus:深入聊聊BM25在现代向量检索中的角色与局限

BM25在现代向量检索生态中的定位与价值重构 当Milvus和Faiss的向量索引技术成为行业热点时,一个有趣的现象正在发生:几乎所有主流商业搜索引擎仍在混合使用BM25算法。这种看似矛盾的现状背后,隐藏着文本检索领域最深刻的工程智慧——没有完美…...

从代码解释器到AI代理沙盒:构建安全可扩展的执行环境

1. 项目概述:一个为AI代理打造的“沙盒游乐场”如果你和我一样,一直在探索如何让ChatGPT这类大语言模型(LLM)真正“动手”做事,而不仅仅是“动嘴”聊天,那么你肯定对OpenAI官方的“代码解释器”&#xff08…...

OpenClaw 101:一站式中文开发者指南与 Next.js 静态站点实践

1. 项目缘起与定位作为一名长期在开源社区和AI应用开发领域摸爬滚打的开发者,我见过太多优秀的项目因为上手门槛高、资料零散而“劝退”了无数热情的初学者。OpenClaw 这个项目就是一个典型的例子——它在 GitHub 上收获了超过 13 万颗星,热度毋庸置疑&a…...

避坑指南:Matlab处理MDF文件时,时间序列对齐与Simulink仿真的那些事儿

避坑指南:Matlab处理MDF文件时,时间序列对齐与Simulink仿真的那些事儿 在汽车电子控制系统的开发过程中,数据回灌(Data Replay)是验证和调试控制策略的重要手段。工程师们常常需要将实际采集的车辆数据重新注入到Simul…...

3分钟快速上手:AMD Ryzen处理器调试神器SMUDebugTool完整教程

3分钟快速上手:AMD Ryzen处理器调试神器SMUDebugTool完整教程 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: htt…...

5分钟掌握Windows驱动管理工具:释放系统盘空间,提升电脑性能

5分钟掌握Windows驱动管理工具:释放系统盘空间,提升电脑性能 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾因C盘空间不足而烦恼?是否遇到过…...

保姆级教程:在Ubuntu 20.04的Gazebo 11里,给机器人模型贴上AR识别二维码

从零实现Gazebo机器人仿真中的AR二维码精准贴图指南 当我在实验室第一次尝试为机械臂工作台添加AR二维码时,那些歪斜变形的贴图让我意识到,Gazebo中的材质映射远比想象中复杂。本文将分享如何通过物理精确的UV映射在复杂曲面上实现二维码完美贴合——这个…...

C语言完美演绎9-8

/* 范例&#xff1a;9-8 */ #include <stdio.h> /* 声明 定义 (并给初值) */ enum /* 省略类型名称 */ { one1,two,three }enum_a, enum_btwo; /* 声明自定义列举类型Weather */ enum Weather /* 包含自定义类型名称 */ { Spring1,Summer,Autumn,Winter /* 定…...

如何快速使用TegraRcmGUI:面向新手的完整Switch注入工具指南

如何快速使用TegraRcmGUI&#xff1a;面向新手的完整Switch注入工具指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 你是否曾经对Nintendo Switch的定制…...

用 ChatGPT 5.5 的进阶思考与 Deep Research 打通 SOTA 文献阅读、改进实验到英文 SCI 写作全流程

目录1. 摘要2. 为什么今天的 SOTA 阅读&#xff0c;已经不能只靠“会总结”2.1 读论文最难的地方&#xff0c;从来不是读懂句子&#xff0c;而是读懂问题空间2.2 从科研工作流看&#xff0c;AI 的真正位置是“第二研究大脑”3. 先把工具理解对&#xff1a;进阶思考、Deep Resea…...

5分钟掌握AssetRipper:Unity资产提取的完整解决方案

5分钟掌握AssetRipper&#xff1a;Unity资产提取的完整解决方案 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper AssetRipper是一款专业…...

5步精通ESPTool实战:ESP芯片烧录与调试深度指南

5步精通ESPTool实战&#xff1a;ESP芯片烧录与调试深度指南 【免费下载链接】esptool Serial utility for flashing, provisioning, and interacting with Espressif SoCs 项目地址: https://gitcode.com/gh_mirrors/es/esptool ESPTool是乐鑫科技官方推出的ESP系列芯片…...

GetBox-PyMOL-Plugin:5分钟掌握分子对接盒子计算的完整指南

GetBox-PyMOL-Plugin&#xff1a;5分钟掌握分子对接盒子计算的完整指南 【免费下载链接】GetBox-PyMOL-Plugin A PyMOL Plugin for calculating docking box for LeDock, AutoDock and AutoDock Vina. 项目地址: https://gitcode.com/gh_mirrors/ge/GetBox-PyMOL-Plugin …...

GPT-5.5大模型深度应用指南:从架构原理到工业级智能体开发实践

目录1. 模型核心架构与技术突破点1.1 混合注意力机制1.2 专家混合路由升级2. 环境准备与合法访问配置2.1 获取合法访问凭证2.2 本地环境搭建2.3 使用国内合规镜像站3. 基础调用方法与核心参数设置3.1 基础调用示例3.2 核心参数详解3.3 流式输出4. 复杂逻辑推理能力实测4.1 思维…...

避坑指南:在树莓派Ubuntu22.04上配置MCP2515 CAN接口时,为什么你的can0接口出不来?

树莓派Ubuntu22.04配置MCP2515 CAN接口疑难解析&#xff1a;从设备树到内核模块的深度排错 当你兴奋地将MCP2515模块连接到树莓派4B的SPI接口&#xff0c;按照网上教程一步步操作&#xff0c;却在最后发现ifconfig -a里根本看不到期待的can0接口时&#xff0c;那种挫败感我深有…...

Vivado 2018.3下ZYNQ QSPI固化失败?手把手教你用双FSBL工程搞定这个经典Bug

Vivado 2018.3下ZYNQ QSPI固化故障深度解析与双FSBL工程实战指南 问题背景与现象分析 最近在Vivado 2018.3环境下进行ZYNQ开发时&#xff0c;不少工程师遇到了一个令人头疼的问题&#xff1a;QSPI Flash能够成功擦除&#xff0c;但在写入阶段却频繁失败&#xff0c;或者虽然看…...