线段 指针309f abc

线段树练习

# Ⅰ.差分与前缀和 ## P2184 贪婪大陆 **题意** :给定防线长度 $n$ 和操作次数 $m$, 每次在 [$l$ ,$r$] 内布下一种雷,查询区间雷的种类数。 **分析** : 用线段的方式表示区间布的雷 : ![](https://cdn.luogu.com.cn/upload/i ......
线段

C++ --- 智能指针

一、智能指针存在的意义 智能指针主要解决以下问题: (1)内存泄漏:内存手动释放,使用智能指针可以自动释放。 (2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题。 C++里面有四个智能指针:auto_ptr、share_ptr、unique_ptr、weak_ptr。其中后三个是C ......
指针 智能

AT_abc243_g [ABC243G] Sqrt题解

题目大意 有一个数列,初始时只有一个数 \(X\)。你可以对它进行一种操作:设末尾的数为 \(Y\),从 \(1 \sim \sqrt{Y}\) 中选一个数加到数列的末尾。如此进行 \(10^{100}\) 次操作,问数列一共有多少种可能的状态。 解法 考虑 DP。 设 \(dp_i\) 表示以数字 ......
题解 243 AT_abc 243G Sqrt

AT_abc243_g [ABC243G] Sqrt题解

题目大意 有一个数列,初始时只有一个数 \(X\)。你可以对它进行一种操作:设末尾的数为 \(Y\),从 \(1 \sim \sqrt{Y}\) 中选一个数加到数列的末尾。如此进行 \(10^{100}\) 次操作,问数列一共有多少种可能的状态。 解法 考虑 DP。 设 \(dp_i\) 表示以数字 ......
题解 243 AT_abc 243G Sqrt

abc097d<并查集,排列>

题目 D - Equals 给出\(1\sim n\)的排列p,给出\(m\)种对换\((p_i, p_j)\),在这\(m\)种对换中任选操作,对原排列对换任意多次。求能够实现的\(p_i = i\)的最大个数为多少? 思路 将m中对换中能够相互关联的位置归为一组,这组位置之间可通过对换操作实现任 ......
abc 097 lt gt

abc096d<素数筛,整除>

题目 D - Five, Five Everywhere 寻找n个素数,使得这n个素数中任意5个数之和都是合数。 思路 如果一个数除5余1,那么5个这样的数之和一定能被5整除; 筛出范围内所有满足上述条件,且为素数的数即可。 总结 如何想到除五余一这一点呢? 首先应思考如何构造合数,想到如果是5个数 ......
素数 abc 096 lt gt

深入浅出 C 语言:学变量、掌控流程、玩指针,全方位掌握 C 编程技能

C 语言简介 C 语言介绍 C 语言的特性 C 语言相对于其他语言的优势 C 程序的编译 C 中的 Hello World 程序 参考文章: C 语言入门:如何编写 Hello World C 语言函数:入门指南 学习变量、数据类型和运算符 C 中的变量和关键字 C 语言中的作用域规则 C 中的数据 ......
深入浅出 指针 变量 全方位 流程

【C语言】指针

指针的定义 如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元,按变量地址存取变量值的方式称为直接访问,如printf("%d",i);和scanf("%d",&i);;另一种存取变量值的方式称为间接访问,即将变量i的地址存放到另一个变量中,在C语言中,指针变量就是用 ......
指针 语言

快慢指针解决环形链表

可知首先要判断是否有环,然后给出目标的位置。 slow指针走一步,fast指针走两步。当这两个指针都进入环时,fast指针相当于slow指针只走了一步,因此肯定两者会相遇。 但这只是相遇点,不是环起始点,但根据计算可知,此时都以同样的单位速度时,再相遇时就可以得到相交点。 点击查看代码 class ......
快慢 环形 指针

吴师兄学算法day06 双指针 485. 最大连续 1 的个数

题目:485. 最大连续 1 的个数 易错点: 代码示例: class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: cnt = 0 max_cnt = 0 for i in nums: if i == 1: ......
指针 师兄 算法 个数 day

abc095d<思维>

题目 Static Sushi 一个圆桌上摆着n个食物,吃掉每个食物得到一定能量,沿着圆桌任意顺时针逆时针走,每走一米消耗1点能量,求能够得到的最大能量。 思路 一共4种走法: 顺时针走到某位置离开; 逆时针走到某位置离开; 顺时针走,而后走回原点,在逆时针走到某位置,离开; 逆时针走,而后走回原点 ......
思维 abc 095 lt gt

abc094d<组合数>

题目 Binomial Coefficients \(n\)个数中选择两个数作为组合数\(C(m,r)\)的\(m\)和\(r\),使得组合数的值最大。 思路 首先选择最大的数作为\(m\); 其次,对于确定的\(m\),要使得组合数最大,使得\(r\)接近\(\left \lceil \frac{ ......
abc 094 lt gt

吴师兄学算法day06 双指针 80. 合并两个有序数组

题目:80. 删除有序数组中的重复项 II 易错点: 为什么是slow-2? 因为有序 当slow -1 说明与上一个相等,当slow-2说明与上一个相等,并且上上一个也相等,就说明已经有3个相等的了。此时要跳过。 不相等说明要么是第一次出现,要么是第2次出现。出现新的,此时我记录一下 代码示例: ......
数组 指针 师兄 算法 两个

abc333F - Bomb Game 2

abc333F - Bomb Game 2 设\(f_{i,j}\)表示在有i个人的队列中,第j个人成为第一个的概率。 \(f_{n,1}=\frac{1}{2}f_{n,n}\) \(f_{n,2}=\frac{1}{2}f_{n-1,1}+\frac{1}{2}f_{n,1}\) ... \(f ......
333F Bomb Game abc 333

指针的定义--应用场景

1 指针的本质 1.1-指针的定义 如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元。在C语言中,指针变量是一种特殊的变量,它用来存放变量地址。指针变量的定义格式如下:基类型 *指针变量名。 另外注意:指针变量加1后,偏移的长度是其基类型的长度,例如int *p; ......
指针 场景

吴师兄学算法day06 双指针 26. 删除有序数组中的重复项

题目:26. 删除有序数组中的重复项 易错点: 为什么不可以写大于nums[slow] 因为会出现多个[0,1,2,2,...]情况 代码示例: from typing import List class Solution: def removeDuplicates(self, nums: List ......
数组 指针 师兄 算法 day

abc335F - Hop Sugoroku

abc335F - Hop Sugoroku 首先容易想到\(O(n^2)\)的dp 考虑优化,对于一个i,只会对满足\(i+a[i]*x=j\)的j有贡献。 也就是j%a[i]=i%a[i] 那么我们可以延迟转移,用cnt[a[i]][i%a[i]],来记录贡献, 然后我们数组不可能开那么大,所以 ......
Sugoroku 335F abc 335 Hop

吴师兄学算法day06 双指针 88. 合并两个有序数组

题目:88. 合并两个有序数组 易错点: 注意 判断i合法,不可以写if nums[i] 会下标越界 掌握好边界条件,num1[i] 和nums2[j]大于或者大于等于都可以。 代码示例: class Solution: def merge(self, nums1: List[int], m: in ......
数组 指针 师兄 算法 两个

7引用-右值引用-引用结合const和指针

引用 引用和指针的区别 引用是一种更安全的指针。 引用必须初始化,指针可以不初始化。引用初始化为另一个同类变量,特殊情况下可初始化为常量。 引用只有一级,没有多级引用。 从汇编指令层面看。对引用的处理,是采用指针的方法。因为引用是一种const指针。通过引用变量修改所引用内存的值,与通过指针解引用修 ......
指针 const

李超线段树

李超线段树 李超线段树是一种求函数定点最值的线段树,思路高妙,用处也很广。 以模板题为例。 P4097 [HEOI2013] Segment 有 \(n\) 个操作,操作分两种。 在平面上加入一条线段,两端端点为 \((x_0,y_0)\) 和 \((x_1,y_1)\),第 \(i\) 条被插入的 ......
线段

ABC 等多个系统 每个系统下有多个附件

public class Main { public static void main(String[] args) { List<Map<String, String>> systems = new ArrayList<>(); // 系统A Map<String, String> systemA ......
多个 系统 下有 附件 ABC

abc314e<构造,思维>

题目 D - Grid Components 在不超过100×100的方格中染黑白色,使得白色联通块个数为a,黑色连通块个数为b。 思路 固定使用100×100的格子,首先将上半部分全涂白,下半部分全涂黑;此时黑白两色的连通块的个数均为1; 而后在白色区域,在不破坏白色区域白色块联通性的前提下,离散 ......
思维 abc 314 lt gt

ABC335

T1:2023 模拟 代码实现 s = input() print(s[:-1]+'4') T2:Tetrahedral Number 模拟 代码实现 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n ......
ABC 335

滑动窗口(双指针的又一应用)

滑动窗口相当于双指针的变形,通过j指向末尾边界,这样遍历就只有O(n)的数量级,再通过i指针作为起始边界,while循环确定最短的长度。因为i j所框定的边界像窗口,所以叫滑动窗口。 用于解决的问题是最优区间的问题,记忆方法是右遍历,左判断,确定最佳区间。 还有一个技巧是可以用INT_MAX表示一个 ......
指针

双指针(1)

目录344反转字符串替换数字反转单词null 344反转字符串 我如果要反转,就是最前面和最后面的字符进行交换, //双指针的应用 class Solution { public: void reverseString(vector<char>& s) { int left=0,right=s.si ......
指针

数组指针

在数组指针中,*和[]的意义是相似的,都是优先降维数在降指针的级数 比如p是一个指向n维数组的一级指针,那么p[][][]就是一个指向n-3维数组的指针,打了n个中括号之后就变成了指向一个点的指针,此时再*一下就变成了了值(或者再括号一下) 如果p是一个指向n维数组的三级指针,那么打了n个中括号之后 ......
数组 指针

ABC332F

ABC332F Random Update Query 题解 AtCoder 在学校打的,切 ABCF 直接摆烂,D 题暴搜调不出来,很难蚌。 给你一个序列 \(a_i\),\(m\) 次操作,第 \(i\) 次将 \([l_i,r_i]\) 区间内等概率随机的一个数修改为 \(x_i\),最后求每 ......
332F ABC 332

C语言 指针偏移量计算

#include <stdio.h> struct s { int a; int b; }; int main() { struct s s1; // (struct s*)0表示0x0作为struct s首地址 // &((struct s*)0)->a代表a地址 // 因为struct s首地址 ......
指针 语言

指针的含义、表示、规范、存储、运用

# 指针的含义表示某个变量或数据所在的内存地址 注意是内存地址 不是内存地址上的数据# 指针的表示一般用指针运算符&和 *表示 其中符号&表示取地址运算符 符号*表示取地址上数据运算符 例如:&value 表示取变量value在内存中分配的地址 *value 表示取变量value在内存中所分配地址上 ......
指针 含义

二分查找法与双指针移动元素

这道题我用的是双指针法,left,right。通过while循环将目标元素全部放后面,left所代表下标就是剩余个数。但是最开始遇到了问题 点击查看代码 class Solution { public: int removeElement(vector<int>& nums, int val) { ......
指针 元素
共2096篇  :1/70页 首页上一页1下一页尾页