ICode9

精准搜索请尝试: 精确搜索
  • #D220712C. 小 C 的序列2022-07-12 15:05:06

    #D220712C. 小 C 的序列 题目描述 小 C 现在得到了两个序列 \(A = {a_1, a_2, ..., a_n}\) \(B = {b_1, b_2, ..., b_m}\)。他想知道对于每个 \(B\) 中 的数 \(b_i\),有多少个 \(A\) 的子序列 \(Al,r = {a_l, a_{l+1}, .., a_r}\) 满足所有数的最大公因数为\(b_i\)。 小 C 觉得 \(A

  • 树的直径与重心学习笔记2022-07-10 13:00:09

    树的直径 定义 在一棵树上(默认无根树),定义 \(\operatorname{Dis}(u,v)\) 表示 \(u\) 到 \(v\) 的最短路径。 树的直径就是 \(\max\{\operatorname{Dis}\}\)。 求法 一般使用两遍DFS打法。(当然,也可以使用树上DP) 首先,任意选一个点 \(w\),从这个点出发,DFS整棵树,然后预处理 \(\operatorn

  • luogu P5064 [Ynoi2014] 等这场战争结束之后2022-07-09 22:04:44

    题面传送门 按秩合并并查集写错复杂度假掉以为自己被卡常卡了好久。 首先这种撤销题看上去就是把操作树建立出来然后dfs变成加入与撤销。 然后我们考虑对值域分块,这样看上去求\(k\)小值会可做一些。 首先我们需要确定每个询问在哪个块,这并不困难。我们考虑在dfs时用并查集维护,并查

  • NC15128 老子的全排列呢2022-07-09 16:03:24

    题目链接 题目 题目描述 老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来1-8的全排序,我就让你喝,这次绝不耍你,你能帮帮和尚么? 输入描述 无 输出描述 1~8的全排列,按照全排列的顺序输出,每行结尾无空格。 示例1 输入 No_Input 输出 F

  • JS/TS算法---状态压缩2022-07-08 22:01:02

    位运算 位运算符 '&'(与),有0则0 '|'(或),有1则1 '^'(异或) ,相同为0,不同为1-----------位运算中常用 '~'(按位取反) ,有1为0,有0为1 '<<' (左移),先求该数的补码,再向左移动右边的位数,空位补0,最高位丢弃,最后将移动后的二进制数转为十进制数 '>>' (右移),先求该数的补码,再向右移动右边的

  • CF1286E Fedya the Potter Strikes Back2022-07-08 16:31:18

    LG CF286E CF286E 考虑增量,每次从上一个字符跳 \(nxt\) 直到符合条件 用一个单调递增的单调栈维护答案集合的权值,将不合法的答案权值弹出后还要将所有的答案和 \(w_i\) 取 \(\min\) ,这个可以考虑将所有一样的权值暴力合并,总的复杂度是 \(O(n\log n)\)

  • 拉格朗日差值学习笔记&做题记录2022-07-06 19:33:18

    好像是多项式最基础的算法(?,但是咕了比较久,现在学一下吧。 差值是啥 这个东西类似于 FFT 的转化过程,就是多项式点值和多项式系数的转化,简而言之就是解决下面的问题,P4781。 已知一个 \(n-1\) 次多项式的 \(n\) 个点值,\(f(x_i)=y_i\),已知 \(k\),求 \(f(k)\bmod 998244353\)。 \(n\le 2

  • 四数之和2022-07-06 18:04:09

       https://leetcode.cn/problems/4sum-ii/solution/si-shu-xiang-jia-ii-by-leetcode-solution/       时间复杂度和空间复杂度都是O(n2) func fourSumCount(a, b, c, d []int) (ans int) { mp:=make(map[int]int,0) for i:=0;i<len(a);i++{ for j:=0;j<

  • 数据结构数组和数据结构链表2022-07-06 13:32:04

    数据结构数组 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数

  • 【题解】CF1438E Yurii Can Do Everything2022-07-06 13:31:57

    我的垃圾做法好像和别人有些不同,分享一下。 题目传送门:luogu,CF。 规定:记序列 \(s\) 表示序列 \(a\) 的前缀和,\(highbit(x)\) 表示数 \(x\) 的最高位,序列 \(a\) 值域为 \(m\)。 首先考虑枚举一个端点找答案,不妨枚举 \(l\),然后寻找枚举 \(r\) 的性质来减少枚举。 考虑左端点 \(l\),不

  • 算法:求两数之和(简单)2022-07-06 12:01:43

    题目: 1. 两数之和 难度简单14757收藏分享切换为英文接收动态反馈 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

  • LGP4365口胡2022-07-06 08:33:13

    上来先留个心眼看看模数是不是质数 是质数啊那没事了 注意到值域和节点数量都相当小。这引导我们去枚举某个节点或某个值。 我们枚举潜入的城市 \(u\),找出 \(d_v\) 比 \(d_u\) 大的所有 \(v\)。 可以知道我们要选的一定是一个连通块,这个连通块中只能恰好包括 \(k-1\) 个 \(v\)。

  • GG 的 普及组 试题2022-07-05 22:02:22

    1.找gg 这个就是直接用字符串做就好了,注意对大小写不敏感,所以要先把所有的大写字母换成小写的(或者倒过来也行)。 时间复杂度是 \(O(n)\) 的。 代码: #include <iostream> #include <cstring> using namespace std ; int n , p[200005] , tot ; char a[200005] ; int main ( ) { c

  • LG5162口胡2022-07-05 20:07:32

    设 \(f[n][m]\) 为将 \(n\) 个有标号元素放入 \(m\) 个有标号集合(不能空) 的方案数。 答案就是 \(\frac{\sum i\times f[n][i]}{\sum f[n][i]}\)。 来考虑这个鬼东西怎么算。。。容易发现 \(f[n][m]=n![x^n](e^x-1)^{m}\)。 那么有 \(n![x^n]\sum_{i=1}^{n}(e^x-1)^{i}=n![x^n]\fra

  • dp 多维状态的分步优化2022-07-05 19:00:58

    面对一个多维 \(\text{dp}\) 问题,根据维度之间联系的紧密程度,我们可以选择 维度之间紧密相关,只能直接枚举 维度之间完全无关,只是贡献通过某种形式相加,可以割裂为两个dp处理 介于 \(1,2\) 之间,不能割裂计算,但是可以将转移过程割裂为若干步来优化 e.g.1: 选区间1 问题描述

  • 朴素筛,埃氏筛,线性筛2022-07-05 11:34:09

    朴素筛:本质就是每一个合数n都可以被2-n-1里的数筛掉,这里就发现了一个问题就是,一个合数可能会被多次筛多次,这步可以进行优化。 埃氏筛:本质就是每一个合数n都可以被2-n-1里的素数筛掉,这里就是对朴素筛进行了优化,因为合数都会被素数筛掉,这样一来确实提升了时间复杂度,但是还是存在

  • 【算法】归并排序2022-07-04 20:33:35

    归并排序是建立在归并操作上的一种有效的排序算法,1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。 一、基本思想 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干

  • 【JS】4.寻找两个正序数组的中位数2022-07-03 15:32:16

    4. 寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2 示例 2:

  • 深入理解时间复杂度2022-07-03 13:37:16

    时间复杂度 O(f(n)) 算法需要执行基本运算的次数的 级别。 一,思考 目前个人认为:时间复杂度实际就是考量两种情况。 1. 循环 for(),while() 2. 递归 二,何为n 理论上指:问题规模。 拆开来说,就是for(),while()循环了n次,递归了多少次(递归的情况略微复杂)。 三,何为f(n) 算法执行基本运算的次

  • 5.27 DP2022-07-03 12:37:58

    loj2772 反物质 正序无法得知最坏情况下当前实验生成的数量,考虑倒序 DP。设 \(f[i]\) 为当前有 \(i\) 个反物质,最坏情况下的最大利润,转移: \[f[i]=\max(10^{9}i,\max_{i+r_{j}\le a}(\min_{k=i+l_{j}}^{i+r_{j}}\{f[k]\}-c_{j})) \]维护 \(n\) 个单调队列即可转移,时间复杂度 \(O(nk

  • 13_跳表(skip list)2022-07-02 10:05:55

    13_跳表 二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。 今天就是对链表稍加改造,使链表也支持类似二分的查找算法,这种改造后的链表结构叫做跳表(skip list)。 Redis中的有序集合(Sorted set)就是用跳表来实现的。 跳表的结构 原始链表结构:  跳表的结构: 那怎么来提

  • NC16663 [NOIP2004]合并果子2022-07-02 10:03:20

    NC16663 [NOIP2004]合并果子 题目 题目描述 ​ 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 ​ 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次

  • LeetCode 518. Coin Change 22022-07-01 17:00:44

    LeetCode 518. Coin Change 2 (零钱兑换 II) 题目 链接 https://leetcode.cn/problems/coin-change-2/ 问题描述 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0

  • python、js快慢指针解决环形链表问题2022-07-01 00:34:15

    题目 leetcode 241题,环形链表。https://leetcode.cn/problems/linked-list-cycle/ 思路 1、哈希表 ​ 建立一个哈希表,每次访问的节点都存储起来。如果某个节点在哈希表中已存在,说明有环。时间复杂度O(n),空间复杂度o(n) 2、双指针之快慢指针 快指针每次移动2个节点,慢指针每次移动1

  • 排序2022-06-30 19:02:29

    1.1 概述 排序是将一组数据,依据指定的顺序进行排列的过程。 排序是算法中的一部分,也叫排序算法。算法处理数据,而数据的处理最好是要找到他们的规律,这个规律中有很大一部分就是要进行排序,所以需要有排序算法。 排序分为:内部排序和外部排序。 内部排序:是将需要处理的所有数据加载到

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有