前缀acwing 795

二分——acwing算法基础课笔记

个人笔记,欢迎补充、指正。 此次完全以个人理解来写。 整数二分 整数二分有两种,分别是找左边界和找右边界。 寻找符合要求的左边界:绿色点 int bsearch_1(int l, int r) { while (l < r) { int mid = l + r >> 1;//对应下界,最左 if ( ......
基础课 算法 基础 笔记 acwing

Acwing 840. 模拟散列表

题面: 维护一个集合,支持如下几种操作: I x,插入一个整数 \(x\); Q x,询问整数 \(x\) 是否在集合中出现过 现在要进行 \(N\) 次操作,对于每个询问操作输出对应的结果。 原题链接:840. 模拟散列表 - AcWing题库 哈希表[1] 基本概念 哈希表也叫散列表,通过将键映 ......
Acwing 840

AcWing 802. 区间和

题面: 假定有一个无限长的数轴,数轴上每个坐标上的数都是 \(0\) 。 现在,我们首先进行 \(n\) 次操作,每次操作将某一位置 \(x\) 上的数加 \(c\) 。 接下来,进行 \(m\) 次询问,每个询问包含两个整数 \(l\) 和 \(r\) ,求出在区间 \([l,r]\) 之间的所有 ......
区间 AcWing 802

高维前缀和

对于求高维前缀和,我的理解是在维度数乘总点数的复杂度下求前缀和。 首先可以先看看二维前缀和。 如果使用容斥的方法,像这样: for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ f[i][j]=a[i][j]+f[i-1][j]+f[i][j-1]-f[i-1] ......
高维 前缀

59AcWing 840. 模拟散列表

点击查看代码 #include<iostream> #include <cstring> using namespace std; const int N=200003,null=0x3f3f3f3f; int h[N]; int find(int x){ int k=(x%N+N)%N;//索引 ......
AcWing 840 59

Acwing 5367. 不合群数

题面: 如果一个正整数无法被 \([2,a]\) 范围内的任何整数整除,则称其为不合群数。 请你计算并输出 \([2,b]\) 范围内的最大不合群数。 提示:\(10\) 亿内的最大质数是 \(999999937\),且相邻质数之间的差值均不超过 \(300\) 原题链接:5367. 不合群数 - ......
Acwing 5367

刷题 字典树 LCP(最长公共前缀)

2023.12.5 cf 1902E 字典树的功能 根据字典树的概念,我们可以发现:字典树的本质是把很多字符串拆成单个字符的形式,以树的方式存储起来。所以我们说字典树维护的是”字典“。那么根据这个最基本的性质,我们可以由此延伸出字典树的很多妙用。简单总结起来大体如下: 1、维护字符串集合(即字典)。 ......
前缀 字典 LCP

2023年广东工业大学腾讯杯新生程序设计竞赛不知道叫什么名字(前缀和)

需要的是男生女生数量相同,做个转化,女生变成-1,然后求一遍前缀和,我们希望找到最长的满足\(sum(l, r)=0\)的区间也就是\(sum(r) - s(l - 1) = 0\) 考虑枚举右端点,找到最左端和它相等的sum就是对于当前右端点的最长的。 最开始想了个二分答案的假做法,011100, ......

AcWing 1205. 买不到的数目

题面: 水果糖被包成 \(n\) 颗一包和 \(m\) 颗一包的两种,用这两种包装来组合,不能拆包卖。 在 \(4\) 颗一包和 \(7\) 颗一包的情况下,最大不能买到的数量是 \(17\) 。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 原题链接:1205. 买不到的数目 - ......
数目 AcWing 1205

ACwing342. 道路与航线

这道题是把拓扑排序和迪杰斯特拉交叉进行。 #include <iostream> #include <stdio.h> #include <algorithm> #include <cstring> #include <queue> #include <vector> using namespace ......
航线 道路 ACwing 342

AcWing 836. 合并集合

题面: 一共有 \(n\) 个数,编号是 \(1∼n\),最开始每个数各自在一个集合中。 现在要进行 \(m\) 个操作,操作共有两种: 1、M a b,将编号为 \(a\) 和 \(b\) 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略操作; 2、Q a b,询问编号为 \(a\)  ......
AcWing 836

AcWing 240. 食物链

题面: 有三类动物 \(A,B,C\),\(A\) 吃 \(B\) ,\(B\) 吃 \(C\) ,\(C\) 吃 \(A\) 。 现有 \(N\) 个动物,以 \(1∼N\) 编号,每个动物都是 \(A,B,C\) 中的一种。 用两种说法对这 \(N\) 个动物所构成的食物链关系进行描述: 第一种 ......
食物链 食物 AcWing 240

AcWing 282. 石子合并

题面: 设有 \(N\) 堆石子排成一排,其编号为 \(1,2,3,…,N\),现在要将这 \(N\) 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和。请找出一种合理的方法,使总的代价最小,输出最小代价。 原题链接:282. 石子合并 - AcWing 乍一看上去很像哈 ......
石子 AcWing 282

Acwing 3240. 压缩编码

本题大意: 使用 01 串为单词编码,要求: 1、编码使用前缀码,即任何一个单词的编码不是另一个单词编码的前缀; 2、编码需要按字典序升序排列,比如 \(C\) 的编码的字典序需要 \(D\) 的编码之前。 请找出一种字典序编码,使得文字经过编码后的长度 \(L\) 最小,输出最小长度。 原题链接: ......
编码 Acwing 3240

AcWing 148. 合并果子

题面: 把所有的果子合成一堆:每一次合并,可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。 达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。 假定每个果子重量都为 \(1\),并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少,并输出这个最 ......
果子 AcWing 148

AcWing 839. 模拟堆

题解: 维护一个集合,初始时集合为空,支持如下几种操作: ①I x,插入一个数 \(x\); ②PM,输出当前集合中的最小值; ③DM,删除当前集合中的最小值(数据保证此时的最小值唯一); ④D k,删除第 \(k\) 个插入的数; ⑤C k x,修改第 \(k\) 个插入的数,将其变为 \(x\) ......
AcWing 839

AcWing 149. 荷马史诗

题面: 一部《荷马史诗》中有 \(n\) 种不同的单词,从 \(1\) 到 \(n\) 进行编号。其中第 \(i\) 种单词出现的总次数为 \(w_i\)。用 \(k\) 进制串 \(s_i\) 来替换第 \(i\) 种单词,使得其满足如下要求: 对于任意的 \(1≤i,j≤n\),\(i≠j\), ......
史诗 AcWing 149

AcWing 143. 最大异或对

题面: 在给定的 \(N\) 个整数 \(A1,A2……AN\) 中选出两个进行 \(xor\)(异或)运算,得到的结果最大是多少? 原题链接:143. 最大异或对 - AcWing 什么是异或? 1、相同为 \(0\),不同为 \(1\); 2、\(0\) 和任意数字进行异或,结果为数字本身。 为 ......
AcWing 143

AcWing 835. Trie字符串统计

题面: 维护一个字符串集合,支持两种操作: ① I x 向集合中插入一个字符串 x; ② Q x 询问一个字符串在集合中出现了多少次。 共有 \(N\) 个操作,所有输入的字符串总长度不超过 \(105\) ,字符串仅包含小写英文字母。 原题链接:835. Trie字符串统计 - AcWing Tr ......
字符串 字符 AcWing Trie 835

AcWing 844. 走迷宫 && AcWing 845. 八数码

844. 走迷宫 - AcWing 题面: 给定一个 \(n×m\) 的二维整数数组,用来表示一个迷宫,数组中只包含 \(0\) 或 \(1\),其中 \(0\) 表示可以走的路,\(1\) 表示不可通过的墙壁。 最初,有一个人位于左上角 \((1,1)\) 处,已知该人每次可以向上、下、左、右任意 ......
AcWing 迷宫 amp 数码 844

AcWing 831. KMP字符串

题面: 给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模式串 P 在字符串 S 中多次作为子串出现。 求出模式串 P 在字符串 S 中所有出现的位置的起始下标。 原题链接:831. KMP字符串 - AcWing 核心:next 数组 - 最长相等前后缀 ......
字符串 字符 AcWing 831 KMP

AcWing 92. 递归实现指数型枚举

题面:从 \(1∼n\) 这 \(n\) 个整数中随机选取任意多个,输出所有可能的选择方案(求子集)。 原题链接:92. 递归实现指数型枚举 - AcWing 目录: 使用dfs树的解法 使用二进制与状态压缩的解法 1. 使用dfs树的解法 层级既代表递归深度也代表当前数字,左子树为选该层数字,右子 ......
指数 AcWing 92

AcWing 842. 排列数字 && AcWing 843. n-皇后问题

842. 排列数字(全排列) 题面: 给定一个整数 \(n\),将数字 \(1∼n\) 排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 #include <iostream> using namespace std; const int N = 10; int path ......
AcWing 皇后 amp 数字 问题

AcWing 154. 滑动窗口

题面: 给定一个大小为 \(n≤10^6\) 的数组。 有一个大小为 \(k\) 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 \(k\) 个数字。 每次滑动窗口向右移动一个位置。 你的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。 原题链接:154. 滑动窗口 - A ......
AcWing 154

AcWing 3302. 表达式求值

题面:给定一个表达式,其中运算符仅包含加减乘除,可能包含括号,请你求出表达式的最终值。 原题链接:3302. 表达式求值 - AcWing 基本思路 创建两个栈,分别存储数字和运算符 运算符的判定:仅在以下条件满足时将运算符直接压入栈中: ①栈中不存在元素 ②当前运算符优先级比栈顶高 ③栈顶为左括号 ......
表达式 AcWing 3302

AcWing 826. 单链表

题面:实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k 个插入的数后面的数; 在第 k 个插入的数后插入一个数。 现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。 原题链接:826. 单链表 - AcWing #include<bits/stdc ......
AcWing 826

AcWing 827. 双链表

题面:实现一个双链表,双链表初始为空,支持 5 种操作: 在最左侧插入一个数; 在最右侧插入一个数; 将第 k 个插入的数删除; 在第 k 个插入的数左侧插入一个数; 在第 k 个插入的数右侧插入一个数 现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。 原题链接:827. 双 ......
双链 AcWing 827

AcWing 828. 模拟栈

题面:实现一个栈,栈初始为空,支持四种操作: push x – 向栈顶插入一个数 \(x\); pop – 从栈顶弹出一个数; empty – 判断栈是否为空; query – 查询栈顶元素。 现在要对栈进行 \(M\) 个操作,其中的每个操作 \(3\) 和操作 \(4\) 都要输出相应的结果。 ......
AcWing 828

AcWing 785. 快速排序

题面: 给定你一个长度为 \(n\) 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 原题链接:785. 快速排序 - AcWing 需要注意的几个点: 左右哨兵的发动顺序; 相同元素的相对位置; 边界划分问题[1]。 #include<bits/std ......
AcWing 785

AcWing 5. 多重背包问题 II

题面: 有 \(N\) 件物品和一个容量是 \(V\) 的背包。 第 \(i\) 件物品最多有 \(s_i\) 件,每件体积是 \(v_i\),价值是 \(w_i\)。 求解将哪些物品装入背包,可使这些物品的体积总和不超过背包容量,且价值总和最大。 输出最大价值。 原题链接:5. 多重背包问题 II ......
背包 AcWing 问题 II
共487篇  :2/17页 首页上一页2下一页尾页