[CTSC2008]图腾totem
(图腾这题做的我头疼 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相关推荐
- 重走长征路---OI每周刷题记录---12月6日 2014
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- 游戏开发程序员可能会遇到的英文单词
增加和减少 增加: increase, 简写为: incr 减少: decrease, 简写为: decr 为什么gun被翻译为枪而不是铳 铳是金字旁, 枪是木字旁 明明应该翻译为铳更为合适, 为什么 ...
- UIPower视觉设计 - 《UI的革命》文字版
小编的话:时间一晃已经到了2013年的元旦,距过去的2011年10月份UIPower启动的<a href="http://www.uipower.com/peixun/"&g ...
- (3-3)Unity3D/项目:游戏常用英文命名
1.角色属性类: 角色 Character 力量 Strength 耐力 Stamina/Patience 智力 Intellect 免疫力 Immune/Immunity 生命力 Hit Point ...
- totem 解码器_从Ubuntu中的Totem电影播放器清除历史记录
totem 解码器 If you've been using the default movie player in Ubuntu to play videos, you might have not ...
- 交错TCM图腾柱无桥PFC仿真
TCM图腾柱即临界模式图腾柱,也叫CRM图腾柱或BCM图腾柱. 与交错CRM BOOST PFC一样,本仿真同样使用电压模式恒导通时间控制,其仿真可分为功率电路.COT与环路控制.过零检测与起振信号. ...
- 单片机IO输出,上拉下拉电阻,图腾柱,线与
在讲上拉下拉之前先,先讲讲什么是强1强0,高阻态,弱1弱0: 图一 如图可见:所谓强1,就是output直接接到vcc上,这样可以保证output后的器件的高电平识别门限,输出电平逻辑可以保证为1:同 ...
- Fedora 7 播放器totem
说实话,我喜欢这个东东,简约而不简单.我以前一直用mplayer,不过还是喜欢totem的长相.很多人说不能播放,可以这么做,让它支持全部(用mplayer的codecs): (1)首先将系统已有的t ...
- linux主机电影源码,求::totem电影播放机源代码!!!!
相思爱文 于 2011-01-07 10:40:48发表: [i=s] 本帖最后由 相思爱文 于 2011-1-7 10:41 编辑 [/i] google搜索totem 排行第一位的网站就是 下载地 ...
最新文章
- 甘肃关于领取软考2021年上半年合格证书的通知
- VS一直停留在“正在还原nuget程序包”
- 该文件夹包含名称过长且无法放入回收站的项目_微软复活20年前生产力工具PowerToys,填补Win10缺失功能,开源且免费...
- mysql5.7.17免安装版_MySql 5.7.17免安装配置
- [转]asp.net 动态添加多附件上传
- 〖Demo〗-- 计算器
- 计算机硬件调查PPT,调查报告 ppt
- 分布式存储系统学习笔记(二)—分布式文件系统(2)—淘宝文件系统(TFS)
- TB6612驱动电机
- Mysql中的straight_join
- 【杂篇 · 电脑】买R9000P以来遇到的解决的和未解决的问题汇总
- 论文阅读:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018)
- 转一位计算机牛人的心得,谈到计算机和数学,很实用~
- 女生在IT计算机行业适合什么工作
- 【云原生】-Docker快速搭建免费的WordPress博客平台
- 设计-由OOiNN设计师精心设计的每一个姓氏的印章
- 解决insmod error inserting 'hello ko' -1 Invalid module form
- 上海“网红流浪汉”你站住!To B人有话对你说~~~
- 移动端H5(JavaScript)识别二维码功能
- js 三大家族(offset/scroll/client)
热门文章
- console java_Java Console writer()方法与示例
- rust种的南瓜为什么老是消失_冷天早餐别将就,用南瓜和萝卜这样做,鲜香松软,营养好吃又管饱...
- C语言之scanf中的格式
- ffmpeg简单使用小记
- 【Computer Organization】The Core Design Thinking of single cycle CPU
- 【汇编语言】王爽第六章程序6.3解答,8086汇编语言实现数据的倒序存放
- Leetcode 124.二叉树中的最大路径
- java将字节数组转换成字符串,面试心得体会
- 【转】Java Socket编程基础及深入讲解
- Asp.net MVC模型数据验证扩展ValidationAttribute