01 2025 档案

摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/J 题意: 给定一个长度为n的数组,从中挑选两个数ai,aj(i<j),使其ai xor aj == gcd(ai,aj).求总方案数 思路: 由按位异或运算自反性可知,其实是求 ai xor gcd(ai 阅读全文
posted @ 2025-01-30 16:19 Marinaco 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/M 题意: 给定一个n个元素的数组,为了缩小数组的极差(最大值-最小值),可以选择一个区间并将所有区间值乘以二。问操作后的最小极差为多少 思路: 为了缩小极差,只能去扩大数组最小的元素,次小的元素...(唯 阅读全文
posted @ 2025-01-28 15:28 Marinaco 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/E 题意: 给定一个有n个元素的数组,查询q次。每次选择一个区间从l到r,遵循以下规则 类似于多米诺骨牌,遍历区间元素,轮到ai时,若它前面在区间内元素的总和大于等于ai,那么就可以推倒,反之不可以。 现在 阅读全文
posted @ 2025-01-27 23:54 Marinaco 阅读(7) 评论(0) 推荐(0) 编辑
摘要:build方法(注意将节点编号cnt初始化为1) int cnt; const int maxn=1e6+5; int trie[maxn][26]; int pass[maxn]; int last[maxn]; void build(){ cnt=1; } insert方法(向字典树中插入一个单 阅读全文
posted @ 2025-01-26 23:46 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:节点结构(维护区间和与最大值,最小值) struct node{ int l; int r; int sum; int maxn; int minn; }; const int maxn=1e5+5; int arr[maxn]; node tree[maxn]; build方法 void buil 阅读全文
posted @ 2025-01-25 19:48 Marinaco 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/C 题意: 给定字符串长度n,可爱度为m。询问是否能够构造出一个满足可爱度的string,若可以则输出该string 思路: 首先特判当n<=m时,根据不连续子序列的定义可知不满足条件 由D题可知子串是从1 阅读全文
posted @ 2025-01-25 16:56 Marinaco 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/H 题意: 给定一个矩形(其中左边界x=a,右边界x=b,上边界y=d,下边界y=c),要求在矩形边界选三个点构造一个最大的圆,返回该三点的坐标 思路: 首先要明白不共线的三点确定一个圆,然后发现钝角三角形 阅读全文
posted @ 2025-01-25 16:10 Marinaco 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95334/D 题意: 给定一个由小写字母构成的字符串,要求构造一个关于其的 子串 和 不连续子序列(至少由字符串中分开的两段拼接而成)使其 长度相等并且最大 思路: 假设答案长度取k,如果 子串 取的是 字符串 中间 阅读全文
posted @ 2025-01-24 22:22 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:按位异或运算:相当于二进制不进位加法 按位和运算:二进制 进位处为1 按位或运算:二进制 进位处为1且不进位 (a|b)+(a&b)==a+b a^a==0 a^b=c => a^c=b (aba=a^c => b=a^c )按位异或运算的自反性 由于位运算优先级,每个位运算都尽量要加括号 譬如^运 阅读全文
posted @ 2025-01-24 15:14 Marinaco 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/E 题意: 给定一个长度为偶数的数组,要求将其转化为只有两个元素且两个元素数量相等的数组。每次操作可以将数组元素+1或者-1,求最小的操作次数 思路: 先将数组排序,前一半肯定对应要转化的较小的那一个元素, 阅读全文
posted @ 2025-01-22 11:27 Marinaco 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://atcoder.jp/contests/abc389/tasks/abc389_d 题意: 给定一个半径R的圆。假设 一个铺满了1x1正方形的坐标系 该圆的圆心恰好在一个正方形的中心 请你返回该圆 能包括多少个坐标系中的 1x1正方形 思路: 不妨令正方形中心\圆心为原点 阅读全文
posted @ 2025-01-20 17:07 Marinaco 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://codeforces.com/contest/2060/problem/C 题意: 给定一个长度为n的数组和一个固定数值k。 每轮alice从中选择一个数字并擦除,bob选择一个数值并擦除 如果他们两个选择的数字加起来等于k,那么分数+1 alice要让得分尽量小,bob要 阅读全文
posted @ 2025-01-20 16:10 Marinaco 阅读(29) 评论(0) 推荐(0) 编辑
摘要:用于解决 范围数字和 与 单点增加 问题(复杂度O(logn)) build 方法(构造树状数组) void build(){ for(int i=1,v;i<=n;i++){ cin>>v; add(i,v); } } lowbit方法 (获取一个二进制数最低位的1的状态) int lowbit( 阅读全文
posted @ 2025-01-20 13:05 Marinaco 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接: https://leetcode.cn/problems/longest-common-subsequence/ TLE 暴力递归+记忆化版本(基于字符串长度无优化版本)//注意text1[i1-1]==text2[i2-1] class Solution { public: int d 阅读全文
posted @ 2025-01-18 14:01 Marinaco 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接: https://leetcode.cn/problems/word-search/ 题意: 给定二维char数组,询问是否能够有路径来获得给定的字符数组 无法改为动态规划表 class Solution { public: bool exist(vector<vector<char>>& 阅读全文
posted @ 2025-01-18 12:53 Marinaco 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://ac.nowcoder.com/acm/contest/99785/C 题意: 给定一个数组,操作q次,分别为 标记 和 查询 思路: 将每一个数组值放入集合set中,消除掉已经遍历过的数组值,通过set二分来加速区间遍历 注意: 集合本身就存在二分函数lower_boun 阅读全文
posted @ 2025-01-18 12:04 Marinaco 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/minimum-path-sum/ 题意: 求出在二维grid中不同路径下到达终点的最小值 空压dp版本 class Solution { public: int minPathSum(vector<vector<int>>& gr 阅读全文
posted @ 2025-01-16 16:57 Marinaco 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/UVA11988 题意:给定若干串文本,对于每一个字符串从头开始遍历。如果遇到[ 光标从头开始,如果遇到] 光标从末尾开始。输出处理之后的字符串 思路: 基于STL list的链表的头插法与尾插法 定义迭代器it list 阅读全文
posted @ 2025-01-14 15:59 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接: https://www.luogu.com.cn/problem/UVA442 题意: 给定若干个矩阵表达式,以及涉及到的矩阵的行与列 定义矩阵相乘次数为矩阵1的行数矩阵1的列数(矩阵2的行数)矩阵2的列数 计算每个表达式的矩阵相乘次数(若不满足矩阵乘法规律输出error) 思路: 如何 阅读全文
posted @ 2025-01-14 12:45 Marinaco 阅读(3) 评论(0) 推荐(0) 编辑
摘要:测试链接:https://leetcode.cn/problems/sort-an-array/ 堆结构: 是一颗完全二叉树 分为大根堆和小根堆 大根堆:每一颗子树最大值都在子树的根部 小根堆:每一颗子树最小值都在子树的根部 每一位父亲i的两个孩子的节点位置(若存在)分别为:i*2+1,i*2+2 阅读全文
posted @ 2025-01-14 10:12 Marinaco 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://atcoder.jp/contests/abc388/tasks/abc388_e 题意: 给定一个数组,当数组中一个数的两倍不超过另一个数时,认为这两个数可以组成一对,(组合后这两个数无法再次进行组合),求最大组合数 思路: 如果能条件能满足k对,一定能满足k-1对。同时 阅读全文
posted @ 2025-01-12 11:11 Marinaco 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题目链接: https://atcoder.jp/contests/abc388/tasks/abc388_d 题意: 一共有n个外星人,每当有一个外星人成年后,成年的外星人就要给他一块钱(如果没钱就不给),返回操作后数组 思路: 模拟一下,可以把 数组前面 已经成年的外星人 对下一个刚好要成年的外 阅读全文
posted @ 2025-01-12 10:34 Marinaco 阅读(13) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include<vector> using namespace std; const int maxn=2e5+5; vector<int>graph[maxn];//邻接表 void addedge(int u,int v) { graph[u].empl 阅读全文
posted @ 2025-01-11 19:22 Marinaco 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/course-schedule-ii/description/ 题意: 给定n门课程,规定只有学完某一个课程才能继续学下一门课程,让你输出学习顺序。如果成环,则返回空数组 思路: 拓补排序,入度删除法 需要提前准备一个indegre 阅读全文
posted @ 2025-01-11 19:09 Marinaco 阅读(3) 评论(0) 推荐(0) 编辑
摘要:int n=20;//点的个数 int m=21;//边的个数 const int maxn=25; //邻接矩阵建图 int gra1[maxn][maxn]; void build(int n,int m,int from[],int to[],int weight[]) { for(int i 阅读全文
posted @ 2025-01-11 15:47 Marinaco 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/decode-string/ 题意: 嵌套递归 class Solution { public: int where; string repeat(string path,int cnt) { string ans=""; for( 阅读全文
posted @ 2025-01-11 15:18 Marinaco 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/maximal-rectangle/description/ 题意: 给定一个只有0和1的矩阵,试求只包含1的长方形的最大面积 思路: 每行将矩阵压缩成一个高度数组,转化为求矩形最大面积 class Solution { publi 阅读全文
posted @ 2025-01-11 12:20 Marinaco 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/sum-of-subarray-minimums/ 题意: 给定一个数组,让你求子数组最小值的和,复杂度O(N) 思路: 单调栈(获得每个位置左边比它小且离它最近的数,右边比它小且离它最近的数,那么在这之间它本身就是区间最小值) c 阅读全文
posted @ 2025-01-11 11:02 Marinaco 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/daily-temperatures/ 题意: 给你一个每日气温数组,请你确定每个位置右边是否比自己大的元素,如果无,返回0。否则,返回两者下标之差 思路: 单调栈(这就好似给了数组中每个位置做波峰或波谷的机会)(ps:单调栈一定存 阅读全文
posted @ 2025-01-10 20:22 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:单调栈 用于求解数组每个位置上左边/右边离自己最近的且严格小于/大于自己位置上的数的位置 时间复杂度O(N)(每个元素下标进栈一次出栈一次) 元素下标能表示的含义比元素本身要多 (ps:注意数组长度,过大就要开到全局变量中,否则异常退出orz) 方法(求每个位置上离自己最近且严格小于自己的元素位置( 阅读全文
posted @ 2025-01-10 19:31 Marinaco 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://atcoder.jp/contests/abc384/tasks/abc384_e 题意: 粘液能够吸收比他严格小x倍的格子,并获得这个格子的力量(同时格子被粘液填充),让你求粘液能达到的最大力量值。 思路: 优先队列priortiy_queue. 每次挑粘液上下左右四个格 阅读全文
posted @ 2025-01-09 10:41 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/number-of-islands/submissions/591894989/ 题意: 给你一个01 grid,只有上下左右都有1才能链接成一座岛屿(斜着不算),让你求能连成多少个岛屿 思路: 并查集: 把grid每个坐标转化为数 阅读全文
posted @ 2025-01-08 16:37 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://atcoder.jp/contests/abc387/tasks/abc387_d 题意: 从S点出发,返回到G点所需的步数。每次移动的方向有限制,如果上次是上下移动,那么这次就必须是左右移动。开始时可以从上下左右四个方向开始移动 思路: BFS,分情况讨论,即开始是上下移 阅读全文
posted @ 2025-01-08 13:10 Marinaco 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/permutations/ 思路: 只用题目给的nums数组进行递归,swap进行交换,注意还原现场 class Solution { public: vector<vector<int>> permute(vector<int>& 阅读全文
posted @ 2025-01-08 10:26 Marinaco 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/subsets-ii/submissions/591733085/ 题意: 给你一个数组,输出不同数字的组合(若两个组合都挑一个1,一个2,无论顺序如何,只输出一个) 思路: 先排序,将不同数字分组,再讨论每组选0,1,2,...n 阅读全文
posted @ 2025-01-07 20:57 Marinaco 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://leetcode.cn/problems/minimum-cost-for-tickets/ 题意: 给你一个数组days[]代表旅行的日期,一个数组costs[],可以分别选择1天或7天或30天的票,问你使旅行结束所需要的最低票价是多少 示例 1: 输入:days = [ 阅读全文
posted @ 2025-01-07 19:09 Marinaco 阅读(16) 评论(0) 推荐(0) 编辑
摘要:bool op[2]={false,true}; void dfs(int a,int b) { if(.....)return; for(int i=0;i<2;i++) { if(op[i])..... dfs(a,b+1); } } 阅读全文
posted @ 2025-01-05 14:36 Marinaco 阅读(2) 评论(0) 推荐(0) 编辑
摘要:build方法 void build() { for(int i=1;i<=maxn;i++)father[i]=i; } find方法 int find(int x) { if(x!=father[x]) { father[x]=find(father[x]); } return father[x 阅读全文
posted @ 2025-01-04 14:51 Marinaco 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/P1111 题意: 有n个村,给你m个信息,1个信息包含存在道路的两个村子以及通路的时间,让你求是否每个村子都能相连,若能相连输出通路最短时间 思路: 并查集+排序 在一个集合中的村子能够相互连通,所以就看本来并查集n个独立 阅读全文
posted @ 2025-01-04 13:12 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/P1381 题意:分别给你两个字符串的序列t和序列s,要求你输出在序列s与序列t有多少个相同的字符串,以及相同字符串子串的最小长度 思路: 类似于最小覆盖子串问题 滑动窗口+简单哈希 通过map来存储,序列t中出现的字符串在 阅读全文
posted @ 2025-01-03 15:32 Marinaco 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/P3853 题意:给你一段长度,以及一些分割该长度的路标,允许加上k个路标让路标间距离变小,让你求两个路标之间最大的距离 思路: 二分答案,check时把注意力放在相邻的两个路标之间的距离看满不满足你二分出来的答案,如果不满 阅读全文
posted @ 2025-01-02 19:38 Marinaco 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/P1469#submit 题意:找奇数个筷子的长度 思路:异或运算(如果开map会MLE) 按位异或运算:每个位对比相同为0,不同为1 重要性质: x^x=0, x^0=x 所以我们可以直接算出所有数的异或和,即为答案 其他 阅读全文
posted @ 2025-01-01 20:38 Marinaco 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://atcoder.jp/contests/abc386/tasks/abc386_d 题意: 给你一个表格,表格上已经填充了一些黑块和白块,让你判断能否涂色至黑块总是在白块的左上角 思路: 每个点离散化,按行为第一关键字,列为第二关键字排序。即从上至下找到白块便记录其最小的y 阅读全文
posted @ 2025-01-01 15:46 Marinaco 阅读(11) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示