【Day3】【纪中OJ】2019.1.25C组每日总结

  • 游记
    • Morning
    • Afternoon
    • Evening
  • 备忘知识点
    • 匈牙利算法
    • 离散化
    • 堆(堆排序)
  • 相关链接

游记

Morning

【Before 8:00】 起得很晚,赖了20分钟(大概是因为昨天晚上FB了)
【Before 11:00】 发觉没有C组赛,码昨天题解中。。。
【Before 12:00】 听各位大佬重讲昨天的题解(只有第1题没重讲,是我太弱了吗)

题号 题目 讲题人
2 【东莞市选2008】幻灯片 LZC(小六大佬强无敌 )
3 【东莞市选2008】导弹 CJJ(第一个A掉第三题的大佬)
4 【东莞市选2008】医院 FY(SSL的女大佬都这么强的吗)

码匈牙利时因为过于真实被大佬LYF吊了一顿,报复时还被XC抓了。

Afternoon

【Before 14:00】 心情糟糕,在宿舍FB了一个中午
【Before 17:00】 听XC讲堆,困得一匹,我为什么来听会了的堆。。。
【Before 19:00】 洗了澡,开心(误)

Evening

【Before 20:00】 终于补完了昨天的题解
【Before 22:00】众人FB中—(隔壁三个大佬把扫雷玩成见刀插刃游戏)
大家FB的都很开心呢(很神奇XC没来过,来一次就得GG ) 就我一个人码了一整天题解嘤嘤嘤~~~
【21:38】XC姗姗来迟
【All Day】 看着隔壁大佬PRJ腐败了小说一整天,分数没变化 、


备忘知识点

匈牙利算法

【定义】匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法。匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。
【讲解】我们可以把每一个城市看成人

首先,我们先按升序连线

当连到大佬LYF时,我们发现LYF的凤姐被大佬PRJ抢了。这时,我们先看大佬PRJ还可以连微笑狗,可微笑狗被大佬CNH连了,我们可以发现大佬CNH还可以连如花,就把如花给大佬CNH,把微笑狗腾出来给大佬PRJ,把凤姐腾出来给大佬LYF。

最后把蒟蒻ddk与工口小萝莉连接。

此时,所有右边的女生(?)都已经连完了,这就说明匹配成功。


离散化

【定义】离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。要掌握这个思想,必须从大量的题目中理解此方法的特点。例如,在建造线段树空间不够的情况下,可以考虑离散化。
【讲解】离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
原数据:1,999,100000,15;处理后:1,3,4,2;
原数据:{100,200},{20,50000},{1,400};
处理后:{3,4},{2,6},{1,5}。
有些数据本身很大, 自身无法作为数组的下标保存对应的属性。如果这时只是需要这堆数据的相对属性, 那么可以对其进行离散化处理。当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。
例如:
91054与52143的逆序对个数相同。
设有4个数:
1234567、123456789、12345678、123456
排序:123456<1234567<12345678<123456789
=>1<2<3<4
那么这4个数可以表示成:2、4、3、1
使用STL算法离散化编辑的思路是:先排序,再删除重复元素,最后就是索引元素离散化后对应的值。
建议配合T2幻灯片及某大佬博客进行食用


堆(堆排序)

【定义】堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
【概念】将初始待排序关键字序列(R1,R2…Rn)构建成大顶堆,此堆为初始的无序区
将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,…Rn-1)和新的有序区(Rn)
由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,…Rn-1)调整为新堆,然后再次将R[1]与无序区最后一个元素交换,得到新的无序区(R1,R2…Rn-2)和新的有序区(Rn-1,Rn)。不断重复此过程直到有序区的元素个数为n-1,则整个排序过程完成
下图来张教材的图,是整个堆排序的过程: 整个过程的核心就是先初始化大顶堆,将最大数(堆顶)的放到堆的最后一个, 堆长度-1, 继续调整成大顶堆,直至有序序列为len(array_list)-1。
------------------------------------------------------一条WA的分界线----------------------------------------------
给定一个列表[16,7,3,20,17,8],对其进行堆排序。
首先根据该数组元素构建一个完全二叉树,得到

然后需要构造初始堆,则从最后一个非叶节点开始调整,调整过程如下:
第一步: 初始化大顶堆(从最后一个有子节点开始往上调整最大堆)


20和16交换后导致16不满足堆的性质,因此需重新调整

这样就得到了初始堆。

第二步: 堆顶元素R[1]与最后一个元素R[n]交换,交换后堆长度减一
即每次调整都是从父节点、左孩子节点、右孩子节点三者中选择最大者跟父节点进行交换(交换之后可能造成被交换的孩子节点不满足堆的性质,因此每次交换之后要重新对被交换的孩子节点进行调整)。有了初始堆之后就可以进行排序了。

第三步: 重新调整堆。此时3位于堆顶不满堆的性质,则需调整继续调整(从顶点开始往下调整)


