无聊随手翻,翻到了一个这样的好东西——据结构的提炼与压缩:

为了防止以后忘记,这里把论文里的题目都纪录一下吧。

1.二维结构的化简

问题一:ural 1568 Train car sorting

定义一个对序列的操作:将这个序列分成两个,然后首尾连起来(我知道我描述得不清楚,自己想一下就好),例子:5 3 2 4 1分成3 4 15 2,然后变成3 4 1 5 2

求将一个排列变成一个升序序列需要进行的操作次数。

我觉得不需要像论文一样弄一个什么母矩阵。我觉得可以给一个序列中每个元素一个高度(其实本质还是一样的,囧),比如5 3 2 4 1就有

5---
-3-4
--2-
---1

我们要让最高的高度越小,并且每一行都是一个升序序列。

然后论文就给出了一个算法,但没有说怎样思考得来的。这个算法确实很美妙。什么,你问我算法是什么?在论文里。时间复杂度:\(O(n \log n)\)

问题二:CEOI 2007 Day 2 Necklaces

我就觉得这题就是一个Trie的进化版。

2.树形结构的化简

问题三:浙江2007年省选 捉迷藏

将树变成括号序列。

比如这棵树:

我们可以得到一个这样的序列:[A[B[E][F[H][I]]][C][D[G]]]

