复习!

把作过的题争取都看一遍,弄明白出现过的全部问题,省一不是问题!算法

 

具体一点的话,那就把黄题及以上写一下思路吧。(按题号)windows

2019年11月6日数组

Y P1017进制转换 将一个整数装变成某负进制 类比正进制的转换,手写一下负数的模运算(整数模运算后判负加至非负)框架

Y P1020导弹拦截 用单调队列求最长上升子序列(nlogn),同位置下元素越小越优;最少多少条不降低子序列 <=> 最长降低子序列(Dilworth定理函数

Y P1022计算器的改良 模拟 统计等号左右两边常数和和系数和,而后移项、同分。注意退出循环的条件。wo字符串处理是真的弱啊。。优化

Y P1024一元三次方程求解 根据零点的性质(变号)求便可,由于题目中已经告诉解间的距离。注意区间移动时要避免在边界处重合!spa

Y P1025数的划分 搜索|dp 原来写的搜索,如今一看先想到了dp 50ms -> 10msf[第几个数][上一个是什么][用了多少了]感性的理解上应该还能够再减枝、加记忆化。code

Y P1057传球游戏 环上的dp。注意边界的处理,区分n与m的意义!blog

2019年11月7日排序

Y P1071潜伏者 模拟,题意要求每一个字母都至少出现一次
Y P1076寻宝 模拟
Y P1090合并果子 贪心|哈夫曼树 因为没有位置影响因此不用dp
Y P1091合唱队形 正反向各一遍求出每一个点在两意义下的lis,最后O(n)求答案

Y P1111修复公路 并查集||最小生成树 最先联通时间,能够最小生成树求到每点的最短期,也能够把边按时间排序用并查集链接求.并查集代码更短.

Y P1113杂务 拓扑排序求最长链 拓扑图dp,按顺序更新就好了.

(黄题写不完了,先看蓝题吧)

2019年11月12日

B货车运输 树lca 树上路径具备可并性质的信息可用rmq维护

B火柴排队 逆序对|贪心 相同rank的匹配差值才最小,因此求a序列元素相对位置在b序列相对位置映射中的逆序对

B聪明的质检员 二分答案×前缀和 每次二分出W后都求一遍前缀和,看似麻烦实则省去了相交区间的大量重复运算;前缀和不是直接保存最终答案,而是加速问题中重叠部分的求解,至于每一个区间的长度最后乘上便可,复杂度不变。

B HH的项链 树状数组|前缀和 为了处理重复只求一遍的问题采起了离线按右端点排序和记录每一个位置的上一个相同颜色位置每次遇到一种颜色进行一次单点减和一次单点加的策略

B 斗地主 搜索 尽可能减小搜索树的浅层的分支能够更快找到答案,从而更好得进行最优化剪枝

B 关押罪犯 并查集 采用二倍数组或额外一个数组来维护对立关系。二倍数组更方便

B 矩阵取数游戏 dp+高精度 对于相互独立的行分别进行dp求解,最后合并答案。高精度要熟练!

B 最优贸易 spfa×dp 最短路模型的dp,将转移方程改成到节点的最小价格便可。注意无权图的Edge结构体不要写上wi,不然死得很惨!!

B 国王游戏 贪心×高精 列式后设量,交换相邻两项 消除同类项,根据性质排序。高精除!

B 灾后重建 Floyd 本质是Floyd,只是便外层循环为时间顺序。考察对Floyd的理解。

B 小木棍 搜索剪枝 框架:一根拼完再搜下一根  剪枝:长棍不行短棍凑出的相同长棍也不行;先搜长棍再搜短棍能够减小搜索树在浅层的分支;同一根棍从小向大搜;只有长度是总长的因子才可能成为答案

B 垃圾陷阱 线性dp 维度之间的转化,数组值只有0/1感性理解上会有些浪费。

B 银河英雄传输 加权并查集!!

 1 int find(int x){
 2     if(fa[x] == x)return x;
 3     int rt = find(fa[x]);
 4     d[x] += d[fa[x]];
 5     return fa[x] = rt;
 6 }
 7 
 8 void merge(int i,int j){
 9     int x = find(i),y = find(j);
10     fa[x] = y;
11     d[x] = size[y];
12     size[y] += size[x];
13 }

d[]距根的距离,size[]子树大小。合并时新儿子的距离更新为父亲大小,而后将新儿子的大小加到父亲上。路径压缩时先更新祖先再更新本身的信息。

B 星球大战 并查集 正难则反:正着拆集合很差维护就倒着并集合。看准了数据范围!

B 最大数 线段树|单调栈+二分 用线段树维护区间最大值,新加点至关因而add(++cnt);可是对于这道题来讲由于只要查询自右端点开始一段区间的最大值,因此位置偏左而值又偏小的元素必定不如位置靠右且更大的元素,所以能够维护一个单调递减的单调栈,每次在栈中二分位置便可。

B 瑞瑞的木棍 欧拉回路+字典树 区分欧拉路。欧拉路的条件是每一个点都有偶数个度或有且仅有两个奇数度的点;欧拉回路的条件是每一个点都是偶度。这就好了?联通才有欧拉路!!

B 无序字母对 欧拉路 若是图联通且全部点的度数均为偶数或有且仅有两个点为奇数度,则存在欧拉路。若存在欧拉路,则若存在奇数度的点那么就从奇数度的点出发不然从任一点出发dfs便可获得欧拉路。求字典序最小只要贪心的选就行了。联通是欧拉路的必要条件!

B 矩形 二维前缀和 边界上的点数=大矩形-内部小矩形。这道题应该是评错了...

号外:512Mb = 2^9Mb = 2^19Kb = 2^29B = 2^32bit ≈ int a[(int)1e8] "两年oi一场空,mle见祖宗..."

B 平均数 二分+sliding windows模型判断 与s[i-m]取min就能保证序列的长度大于等于m。

B [模板]最长公共子序列 要注意题目,但不要被误导。。由于给出的是一个排列,因此至关于在b序列上求a序列映射的lis。

B 砝码称重 dfs×01背包 如题,搜索到每一个状态后dp更新答案。

B 通往奥格瑞玛的道路 二分+dijkstra ”通过城市中最多一次收费的最小值“经典的二分题的表述。二分后不走比mid更贵的点,而后吧减的血看做长度跑最短路便可。

B 路径统计 最短路 再开一个数组统计到每一个点的最短路的方案数,而后根据加法原理递推便可。

B 跑路 倍增+Floyd 观察到n很小,边权都为一,而跑路器又是跑2的指数次方,因此直接建邻接矩阵存点与点的可达性,再多出一维来存边长到了2的几回方便可(2^k 只能由2^k-1+2^k-1而不能由2^k-1+2^k-2推来)。由于不管是多少次方都在相同时间内跑完,因此最后合并为一个矩阵。最后怎么跑都无所谓了。这道题的关键在于要想到开矩阵处理新的长边。

B 翻转游戏增强版 加不增强都差很少。无非就是裸的爆搜过不去罢了。观察性质发现只要第一行肯定了,整个局面就肯定了。因此之枚举第一行的状态便可。推而广之:若某一部分能够决定整个局面,那么不妨暴力枚举这个部分,而后判断造成的局面合不合法。

B 黑匣子 对顶堆 对顶堆不只能够求中位数,还能够在线求排名为i的数。只要改变两个堆的大小就好了。

B 斐波那契数列 矩阵快速幂 对于n ≤ 10^10^6 或 2^63这样的数据范围时,要想到矩阵快速幂是一个log级别的算法。

B 车站分级 拓扑排序 向等级变化的方向连边,而后拓扑排序求最长链(最长链是大小关系连续单调变化的最长段即最小级数)

B 消息扩散 tarjan缩点 taijan的裸题好像都评蓝了..入度为0的强连通份量必定且只须要它们获得消息,入度不为零的点就能够从他们入度的源头拿来消息了。因此答案就是入度为0的scc数目。

B 维护序列 线段树×标记+标记区间和 挺裸的...先乘再加,这样下放标记时只要将两标记都乘一下就行了。不然加标记下放的处理会使子节点的乘标记成为实数。

B 选课 树形dp 树上的背包,再每一个节点上跑它子树的01背包便可。

B 二叉苹果树 树形dp 状态是f[root][减去几个] = 这个子树中的最大苹果数

B 食物链 并查集 三种个关系,三倍数组维护便可。状况颇有限,不要疯狂无脑取模。。分类讨论可使代码更清晰。。

1 if(find(u) == find(v)||find(v+n) == find(u))ans++;
2 else{
3     fa[find(u+n)] = find(v);
4     fa[find(u+n+n)] = find(v+n);
5     fa[find(u)] = find(v+n+n);
6 }

B [模板]nim游戏 博弈论 各堆数目异或和为零的局面行动者必败。这类题要分析每种状态分别能够转移到那些状态,若能够转移到必败态则该状态为必胜态,若不能转移到必败态则该状态为必败态,有点必要充分条件的意味。

B 取石子游戏 威佐夫博弈 

直接说结论了,若两堆物品的初始值为(x,y),且x<y,则另z=y-x;

记w=(int)[((sqrt(5)+1)/2)*z ];

若w=x,则先手必败,不然先手必胜。

——摘自洛谷题解

结论题...证实真心看不懂,隐隐约约感受这种题能够看成图论题dfs去拿部分分,可是这种玄学的式子谁能在考场上推出来啊。。

B 消防局的设立 树形dp 很典型,一道与其余树形dp套路不彻底同样的题。第二维存到根节点的距离(-2~2),是树形dp的另外一种模型吧

B 解方程 秦九韶算法 观察式子性质,充分利用计算机的长处,递归求解秦九韶算法。考上少遇到这种题要想办法把式子变造成利于求解的形式。

B 骑士精神 ida* 下限为与目标的区别个数。注意ida*预估函数必定要优于答案,不然可能致使答案被预估后没法取出。

B 受欢迎的牛 scc 显然一个联通块内的牛地位是平等的。惟一的出度为0的scc中的牛就是明星,由于他们除了所在scc内的牛都不喜欢,因此其余牛都不可能成为明星;又由于只有这么一个,因此其余牛都只能指向这个scc,因此这个scc的大小即为答案。

B 叠积木 加权并查集 同银河英雄传说,题意差很少,代码都差很少。。

B 最短路 最短路 题目和算法同样,,只要注意过程当中不要取模就行了,必定要看明白是取模后最大仍是最大的取模输出。

2019/11/13

B 二进制方程 并查集+高精 相同字母表明的含义相同,因此将相同的字母放到同一集合中,表示含义相同(这里把字母拆成长度个元素)。最后每一个集合均有两种选择,乘法原理乘出答案。整道题中只有最后输出答案时用到了高精度,因此无需写结构体,直接数组模拟便可。

P2513...

2019年11月14日

B P2513 逆序对数列 前缀和优化dp 表面上看起来是构造,实则是dp.f[i][j] = 方案数(i:考虑到第i个数,j:逆序对数)

B 校园网 tarjan缩点 每加一条边均可以使一个入度为0的点和一个出度为0的点合法,因此答案为两种点数目的较大值.此处有一坑点——若整张图强连通,那么仅有一个出入度均为0的点,此时不须要加边,可是直接去取max会取出1来,因此要特判过去。。

B 冗余道路 tarjan缩点 每加一条边能够消去两个非法点,每一个非法点至少须要一条边,故最终答案为(n+1)/2;

相关文章
相关标签/搜索