qbzt day3 下午(好难)】的更多相关文章

内容提要 有关数据结构的例题 求逆序对数 统计每个数前面有多少比他大的数 开数组表示这个数之前0~9这些数出现了几次 动态将某个点加一,动态求前缀和 用树状数组 如果数太大了怎么办? 离散化 步骤:先把原数组排序,然后unique去重,之后按原数组lower_bound查找 Stars 由于我们是按照y的升序处理这个星星的,所以在处理的时候只需要处理x<=当前给定的x的个数就好了,用前缀和搞一搞,也是树状数组 二维偏序 一维排序 一维树状数组 Queries 直接开m个树状数组,每个树状数组中都…
动态规划 DP和前几天学的东西不大一样,动态规划和数据结构相比是一个非常抽象的东西 先来看看斐波那契数列 定义是F0=0,F1=1,Fn=F(n-1)+F(n-2) 0,1,1,2,3,5,8,13,这个数列的定义域是零到正无穷,他有一个边界条件就是F0=0,F1=1, 我们把这个固定的值叫做边界条件 而看一看Fn=F(n-1)+F(n-2),会发现Fn的值是依赖F(n-1)和F(n-2)的,所以这些就不是边界条件,也就是说,边界条件是不需要计算其他斐波那契数列的值就能得到的 Fn=F(n-1)…
我太菜了 T2 给定一张有向图,每个点有点权.试找到一条路径,使得该路径上的点权最 大值减去点权最小值最大,问这个差最大是多少.   话说这个题第一个想到的思路是tarjan缩点+拓扑排序来着... 这个思路是对的,可惜太难写... 我自己的错误思路就不放上了,   这个题正解竟然是bfs 只需要找出从最大点走到最小点或者从最小点走到最大点就行了 考虑从每个点出发能走到的所有点当中最小的点是多少以及从这个点向回走的的最小值 枚举每一个点作为起点或者终点 答案只有两种情况:min->max    …
预计分数:20+40+30=90 实际分数:40+90+60=190 再次人品爆发&&手感爆发&&智商爆发 谁能告诉我为什么T1数据这么水.. 谁能告诉我为什么T2数据这么水.. 谁能告诉我为什么T3数据这么水.. T1 https://www.luogu.org/problem/show?pid=T15476 比赛开始,果断放弃T1,. 去搞T2 最后还有40分钟的时候回来敲的T1的暴力.. #include<iostream> #include<cst…
农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用. 遗憾的是,有些土地相当贫瘠,不能用来种草.并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边. John想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案) 发现数据范围很小,可以状压…
有向图的强连通分量 强联通:两个点之间可以互相到达 如果某个图任意两个点都是强联通的,那么称这个图强联通 如果一个图的子图是强联通的,那么称这个图是强联通子图 一个图的极大强联通子图被称作强连通分量 有强联通分量意味着环 例:受欢迎的牛 如果有环,意味着这个环里的牛都互相喜欢 我们可以先求出环,然后把每一个环都看作一个点,这样整个图就变成了一个DAG(有向无环图) 看有几个点出度为0,如果大于一个点没有出边,就说明没有最受欢迎的牛 如果只有一个,那么强联通分量的大小就是答案 void tarja…
pks大佬的blog 二叉查找树 任何一个节点左子树的所有元素都小于这个节点,右子树的所有元素都大于这个节点 查找一个节点:从根节点开始,比他小就向左走,比他大就向右走 平衡树:解决二叉查找树的一些痛点. 二叉查找树的问题:它的形态并不固定,查找非常依赖于深度 通过一种叫做伸展的操作,让树的深度不那么深 那么什么是伸展? 伸展操作基于一个元操作:旋转(rotate) 如果一个节点之前被访问过,那么之后访问到它的几率会变大 通过旋转把这个点移到根,使下一次访问到它只需要o(1)的时间 Splay操…
内容提要 堆 lca(最近公共祖先) st表 hash 并查集 树状数组 线段树 数据结构 1.堆 Priority_queue 他滋兹:插入删除查询最大值(最小值) 分为大根堆小根堆 2.LCA 首先我们有一棵树,定义某个点的祖先为这个点到根节点的路径上的所有点 我们现在有两个点A,B,我们发现A和B有一些公共的祖先 我们只需要找到最近的公共祖先LCA,就可以找到它们所有的公共祖先 LCA一定是最深的公共祖先 步骤: 如果A的深度小于B的深度,就把它们互换(为了处理方便) 把A向上调到和B同样…
内容提要 高精 矩阵 筛法 先是高精除法 注意细节 高精度开方:神奇的竖式 以小数点为分界线,每两个位砍一刀 87654.321-->08|76|54|.32|1 大概就是先对第一位开方,然后相减,将上面的数乘二十,看看加多少再乘多少正好不能撑爆剩下的数,就在上面写几,重复操作就ok 原理是: (a*10+b)^2=a^2+2*a*10*b+b^2=a^2+(20*a+b)*b 竖式算开平方步骤:(如:把625开方) (1)先把被开方的数由右到左每二位一组.(6,25) (2)由左到右取每一组.…
PKUWC 2019 自闭记 Day -1 考前天天在隔壁的物竞教室划水(雀魂,能和吉老师一起玩的游戏都是好游戏),没有做题. Day 0 早上8:16的高铁,到广州南居然要6个小时...不知道福州和广州这么近的距离是怎么做到高铁这么久的..高铁上和一群去THU的同学(6个人只有我一个PKU,就是这么真实)约好了打奶牛的Pt组,结果因为开了 \(MN\) 个 deque 导致直接MLE也是迷的一批,对STL的内存管理产生了怀疑,糟糕的迹象. 准时到达了广州,又花了一个小时在高速前往中山的路上,有…