考察两个结点,如E和G,取出介于它们之间的那段括号编码 :]{()()}]()[[
把匹配的括号去掉,我们看到\(2\)个]和\(2\)个[,也就是说,在树中,从E向上爬\(2\)步,再向下走\(2\)步就到了G。

对于介于两个节点间的一段括号编码S,可以用一个二元组\((a,b)\)描述它,即这段编码去掉匹配括号后有\(a\)个]和b个[

这样,就得到了一个十分有用的结论:
当\(a2<b1\)时\((a,b)= (a1-b1+a2, b2)\),当\(a2 \geq b1\)时\((a,b)=(a1, b1-a2+b2)\)。
由此,又得到几个简单的推论:
\(a+b=a1+b2+|a2-b1|=max((a1-b1)+(a2+b2),(a1+b1)-(a2+b2))\)
\(a-b=a1-b1+a2-b2\)
\(b-a=b2-a2+b1-a1\)

然后就可以用线段树搞搞了。时间复杂度:\(O(n \log n)\)

问题四:2005年国家集训队何林论文 树的统计

问题描述:给定一棵含有\(n\)个节点的树,所有的节点分别编号为\(1, 2, 3, …, n\)。对于编号为\(v\)的节点,定义\(t(v)\)为\(v\)的后代中所有编号小于\(v\)的节点个数。求\(t(1), t(2), t(3), …, t(n)\)。

这题的算法太美妙了!

我们求这棵树的DFS序和逆DFS序。

DFS序:7 10 14 2 13 1 9 11 6 5 8 3 15 12 4
逆DSF序:7 4 3 12 15 9 6 8 5 11 1 10 14 13 2

然后用神奇的加减法就可以得到\(t(v)\)了:
\(t(v)=f(v,\)DFS序列中\(v\)之后的部分\()+f(v,\)逆DFS序列中\(v\)之后的部分\()+f(v,\)\(v\)的所有祖先\()-v+1\)

然后用个栈和树状数组搞搞就算出来了。时间复杂度:\(O(n \log n)\)

其实我觉得可以用DFS序和Splay就可以搞出来了,囧。

问题五:问题二的遗留问题

说实话,我觉得论文里的”超级父亲“好像比较显然。

3.图结构的化简

问题六:ural 1557 Network Attack

给定一个无向连通图,若从中删去两条边能使它不连通,求所有这样的方案的总数。图点数n边数m。

先做一棵DFS树,满足条件的两条边有且只有以下两种情况:

问题七:ural 1569 Networking the “Iset”

问题描述:输入一个无向图\(G=(V,E)\),求这个图的直径最小生成树。

首先有个很有价值的结论:当属的直径长为偶数,树的中心是唯一;当树的直径长为奇数,树的中心是唯二的。

证明:定义:l(v)=max{d(u,.v)|u,v是一个图中的点}。当树的直径为2d。设有一条直径是AB,AB中点是P。一方面,对于任意一个点C,设AB上距离C最近的点位Q,不妨Q在AP上,则CP=BC-BP≤AB-BP=d ,同时AP=BP=d ,所以l(P)= d。另一方面,对于任意一个不是P的点C,设AB上距离C最近的点位Q,不妨Q在AP上,则BC=BP+PQ+QC>d ,所以l(C)>d 。所以,P就是这棵树的唯一的中心。

奇数同理。

然后我们可以枚举中心了,之后来一个BFS树即可。

转载于:https://www.cnblogs.com/wangck/p/4444601.html

NOI08冬令营 数据结构的提炼与压缩相关推荐

  1. 数据结构笔记_34 赫夫曼编码压缩、解压文件

    前言:自己压缩的文件哭着也要解压出来~~

  2. 数据结构--三角矩阵的压缩存储

    三角矩阵 三角矩阵的常用压缩方式有两种: 线性压缩 使用三角形的二维数组压缩 线性压缩存储三角矩阵 下三角矩阵: 上三角矩阵: 以下三角矩阵的线性压缩存储为例,进行实现: package pers.z ...

  3. 【数据结构与算法】压缩矩阵的Java实现

    每个单元的元素--三元组 public class Element {/*** 行*/private int row;/*** 列*/private int column;/*** 非0元素值item ...

  4. [ZJOI2007]Hide 捉迷藏

    [ZJOI2007]Hide 捉迷藏 小岛的博客 黄学长的博客 NOI08 冬令营论文 <数据结构的提炼与压缩> 这个问题竟然还能用线段树做,拿小本本记下来. 转载于:https://ww ...

  5. 国家集训队论文分类整理[转]

    国家集训队论文分类整理 转自这里 dalao写的东西,是非常有学习价值的.反正noip不一定会用,但是对以后肯定有用的. 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用&g ...

  6. 【转】国家集训队论文分类

    呵呵- -,今天觉得看论文是不错的注意,于是就这样做了.先是整理. 转载地  : 点击打开链接 组合数学 计数与统计 2001 – 符文杰:<Pólya原理及其应用> 2003 – 许智磊 ...

  7. 国家集训队论文分类整理

    国家集训队论文分类整理 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化思想在统计问题中的应用> 2007 - 周冬 ...

  8. 国家集训队论文分类整理(转)

    国家集训队论文分类整理 ----------转自https://www.cnblogs.com/AbandonZHANG/archive/2012/07/21/2601889.html 距离ACM/I ...

  9. 图论专题1(网络流)

    推荐阅读: 网络流基础知识和Dinic:http://www.cnblogs.com/SYCstudio/p/7260613.html#3848907 建模:https://www.cnblogs.c ...

  10. noi国家集训队论文分类

    组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化思想在统计问题中的应用> 2007 - 周冬:<生成树的计数及 ...

最新文章

  1. 每日一皮:生活永远在鼓励你...
  2. oracle数据库优化--基本概念
  3. 台大林轩田《机器学习基石》系列课程教材的习题更新完毕了
  4. QDoc包括代码内联includecodeinline
  5. 使用HTML5实现刮刮卡效果
  6. 前端学习(2143):webpack的config.js配置和package.json
  7. vue ---- 动态组件
  8. 浙大首届人工智能本科生9月入学,纳入竺院图灵班
  9. 40. 若一个类是函数子,则应该使它可配接
  10. 【UVA10562】Undraw the Trees(括号表示法输出树+fegts读取)
  11. 父类构造函数与子类构造函数的关系
  12. centos 7 安装pip
  13. 免费体验手机版MSN2.0
  14. 中兴交换机8912E配置
  15. 极化SAR图像特征提取与分类方法研究
  16. 3D环绕音乐单页网站源码
  17. 天天向上答案python_天天向上的力量python(举一反三)
  18. 数据结构 创建结构体学生表 c语言
  19. 用户输入日期利用python简单实现农历转阳历功能(1901-2099年之间)
  20. 灭屏流程 - 安卓R

热门文章

  1. android eclipse 运行项目设置程序默认安装到sd卡,Android eclipse 运行项目设置程序默认安装到SD卡...
  2. java各版本之间的差异_Java 8-13版本功能差异一览指南 - marcobehler
  3. python install_[Python] Linux下python install
  4. c++除法保留小数_BigDecimal 加减乘除、保留小位数
  5. ebay 后台HTML有尺寸宽度要求吗,eBay牛仔裤成为尺码问题重灾区,卖家上架需注意这几个方面...
  6. java--小示例:-1:输入判断信息
  7. python处理json数据(复杂的json转化成嵌套字典并处理)
  8. linux线程的理解,linux线程与进程的理解
  9. 词云python灿烈,Python jieba分词、词云、文件读取、函数调用、匿名函数
  10. 人月神话阅读笔记(2)