(图腾这题做的我头疼 233)

记 f(xxxx) 为 xxxx 出现的次数,那么题目就是要求 f(1324) - f(1243) - f(1432)

最有难度的是把上面的式子转化一下,变成 f(1x2x) - f(14xx) - f(12xx) + f(1234)

这点除非对 f 的求法能一眼看出来,否则很难想到

后两个比较简单一点

f(1234) 可以想到用动规求

具体来讲,设 dp[i][j] (i≤n, 1≤j≤4) 表示第 i 个数后面接 j 个上升序列

这样转移就是 dp[i][j] = dp[k][j] + dp[k][j-1],其中 k 是一个满足 a[i] < a[k],i < k 的下标,k 可以用线段树求

然后就是求 f(12xx)了

利用类似的求法,首先维护一下每个点右边有多少点大于自己,这点用树状数组即可

然后维护一下上面的前缀和,这样就可以计算 f(12xx) 了

也就是用两层树状数组

至于 f(1x2x) 的求法理解起来并不难

按照高度从小到大把每个点放到原序列中去,不妨设当前点是 2

可以确定空位置比当前点大,而且当前点比之前放入的点大

那么为了使用计数原理需要求出空位置的数量

既然之前的点都比当前点小,假设左边点的下标集合为 S,当前点为 j

对于 S[i],我们希望知道 S[i] 到 j 有多少空位置

联想到区间和,又可以用树状数组啦

当然 |S| 可能会很大,既然这样干脆再套一层树状数组得了

这样就求出 f(1x2x) 了

f(14xx) 就变得玄学一点了

利用类似上面的思想,把原序列从左到右放入一个排好序的序列

假设当前的是 4,那么排序序列里 4 左边的数都是 1

中间的空白就是原序列后面的 xx

然后假设 1 的下标是 i,4 的下标是 j,需要求 (j-i) * (j-i-1) / 2

也就是 (j-i) * (j-i) - (j-i)

令 r[i] 表示下标为 i 的数右边空白的数量

那么上面的式子就是 (r[i] - r[j]) ^ 2 - (r[i] - r[j])

拆开, r[i] ^ 2 + r[j] ^ 2 - 2 * r[i] * r[j] - (r[i] + r[j])

考虑左边的所有 1,那么要求的就是 sum { r[i] ^ 2 - r[i] } - sum { r[i] } * r[j] * 2 + ( r[j] ^ 2 - r[j] ) * ( #1 )

于是维护 r 与 r ^ 2 的区间和就好了

这题就这样解决啦

转载于:https://www.cnblogs.com/HailJedi/p/9302278.html

[CTSC2008]图腾totem相关推荐

  1. 重走长征路---OI每周刷题记录---12月6日 2014

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

  2. 游戏开发程序员可能会遇到的英文单词

    增加和减少 增加: increase, 简写为: incr 减少: decrease, 简写为: decr 为什么gun被翻译为枪而不是铳 铳是金字旁, 枪是木字旁 明明应该翻译为铳更为合适, 为什么 ...

  3. UIPower视觉设计 - 《UI的革命》文字版

    小编的话:时间一晃已经到了2013年的元旦,距过去的2011年10月份UIPower启动的<a href="http://www.uipower.com/peixun/"&g ...

  4. (3-3)Unity3D/项目:游戏常用英文命名

    1.角色属性类: 角色 Character 力量 Strength 耐力 Stamina/Patience 智力 Intellect 免疫力 Immune/Immunity 生命力 Hit Point ...

  5. totem 解码器_从Ubuntu中的Totem电影播放器​​清除历史记录

    totem 解码器 If you've been using the default movie player in Ubuntu to play videos, you might have not ...

  6. 交错TCM图腾柱无桥PFC仿真

    TCM图腾柱即临界模式图腾柱,也叫CRM图腾柱或BCM图腾柱. 与交错CRM BOOST PFC一样,本仿真同样使用电压模式恒导通时间控制,其仿真可分为功率电路.COT与环路控制.过零检测与起振信号. ...

  7. 单片机IO输出,上拉下拉电阻,图腾柱,线与

    在讲上拉下拉之前先,先讲讲什么是强1强0,高阻态,弱1弱0: 图一 如图可见:所谓强1,就是output直接接到vcc上,这样可以保证output后的器件的高电平识别门限,输出电平逻辑可以保证为1:同 ...

  8. Fedora 7 播放器totem

    说实话,我喜欢这个东东,简约而不简单.我以前一直用mplayer,不过还是喜欢totem的长相.很多人说不能播放,可以这么做,让它支持全部(用mplayer的codecs): (1)首先将系统已有的t ...

  9. linux主机电影源码,求::totem电影播放机源代码!!!!

    相思爱文 于 2011-01-07 10:40:48发表: [i=s] 本帖最后由 相思爱文 于 2011-1-7 10:41 编辑 [/i] google搜索totem 排行第一位的网站就是 下载地 ...

最新文章

  1. 甘肃关于领取软考2021年上半年合格证书的通知
  2. VS一直停留在“正在还原nuget程序包”
  3. 该文件夹包含名称过长且无法放入回收站的项目_微软复活20年前生产力工具PowerToys,填补Win10缺失功能,开源且免费...
  4. mysql5.7.17免安装版_MySql 5.7.17免安装配置
  5. [转]asp.net 动态添加多附件上传
  6. 〖Demo〗-- 计算器
  7. 计算机硬件调查PPT,调查报告 ppt
  8. 分布式存储系统学习笔记(二)—分布式文件系统(2)—淘宝文件系统(TFS)
  9. TB6612驱动电机
  10. Mysql中的straight_join
  11. 【杂篇 · 电脑】买R9000P以来遇到的解决的和未解决的问题汇总
  12. 论文阅读:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018)
  13. 转一位计算机牛人的心得,谈到计算机和数学,很实用~
  14. 女生在IT计算机行业适合什么工作
  15. 【云原生】-Docker快速搭建免费的WordPress博客平台
  16. 设计-由OOiNN设计师精心设计的每一个姓氏的印章
  17. 解决insmod error inserting 'hello ko' -1 Invalid module form
  18. 上海“网红流浪汉”你站住!To B人有话对你说~~~
  19. 移动端H5(JavaScript)识别二维码功能
  20. js 三大家族(offset/scroll/client)

热门文章

  1. console java_Java Console writer()方法与示例
  2. rust种的南瓜为什么老是消失_冷天早餐别将就,用南瓜和萝卜这样做,鲜香松软,营养好吃又管饱...
  3. C语言之scanf中的格式
  4. ffmpeg简单使用小记
  5. 【Computer Organization】The Core Design Thinking of single cycle CPU
  6. 【汇编语言】王爽第六章程序6.3解答,8086汇编语言实现数据的倒序存放
  7. Leetcode 124.二叉树中的最大路径
  8. java将字节数组转换成字符串,面试心得体会
  9. 【转】Java Socket编程基础及深入讲解
  10. Asp.net MVC模型数据验证扩展ValidationAttribute