摘要: 第一个subtask应该还是很送分的,就是每次询问两端值的大小,(N+1)/2次即可。 考虑第二个subtask,首先还是先把最小值和最大值询问出来,然后发现不需要询问每一个数,直接将[l+1,r-1]均分成N-1个区间,因为最长区间长度一定不小于平均值,所以应该会跨越两段,若在某一段内有值即可直接 阅读全文
posted @ 2019-05-22 20:54 hfctf0210 阅读(178) 评论(0) 推荐(0) 编辑
摘要: sub1:ans=a*b%c,龟速乘即可。 #include <stdio.h> #include <stdlib.h> unsigned long long a, b, c, d; unsigned long long mul(unsigned long long a,unsigned long 阅读全文
posted @ 2019-05-22 19:17 hfctf0210 阅读(502) 评论(0) 推荐(1) 编辑
摘要: 看到平均值一眼分数规划,二分答案mid,边权变为w[i]-mid,看是否有长度在[L,R]的正权路径。设f[i][j]表示以i为根向下j步最长路径,用长链剖分可以优化到O(1),查询答案线段树即可,复杂度O(nlog2n) 不知为什么bzoj上RE,luogu上AC,暂时不管了。 #include< 阅读全文
posted @ 2019-05-22 14:43 hfctf0210 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 对于操作1,显然可以使用主席树维护,然后对于一条链(x,y),假设lca为f,根为rt,则(rt,x)+(rt,y)-(rt,f)-(rt,fa[f])即为所求的链,在主席树上直接查询即可,查询方式类似于treap/splay对size的询问。 对于操作2,可以用LCT,当然也能启发式合并,每次连边 阅读全文
posted @ 2019-05-22 10:20 hfctf0210 阅读(159) 评论(0) 推荐(0) 编辑
摘要: A*板子题。我的code只能在luogu上过,bzoj上RE/MLE不清楚为啥。 蒟蒻到AFO前2个月不到的时间才学A*,A*其实就是bfs过程中进行剪支删除没必要的搜索。然后其实上这样剪支即可:如果从当前答案+从当前走到1的最短路比已有的最优解更劣,无需扩展次节点。然后k短路中,估价函数=当前节点 阅读全文
posted @ 2019-05-22 09:15 hfctf0210 阅读(207) 评论(0) 推荐(0) 编辑