ABC351讲解

ABC351

A:

题意

思路:

直接按题意模拟,求出 ΣAΣB 再相减便是差,因为要获胜所以再 +1 即可。
代码

B:

题意

思路:

直接按照题意 N2 枚举即可。
代码

C:

题意

思路:

直接按照题意模拟即可。
代码

D:

请 lrx 讲解。

F:

题意

思路:

题意十分简单,就是求 Σi=1NΣj=i+1Nmax(ajai,0) 直接暴力做是 O(N2) 的不可通过。
考虑优化,转化为对于每一个 i,1iN[i+1,N] 中大约等于 Ai 的总和减去 [i+1,N] 中大于等于 ai 的个数乘 ai
即:Σj=i+1NS+=[aj>ai],Σj=i+1Ns+=[aj>ai]aj 那么结果应该加上 sS×ai
但是直接做仍然是 O(N2) 的,所以可以用权值线段树进行优化,但是因为 ai108 所以直接线段树行不通,得先离散化后再用权值线段树实现。
具体的:令权值线段树上的每一个点 iti 表示 i 这个值出现的次数,si 表示 ti×i 那么访问的时候就可以访问 Σranki+1N 的总和了。
权值线段树的代码
不难发现可以用平衡树做,平衡树的代码
因为是单点修改,区间查询,所以可以用权值树状数组实现,权值树状数组代码

posted @   tomxi  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示