重复上面的步骤:








这就是堆的基本操作了,建议配合P3378堆食用


相关链接

多么崭(fu)新(bai)的一天啊!纪中网吧实锤了。。。。。。

【Day3】【纪中OJ】2019.1.25C组每日总结相关推荐

  1. 欢乐纪中某A and B组赛【2019.1.23】

    前言 翻车的更惨 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 292929 20 ...

  2. 2019-08-12 纪中NOIP模拟赛B组

    T1 [JZOJ4879] 少女觉 题目描述 "在幽暗的地灵殿中,居住着一位少女,名为古明地觉." "据说,从来没有人敢踏入过那座地灵殿,因为人们恐惧于觉一族拥有的能力- ...

  3. 2019-08-01 纪中NOIP模拟赛B组

    T1 [JZOJ2642] 游戏 题目描述 Alice和Bob在玩一个游戏,游戏是在一个N*N的矩阵上进行的,每个格子上都有一个正整数.当轮到Alice/Bob时,他/她可以选择最后一列或最后一行,并 ...

  4. 【纪中集训2019.3.25】芬威克树

    题目 描述 ​ ​ 第一段代码正确第用\(k\)进制\(BIT\)维护了前缀和: ​ 第二段代码由于写错了\(line \ 4\),所以意义发生了改变: ​ 维护第二段代码执行\(ADD(x,v)\) ...

  5. 【纪中集训2019.3.12】Mas的仙人掌

    题意: ​ 给出一棵\(n\)个点的树,需要加\(m\)条边,每条边脱落的概率为\(p_{i}\) ,求加入的边在最后形成图中仅在一个简单环上的边数的期望: \(1 \le n \ , m \le 1 ...

  6. 【纪中集训2019.3.20】铁路

    题意 描述 现在有一颗树形状的双向铁路,每条边的行驶时间是\(1\): 给出\(m\)条列车行驶的路径\(s_{i}\to t_{i}\),问列车相遇的对数(无序对): \(i和j\)号列车相遇当且仅 ...

  7. 【纪中集训2019.3.26】动态半平面交

    题目 描述 : 给出强制在线参数\(k\),树的大小\(n\),和每个点的点权\(a_i\); 有\(m\)个询问,每个询问是$u ,d $ 的形式: 表示询问\(u\)为根的子树中,和\(u\)的距 ...

  8. 【纪中集训2019.3.30】星辰大海

    题目 描述 ​ 有\(n\)个点\(p_1 ,p_2 , \cdots ,\,p_n\) : ​ 现在\(p_1\)不见了,可能的横纵坐标范围是\([-10^6,10^6]\): ​ 同时需要保证每三 ...

  9. 【纪中集训2019.3.15】恶熊咆哮

    题目 描述 有\(n\)只熊,初始时坐标为\((x_i,y_i)\): 这些熊会按照标号依次吼叫,当第\(i\)只熊吼叫,其他熊会移动: \((x_i,y_i)\)会移动到\((x_i \pm 1,y ...

最新文章

  1. Android Java使用JavaMail API发送和接收邮件的代码示例
  2. Clone Detective java home
  3. 简述大数据的数据管理方式_智能销售服务商荣登TOP100榜,大数据线上获客方式再得认可...
  4. 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍
  5. java rmi 使用管道_使用Java RMI时要记住的两件事
  6. 06512oracle数据库,ORA-06512 – 专业Oracle数据库恢复,或许是您恢复数据的最后机会@phone:13429648788 - 专业Oracle数据库恢复技术支持...
  7. SQL中Case语句用法讨论
  8. Tomcat URL重写
  9. python历史5分钟数据_python每5分钟从kafka中提取数据的例子
  10. C#基于两种需求向图片添加水印
  11. uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码...
  12. 用geoda软件进行空间自相关分析示例
  13. vld检测不输出_原创干货 | 基于机器学习的webshell检测踩坑小记
  14. ffmpeg转码视频
  15. 矩阵分解:特征值分解、SVD分解、舒尔分解、谱分解
  16. 联想G480安装CentOS有线驱动
  17. 线段树的简单实现(引入lazy_tag)
  18. Flutter按钮添加背景图片及文字
  19. 解决node-sass下载失败问题
  20. SqlServer 调优的几个关键的步骤--sp_lock,sp_who

热门文章

  1. 随笔:读书笔记 --《见识:商业的本质和人生的智慧》
  2. Google OR-Tools(六) 装箱问题 Bin Packing
  3. 自选项目--手机锁屏软件--NABC分析
  4. 985毕业的“搬砖人”,从“挂科废材”到程序员,这样的意外崛起,他到底经历了什么?
  5. 使用Java实现上传图片到七牛云
  6. FusionCharts Demo
  7. 1 C++ 11 新特性
  8. inter幻影峡谷安装ubuntu18.04
  9. alt 和 title 的区别
  10. 微信客服功能是否支持手机端?