给定 n,m,k,任务是构造出一个长度为 n,值域为 [1,k] 的单调不减数组 a,满足给定的 m 条限制(分为 3 种):
Type 1: ai≠x。
Type 2: ai+aj≤x。
Type 3: ai+aj≥x。
1≤n,m≤2⋅104,1≤k≤10,2≤x≤2⋅k。
简单 two-sat 题。
数据范围中 k≤10,值域很小,考虑拆点。
考虑将数组中的每个数拆成 ≤1,≤2,…,≤k,>1,>2,…,>k。
记 (i,j,0) 为表示满足 ai≤j 的点,(i,j,1) 为表示满足 ai>j 的点。
- 根据定义,若 ai≤j,则 ai≤j+1,所以增加限制 (i,j,0)&(i,j+1,0)。
- 根据定义,若 ai>j,则 ai>j−1,所以增加限制 (i,j,1)&(i,j−1,1)。
- 根据单调不减的条件,若 ai>j,则 ai+1≥ai>j,所以增加限制 (i,j,1)&(i+1,j,1)。
- 对于第一种限制,ai 要么 ≤x−1,要么 >x,所以增加限制 (i,x−1,0)&(i,x,1)。
- 对于第二种限制,若 ai≤t,则 aj≤x−t,所以枚举 t,然后增加限制 (i,t,0)&(j,x−t,0)。
- 对于第三种限制,若 ai>t,则 aj>x−t−2,所以枚举 t,然后增加限制 (i,t,1)&(j,x−t−2,1)。
最后跑一遍 two-sat 求出答案。
总时间复杂度 O(nk)。
双倍经验加强版题面 Topcoder SRM Div1, LV3 NeverAskHerAge。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】