ABC 362
模拟。
小技巧:用 pair
来处理类似问题很方便
题意: 给定三个不共线的点, 判断这三个点生成的三角形是否是直角三角形.
考虑向量法。把三个点两两相减找到构成三角形的三条边所对应的向量,然后用向量点乘的方法判断是否存在两条邻边垂直。
题意: 给定 n 个数对 (Li,Ri), 问是否能构造 {An}, 使得 ∀i∈[1,n], Li≤Ai≤Ri, 有 ∑A=0. 并给出构造方式.
性质:
-
首先发现令 Ai=Li 时, 所得的和 ∑A 必然最小.
-
同理令 Ai=Ri 时, ∑A 必然最大.
-
以性质 1 的条件为初始状态, 若干次进行操作“对于某个 i 满足 Ai<Ri, Ai 自增 1”, 可以使得 ∑A 遍历 [Li,Ri] 中的所有数.
因此,以下关系成立
能构造 Ai, 使得 ∑A=0 ⇔ Li≤0≤Ri
至于构造方式呢,直接模拟遍历过程即可
题意: 既有点权又有边权的单源最短路径. (权值非负)
对于一条完整的路径,我们把每一条边的终点的点权转到这条边上,就可以直接在边权上跑了。
比如说对于一条边 (u,v,w), val[u], val[v], 我们建边的时候这样建就行了:
add_edge(u,v,w+val[v]);
add_edge(v,u,w+val[u]);
然后直接 dijkstra
跑一遍就行了,注意不要忘了加上 val[1] 的贡献。
题意: 给你 {an}, 对于所有的 k∈[1,n], 求出 {an} 中长度为 k 的等差数列的数量. (元素组成相同但位置不同算作不相同)
考虑 O(n3) 的 dp.
-
设 dpi,k,gap 表示以第 i 个元素作为结尾时可以构造的长度为 k 公比为 gap 的等差数列的个数.
-
先 O(n2) 枚举 k=ai−aj(i>j), 然后可以从 dpj,k,gap 刷表到 dpi,k+1,gap
-
边界条件 dpi,1,gap=1, 刷表的同时赋值即可.
注意取模。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验