1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

给定长度为 n 的数组 a,定义三元组 (i,j,k)(i<j<k)为“好”的充要条件是 三对数的 gcd 要么全部为 1,要么全部大于 1。

关键观察:Ramsey 定理给出 R(3,3)=6——任意 6 个点的完全图二染色(两种颜色分别代表“gcd=1 的边”和“gcd>1 的边”)中,必然存在一个单色三角形。 对应到本题,当 n ≥ 6 时,不管数组取值如何,前 6 个下标中一定存在一个好三元组(三对 gcd 全为 1 或全大于 1)。

据此可将问题大幅简化为常数规模检查:

P3893.第3题-小美的GCD

    1000ms Tried: 108 Accepted: 20 Difficulty: 5 所属公司 : 美团
    算法与标签>思维

题目内容

给定一个长度为 nnn 的数组 aaa 。一个整数三元组 (i,j,k)(i,j,k)(i,j,k) 被称为好的当且仅当:

1≤i<j<k≤n1≤i<j<k≤n1≤i<j<k≤n ;

其三个元素对应的 gcdgcdgcd 值要么全部为 111 ,要么全部大于 111 ,使用数学语言表达,即 maxmaxmax{gcd(ai,aj),gcd(aj,ak),gcd(ai,ak)gcd(a_i,a_j),gcd(a_j,a_k),gcd(a_i,a_k)gcd(ai​,aj​),gcd(aj​,ak​),gcd(ai​,ak​)}=1=1=1 或 minminmin {gcd(ai,aj),gcd(aj,ak),gcd(ai,ak)>1gcd(a_i,a_j),gcd(a_j,a_k),gcd(a_i,a_k)>1gcd(ai​,aj​),gcd(aj​,ak​),gcd(ai​,ak​)>1 。

小美有 qqq 次对数组 aaa 的更新。每次更新会给你两个整数 ppp 和 xxx,代表将 apa_pap​ 赋值为 xxx 。在每一次更新之后,你需要告诉小美是否存在好三元组。如果存在请输出任意一个。

输入描述

第一行输入两个整数 n,q(3≦n≦2⋅105,1≦q≦2⋅105)n,q(3≦n≦2·10^5,1≦q≦2·10^5)n,q(3≦n≦2⋅105,1≦q≦2⋅105) ,分别表示数组 aaa 的长度和更新的次数。

第二行输入 nnn 个整数 a1,a2,...,an(1≦ai≦106)a_1,a_2,...,a_n(1 ≦ a_i≦ 10^6)a1​,a2​,...,an​(1≦ai​≦106) ,表示初始数组 aaa 中的元素。

接下来 qqq 行,第 iii 行输入两个整数 pi,xi(1≦pi≦n,1≦xi≦106)p_i,x_i(1≦p_i≦n,1≦x_i≦10^6)pi​,xi​(1≦pi​≦n,1≦xi​≦106) ,表示将 apia_{p_i}api​​ 赋值为 xix_ixi​ 。

输出描述

对于每次更新,如果在更新后不存在好三元组,则输出一行 NONONO 。

否则,在第一行输出 YESYESYES 。第二行输出三个整数 (i,j,k)(i,j,k)(i,j,k) ,代表你找到的好三元组。

您可以以任何大小写形式输出答案。例如,字符串 yEs、yesyEs、yesyEs、yes 和 YesYesYes 都将被视为肯定的回答。

样例1

输入

4 3
2 2 3 10
4 3
1 1
1 6

输出

NO
YES
1 2 3
YES
1 3 4

说明

初始数组 a=a =a={2,2,3,102,2,3,102,2,3,10} 。

第一次更新后,aaa 变为 {2,2,3,32,2,3,32,2,3,3},可以证明不存在好三元组。

第二次更新后,aaa 变为 {1,2,3,31,2,3,31,2,3,3}。(1,2,3)(1,2,3)(1,2,3) 为一个好三元组,因为 max(gcd(a1,a2),gcd(a2,a3),gcd(a1,a3))=max(1,1,1)=1max(gcd(a_1,a_2),gcd(a_2,a_3),gcd(a_1,a_3))=max(1,1,1)=1max(gcd(a1​,a2​),gcd(a2​,a3​),gcd(a1​,a3​))=max(1,1,1)=1 。

第三次更新后,aaa 变为 {6,2,3,36,2,3,36,2,3,3}。(1,3,4)(1,3,4)(1,3,4) 为一个好三元组,因为 min(gcd(a1,a3),gcd(a3,a4),gcd(a1,a4))=min(3,3,3)=3min(gcd(a_1,a_3),gcd(a_3,a_4),gcd(a_1,a_4))= min(3, 3, 3)= 3min(gcd(a1​,a3​),gcd(a3​,a4​),gcd(a1​,a4​))=min(3,3,3)=3 。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 38ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?