摘要: 题意:有 n个房间,题目给出两个操作,若 op==1,就输出最靠左的连续空房数量为 x的房间序列的最左边的序号,然后将这些房间改为入住;若 op==2,就将从 x~y的的序列全部改为空房; 解法:线段树+懒标记下传; 1.线段树;题目让在一个很长的序列操作很多次,暴力显然过不了,要用线段树优化; 2 阅读全文
posted @ 2019-08-22 21:04 hfutgy 阅读(123) 评论(0) 推荐(0)
摘要: 题意:有一棵树,树上有多条路径,求任意删去一条边后,所有路径的最长边最小是多少; 解法:LCA+树上差分+二分; 1.LCA;因为要求路径长,所以可以用LCA去优化,减小时间复杂度。 2.树上差分;在每次检查二分值时,要统计重合路径,这个时候就可以用树上差分来降低时间复杂度。 每次将 x,y各+1, 阅读全文
posted @ 2019-08-21 19:27 hfutgy 阅读(109) 评论(0) 推荐(0)
摘要: 主席树相较于普通的线段树而言,它的最大特点在于:动态开点(省空间); 静态主席树的经典题目是[P3834] 静态区间第k小; 具体做法是先建一棵权值线段树,然后对于1~n这个区间,以[1,ai]为一棵树的范围建立一棵权值线段树,这样就建立了n+1棵权值线段树; 而除了一开始建立的第一棵树外,后面新建 阅读全文
posted @ 2019-08-19 21:04 hfutgy 阅读(154) 评论(0) 推荐(0)
摘要: 题意:给出一张地图,有若干个竖直的管道,有一只鸟从地图最左边要飞到地图最右边,每次点击屏幕,小鸟就会上升,若不点击,小鸟就会下降;途中小鸟不能飞(掉)出地图,也不能碰到管道; 求这一只鸟从地图最左边是否能飞到地图最右边,如果能,那么最小的点击次数是多少; 解法:0/1背包+完全背包; 1.0/1背包 阅读全文
posted @ 2019-08-18 11:51 hfutgy 阅读(174) 评论(0) 推荐(0)
摘要: 题意:在一棵树上有多个节点,求让这些军队将所有的从根节点到叶子节点的路径被一个或以上的军队堵住 因为所有军队可以同时移动,所以本题可简化成为:求出所有军队的最长移动时间,并使这个时间最小 解法:二分+贪心+LCA 1.二分;由于题目所给数据非常的大,而且需要对每一种做法都进行检验明显是不行的,所以需 阅读全文
posted @ 2019-08-16 21:51 hfutgy 阅读(223) 评论(0) 推荐(0)
摘要: 题意:本题要求一棵生成树,并使求出的生成树为满足题目要求(sum(路径长度*经过的节点数))的最小值 解法:状压DP+DFS 1.对于树的节点的状态用普通的 vis数组难以表示,所以就用到了状态压缩,可以非常简单明了的表示出已搜索过的树的状态,以便于统计答案,同时可以看到,题目的 n只有 12; 可 阅读全文
posted @ 2019-08-16 21:25 hfutgy 阅读(109) 评论(0) 推荐(0)
摘要: 题意:给出两个字符串,求用第一个字符串中的子串去匹配第二个子串,而且第一个字符串的子串在匹配第二个字符串时要按顺序; 用滚动数组来优化DP,否则会MLE; 设f[i][j][k][0/1]表示是否一定使用了A串中的第 i个字符,并用了A中的 k个子串来匹配 B串中的前 j个字符(0表示一定不用当前这 阅读全文
posted @ 2019-08-16 21:11 hfutgy 阅读(96) 评论(0) 推荐(0)
摘要: 题意:是说在给定的区间内,将所有满足 w_i>W的矿石个数和这些矿石的价值之和乘起来所得的数就是这个区间的检验值 Y_i,然后将所有的 Y加起来,与标准值 S作差,取绝对值与 ans比较,最后得出答案 解法:二分+前缀和; 1.二分:看看题目数据,如果枚举每一个值,并去检验,那么肯定会 T掉;将所有 阅读全文
posted @ 2019-08-16 21:01 hfutgy 阅读(142) 评论(0) 推荐(0)
摘要: 题意:题目给出两个等长的序列,求交换两个序列的最小次数,使两个序列之间的值满足 sum(ai-bi)^2 最小; 解法:归并排序/树状数组+求逆序对 1.归并排序/树状数组:这两种方式都是可以较快地求出逆序对个数 2.求逆序对:因为只有当两个序列相对的数值都是其本序列中的相同等级的数,才能使等式最小 阅读全文
posted @ 2019-08-16 20:53 hfutgy 阅读(174) 评论(0) 推荐(0)