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

CM1-DAY1题目总结

CM1-DAY1题目总结

前言

因为是第一节课,虽然比较简单,但是还是有思维难度的

1. CESE-1081

题意

给定长度为 $n$ 序列 $a$ ,求 $\underset{1 \leq i,j \leq n}\max { {\gcd(i,j)}}$

数据范围

$n \leq 2e5 , 1 \leq a_i \leq 1e6$

思路

Case 1

显然有暴力思路,复杂度是 $O(n^2)$ 的

for(int i=1;i<=n;++i) for(int j=i+1;j<=n;++j) ans=max(ans,gcd(a[i],a[j]));

Case 2

用桶记录 $a_1 \sim a_n$ 中,每个数的每一个因子出现的次数

统计答案时,从大到小遍历桶,若 $t_i \geq 2$ ,则输出答案

复杂度是 $O(n\sqrt{V})$ 的,其中 $V= \sum_{i=1}^na_i$

for(int i=1,m=sqrt(a[i]);i<=n;++i,m=sqrt(a[i])) for(int j=1;j<=m;++j) if(!(a[i]%j)) ++t[j];
for(int i=MAX;i;--i) if(t[i]>1) {cout<<i;return 0;}

Case 3(正解)

考虑优化

发现可以使用 枚举倍数 的方法做到 $O(n \log n)$

最开始对于每一个 $a_i$ ,令 t[a[i]]++;

统计答案时,从大到小遍历桶,对于当前的 $i$ ,令 $cnt=\sum^{n}_{i \vert j}{t_j}$

若 $cnt \geq 2$ ,则输出答案

while(n--) x=read(),t[x]++;
for(int i=M-1,cnt=0;i;--i,cnt=0){for(int j=i;j<M && cnt<2;j+=i) cnt+=a[j];if(cnt>1){cout<<i;return 0;}
}

2. 洛谷P13388

题意

给定长度为 $n$ 序列 $a$ ,求使 $\gcd(a_1+y,a_2+y,\cdot\cdot\cdot,a_{n-1}+y,a_n+y)$ 最大的最小 $y$

数据范围

$2 \leq n \leq 1000,1 \leq a_i \leq 10^{50}$

思路

$\Large {需要高精度!!!}$

令 $ans_y=\gcd(a_1+y,a_2+y,\cdot\cdot\cdot,a_{n-1}+y,a_n+y)$

显然 $ans_y \vert (a_i-a_j)$ ,其中 $1 \leq i,j \leq n$

所以 $\max{ans_y}=\gcd(a_i-a_j)$ ,其中 $1 \leq i,j \leq n$

令 $gcd=\gcd(a_i-a_j)$ ,其中 $1 \leq i,j \leq n$

考虑求最小的 $y$

可得 $y\equiv-a_1(\mod gcd)$

同时,对于 $gcd$ 易证 $\underset{1 \leq i,j \leq n}\gcd(a_i-a_j)=\underset{1 \lt i \leq n}\gcd(a_{i}-a_{i-1})$

3. sgu-137

题意

给定 $n,k$ ,保证 $\gcd(n,k)=1$ ,求一个长度为 $n$ 的序列,所有元素的和为 $k$ ,且 循环同构

注:对于循环同构,一个序列 $S_1 S_2 S_3 \cdot\cdot\cdot S_n$ 如果满足新序列 $S_{1-1} S_2 S_3 \cdot\cdot\cdot S_{n+1}$能够通过旋转的操作(不是翻转)来得到旧的序列,那么这个序列就循环重构

数据范围

$2 \leq n \leq 1000,1 \leq k \leq 30000$

思路

一个序列 $S_0 S_1 S_2 \cdot\cdot\cdot S_{n-1}$ 向右 $t$ 次后变为 $S_tS_{t+1}S_{t+2}\cdot\cdot\cdot S_{t-1}$

根据对应关系,可得 $S_0=S_t,S_1=S_{t+1}$

所以若 $S_i=S_j$ 当且仅当 $i \equiv j (\mod k)$

可得 $S_t=S_{2t}=\cdot\cdot\cdot=S_{mt}$

所以先将每个位置都赋值为 $k \div n$ ,再枚举一个 $t$ ,最后将 $t$ 的倍数位加上 $1$ 即可

for(t=1;t<n;++t) if((n-1)==(k%n)*t%n) break;
for(int i=t;i!=n-1;i=(i+t)%n) f[i]=1;
f[n-1]=1;
for(int i=0;i<n;++i) cout<<k/n+f[i]<<' ';
http://www.jsqmd.com/news/873144/

相关文章:

  • STM32H5安全连接AWS IoT:基于TrustZone与Secure Manager的物联网方案
  • C/C++中#define与typedef的本质区别:从编译原理到工程实践
  • AI Agent如何重构课堂?揭秘2024年全球87所试点校的3个颠覆性教学范式
  • Purple Pi OH开发板7天实战OpenHarmony:从环境搭建到应用开发
  • 2026年使用降AI工具合法性深度解读:降AI到底是不是学术不端免费完整解析
  • JS逆向实战:破解前端加密参数payload与sig的完整流程
  • C++引用的详细解释
  • Linux终端字体终极指南:10款精选字体与安装优化全解析
  • 【流体】二维稳态不可压缩层流通道流利用FVM和SIMPLE 解平行板间层流的速度、压力和温度【含Matlab源码 15558期】
  • 为开源项目OpenClaw配置Taotoken作为AI能力供应商的步骤
  • RK3568 SPI驱动实战:MCP2515 CAN控制器寄存器读写原理与优化
  • 18分钟攻破GitHub:TeamPCP供应链攻击全技术解析与防御新范式
  • 如何快速解决Windows 11区域模拟问题:完整API钩子技术指南
  • 为OpenClaw智能体工作流配置Taotoken后端模型
  • S-Video端口ESD防护方案:TVS阵列选型与PCB布局实战指南
  • 芯片设计后期DFT友好ECO:原理、实践与工具选型
  • 全志T113-S3开发板XR829 WiFi蓝牙驱动加载、固件配置与稳定性测试全攻略
  • 西恩士液冷板清洁度萃取设备/清洗机:从源头守护液冷系统“血液”洁净 - 工业设备研究社
  • CVE-2026-9082深度解析:Drupal十年最致命SQL注入,补丁发布3小时即遭全球轰炸
  • 基于RK3399核心板的智能PCR仪开发:从嵌入式系统到高精度温控
  • 为内部培训系统集成Taotoken提供个性化学习内容生成与答疑
  • Photoshop 2026(PSv27.x)详细安装教程与下载地址
  • 【学习笔记】探讨大模型应用安全建设系列8——成果汇报与持续运营
  • 为什么92%的健身APP AI聊天功能被弃用?(行为日志分析+3周A/B测试结论)
  • RK3588蓝牙功能完整测试指南:从驱动到应用实战
  • 嵌入式开发硬件生态构建:MIPI屏、UVC摄像头与4G模块的选型与集成实战
  • S-Video端口ESD防护方案解析:低电容TVS阵列选型与PCB布局实战
  • RK3588开发板蓝牙功能快速测试与配置指南
  • 汽车12V电源保护:TVS二极管选型、应用与EMC测试实战
  • 隐私至上:2026加密不存库PDF转Word工具推荐 - 时讯资讯