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

P9573 「TAOI-2」核心共振 解题报告

题目传送门

题目大意

给定 \(n\)\(p\),如果一个排列中两个相邻的数之和是 \(p\) 的倍数那么可以说这两个数之间产生了「共振」,构造一个仅由 \(1\sim n\) 组成的长度为 \(n\) 的排列,使其中的「共振」次数最多。

解题思路

看到 \(p\le 10^8\) 先想到有没有不可能出现「共振」的情况:

如果 \(p>2n\) 那么排列中任何两个数的和都不会是 \(p\) 的倍数(任何两个数的和一定小于 \(2n\))。

此时我们可以随意顺序输出这 \(n\) 个数。

if(p>2*n)
{for(int i=1;i<=n;i++)wr(i),putchar(' ');//直接输出从1到nputchar('\n');continue;
}

之后考虑如何最大化「共振」的次数:尽量更多的让相邻的两个数的和为 \(p\) 的倍数。

对于 \(0\le r<p\) 那么这种排列一定每相邻两项都是 \(p\) 的倍数(一直排列到某个数大于 \(n\) 导致越界):

\[r,p-r,p+r,2p-r,2p+r,3p-r... \]

对于每一个符合条件的 \(r\) 都这么构造直到越界这样就能是所求答案(如果 \(r=0\) 则还需要去重,但是我这里提前将 \(p\) 的倍数输出可以避免这件事)。

AC Code

防止作弊只放主函数。

signed main()
{T=re();//快读while(T--){n=re(),p=re();if(p>2*n)//特判 {for(int i=1;i<=n;i++)wr(i),putchar(' ');//直接输出从1到n(快写)putchar('\n');continue;}for(int i=1;i*p<=n;i++)//先将p的倍数(即r=0的情况输出,避免特判) wr(i*p),putchar(' ');for(int r=1;r<=p/2;r++)//枚举r,由于我们要输出i*p-r,所以p-r的不需要再枚举,所以枚举到p/2 {wr(r),putchar(' ');for(int i=1;i*p-r<=n;i++)//枚举p的因数{if(r==(p-r)&&i==1)continue;//上面已经输出r了 else if(r==(p-r))wr(i*p-r),putchar(' ');else{wr(i*p-r),putchar(' ');if(i*p+r>n)//发现越界直接结束到下一个r break;wr(i*p+r),putchar(' ');}} }putchar('\n');}return 0;
}
http://www.jsqmd.com/news/88402/

相关文章:

  • Transformer彻底剖析(11):多层感知机MLP
  • P9533 [YsOI2023] 区间翻转区间异或和 解题报告
  • wangEditor处理站群平台word文档转存需求
  • C#之文件读取
  • 联想打印机维修与故障排除实用指南
  • P9345 夕阳西下几时回 解题报告
  • 专网自实现域名系统的深度可行性研究与实施规划报告
  • 本地部署开源可视化界面开发工具 Node-RED 并实现外部访问( Linux 版本)
  • 实习面试题-ZooKeeper 原理面试题
  • T321484 刁钻的客人 私题题解
  • CF1891B Deja Vu 解题报告
  • 本地部署开源可视化界面开发工具 Node-RED 并实现外部访问( Windows 版本)
  • U249090 密码门 私题题解
  • 2025企业AI部署革命:T-pro-it-2.0-GGUF如何让本地化门槛直降60%?
  • JSP如何实现大文件分片上传与多线程上传?
  • 三相共直流母线式光储VSG/虚拟同步机逆变器模型仿真:离散化快速运行与前级PV最大功率追踪控制
  • Sed 例程大全
  • 【Vue3】 中 ref 与 reactive:状态与模型的深入理解
  • 实习面试题-Zookeeper 面试题
  • 双机并联虚拟同步发电机仿真模型:均分负载与优质波形输出,可拓展自适应与光伏储能技术
  • 清除企业不良记录的通知
  • Grep 例程大全
  • python环境及pip的操作
  • 管理Linux的联网
  • HTTP协议在JSP大附件上传中如何优化性能?
  • 网页前端如何通过JSP实现大文件秒传功能?
  • Ursa.Avalonia样式系统终极指南:5大技巧助你构建企业级UI
  • Asio应用(高级):构建高性能、安全、跨平台的网络系统
  • 实习面试题-Spark SQL 面试题
  • CF958A1 Death Stars (easy) 解题报告