学习
HYYyyying
try and try hard
展开
-
最短路/次短路/K短路
最短路题目:poj1511题意:n个点m条边的有向带权图,求1到所有点的最短路+除1的所有点的最短路只和。**一开始的思路:**没注意n,m的范围(1e5),先来一波1到n,再来一波2-n到1,愉快的t了。正解: 需要特别处理的是2-n到1的最短路,一开始确实没想到,这里感谢涛涛的讲解!处理的话,就是把边反向建一下,再跑一遍1到所有点的的最短路,就可以了。我是**#include <stdio.h>#include <string>#include <strin原创 2021-07-31 19:43:32 · 154 阅读 · 0 评论 -
树状数组与ST表
树状数组与ST表动态:树状数组 静态:ST表树状数组:cnt=x二进制末尾0的个数,数组d[x]存储了2^cnt个数。查询:比如13,13 = 1101,只存储了一个数a[13],现在,求13这个位置的前缀和:(有几个1分为几部分)分为三部分: (每次都是抹掉最后一个1,log级别的)1101 d[13] 2^01100 d[12] 2^21000 d[8] 2^3单次查询复杂度logn修改:修改一个节点的值,就要修改覆盖他的节点的值。怎么得到最后末尾的1位置在哪?(原理,补码啥的原创 2021-05-02 21:11:57 · 95 阅读 · 0 评论 -
Array Transformer-分块思想
OIwiki上讲的很好题目题目链接给三个数字n, m, u,接下来给长度为n的数组,给m次操作,每次操作输入四个数l, r, v, p,每次操作在[l, r]这个区间里计算严格小于v的的个数,个数记为k,然后将a[p]的值修改为u * k / (r - l + 1)。操作完成以后要求输出a数组。解决如果暴力做的话,会很不优雅的t掉…m范围是1e4, 1 <= l, r <= n(3e5),复杂度就3e9…所以需要优化一下…(一开始想了下线段树,也还是8星,哈哈我是傻逼 )我们这时候原创 2021-04-26 18:00:05 · 210 阅读 · 0 评论 -
已知先序遍历中序遍历,求树的层序遍历
PTA-玩转二叉树 (25 分)给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。样例71 2 3 4 5 6 74 1 3 2 6 5 7输出4 6 1 7 5 3 2。已知先序遍历,那么根节点就是按顺序给出的,f[0]即为根节点,从先序遍历得到根节点root,去中序遍历中找到这个root,root左边即为root的左子树,root的右边即为root的右子树。#in原创 2021-04-06 19:59:31 · 947 阅读 · 0 评论