上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 41 下一页
摘要: 传送门 用dijkstra比较好,spfa可能有的重复 dis[x][2]:dis[x][0]表示起点到x的最短路、dis[x][1]表示起点到x的次短路; tot[x][2]:tot[x][0]表示起点到x的最短路条数、tot[x][1]表示起点到x的次短路的条数; vis[x][2]对应于x和0 阅读全文
posted @ 2017-05-20 18:45 zht467 阅读(193) 评论(0) 推荐(0)
摘要: 传送门 真是诡异。 首先 O(n * 100 * 100) 三重循环 f[i][j] 表示到第 i 个柱子,高度是 j 的最小花费 f[i][j] = min(f[i - 1][k] + abs(k - j) * c + (j - a[j]) * (j - a[j]) (1 <= k <= 100) 阅读全文
posted @ 2017-05-20 15:41 zht467 阅读(164) 评论(0) 推荐(1)
摘要: 传送门 个数 1 2 3 4 5 答案 1 4 9 16 25 做差 1 3 5 7 9 显然增加一个数只需要增加 ton[a[x]] << 1 | 1 即可 减去一个数也减去这个 注意先加减再更新 ton ——代码 1 #include <cmath> 2 #include <cstdio> 3 阅读全文
posted @ 2017-05-19 20:19 zht467 阅读(129) 评论(0) 推荐(0)
摘要: 传送门 莫队基础题,适合我这种初学者。 莫队是离线算法,通常不带修改,时间复杂度为 O(n√n) 我们要先保证通过 [ l , r ] 求得 [ l , r + 1 ] , [ l , r - 1 ] , [ l - 1 , r ] , [ l + 1 , r ] 的效率是O(1)的 对于莫队的理解 阅读全文
posted @ 2017-05-19 19:36 zht467 阅读(190) 评论(0) 推荐(0)
摘要: 传送门 BZOJ上是权限题,洛谷赞啊。 求区间 K 大数很简单。 但是如果修改某个数的话,那么就得把这个数及后面所建的主席树都更新一遍 nlogn,显然不行。 所以可以在外面套一个树状数组来优化,树状数组的每一个节点都表示某个区间的主席树。 所以可以通过树状数组来求前缀和主席树。 具体实现看代码。 阅读全文
posted @ 2017-05-19 16:09 zht467 阅读(140) 评论(0) 推荐(0)
摘要: 传送门 看到这个题有个很暴力的想法, 可以每一个时间点都建一颗主席树,主席树上叶子节点 i 表示优先级为 i 的任务有多少个。 当 x 到 y 有个优先级为 k 的任务时,循环 x 到 y 的每个点,都插入一个 k。 当然这样肯定完蛋。 x 到 y 插入一个优先级为 k 的任务? 想到差分,给时间点 阅读全文
posted @ 2017-05-18 20:27 zht467 阅读(197) 评论(0) 推荐(0)
摘要: 传送门 至少BZOJ过了,其他的直接弃。 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为小于x,且最大的数) 5.查询k在区间内的后继(后继定义为 阅读全文
posted @ 2017-05-18 14:56 zht467 阅读(208) 评论(3) 推荐(0)
摘要: 传送门 支持操作: 1.区间加 2.区间翻转 3.区间求最大值 splay模板 注意:update 里更新 max 时需要取 3 个值的 Max 别忘了各种边界讨论 ——代码 1 #include <cstdio> 2 #define ls son[now][0] 3 #define rs son[ 阅读全文
posted @ 2017-05-17 21:12 zht467 阅读(179) 评论(0) 推荐(0)
摘要: 传送门 很蒙蔽,不知道怎么搞。 网上看题解有说可以哈希+二分搞,也有的人说用Manacher搞,Manacher是什么鬼?以后再学。 对于这个题,可以从矩阵4个角hash一遍,然后枚举矩阵中的点,再二分半径。 但是得考虑边的长度为奇偶所带来的影响。 比如 1 1 1 1 这个边数为偶数的矩阵显然没法 阅读全文
posted @ 2017-05-16 20:34 zht467 阅读(188) 评论(0) 推荐(0)
摘要: 传送门 二维哈希即可。 注意质数选的大一些,不然会超时。 还有插入的时候不判重居然比判重要快。。 ——代码 1 #include <cstdio> 2 int main() 3 { 4 int i = 10; 5 while(i--) puts("1"); 6 return 0; 7 } O不,错了 阅读全文
posted @ 2017-05-16 16:15 zht467 阅读(251) 评论(0) 推荐(0)
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 41 下一页