哈尔滨东北赛总结

来源:互联网 发布:源码投稿 编辑:程序博客网 时间:2024/03/29 12:56

总结:
1.模板易出错。不能照搬照抄,应该结合题目考虑问题
2.不确定的一定要和队友讨论。
3.平时应该多敲题,增强代码能力。思考时间缩短。
4.学习知识要深入,不能浅尝辄止!
A.判断一个数是否小于5。水题,但是看了很长时间才敢开始写
心得:题干最后一段&&数据量大小有助于解题
B.更改矩形内某点权值,求矩形点的和。二维树状数组。
心得:对于数据量没有认真查看,一开始用二维线段树导致超时,其实用一维线段树即可。
C.倒三角内每个位置有一个数字。选取该数字的前提是选取以该数字为倒三角顶点的倒三角内所有元素。求选取m个数字的数字最大和是多少?
貌似是dp,暂时没有想到准确解法。
线索:若某个数不选,可以把问题转化为两个子问题。但是如此dp会超时。
D.求nu=1sumnv=1wuwvwlca(u,v)
结论:以点x为lca的顶点集就是x的任意两个子节点的子树中任取两个元素构成的集合
求若干数集中任意两个元素的乘积和:逐次累加求和
推广:求以某点为lca的任意两点的权值积之和
E.计算几何题。队友做的,不清楚做法
F.
G.求(x,m)的第k大/因子或求x和m的第k大约数。对于固定的x有多组m询问
1.求出x的所有素因子 sqrt(n)
2.将素因子中整除m的加入优先队列(小值优先)logn*logn
3.取出队头元素a,将x的所有素因子分别于a相乘,整除m的再次加入优先队列。
4.重复操作3共k次,找到(x,m)的第k小因子 k*logn*logn
总复杂度:O(sqrt(n)+q*k*logn*logn),n为x,m的取值范围

拓展1:求n的第k大因子,复杂度:O(sqrt(n)+k*logn*logn)
拓展2:求与n互素的第k大数
想法:二分答案。
1.求n的所有素因子{pk}
2.二分答案m,求1-m中与{pk}互素的数的个数——公式:m(11/p1)(11/p2)...(11/pk)(该公式有限制条件:m和n的素因子相同!,如果不相同的话不能使用该公式,只能用容斥原理进行计算,复杂度O(n*logn))
总复杂度O(sqrt(n)+logn)

H.矩形内有一些障碍物。求依次经过矩形内k个点的最短路径。存在一些细节上的限制。
错误原因:
1.代码上没有考虑障碍和剩余k-1个顶点的区别
2.代码上没有考虑初始点和限制点重合的情况
总结:特殊情况需要单独考虑,否则容易引起错误!
I.大数乘法。模板中int改成最好longlong,否则容易爆int
J.树上每点标记为0/1。定义平衡路径:路径上0和1的个数相等。求前缀和最大的平衡路径。
树的点分治。经过和不经过重心的路径
K.

0 0
原创粉丝点击