- 2024-10-14ABC375 Review
ABC375ReviewAB模拟题过C很让人恼怒的一道题,思路一点也不难想,但是代码实现过于困难了(对于我来说)分析自己找一两组样例就会发现这道题实际上实在模拟一个矩阵不断向内旋转\(90°\)的过程,从外到里旋转的次数越来越多,旋转的过程可以发现实际上可以通过模\(4\)来进行简化
- 2024-10-07abc369D Bonus EXP
有N只怪兽,第i只怪兽的体力为A[i],需要按编号从小到大的顺序依次处理,对于每只怪兽可以选择打或不打,如果不打,经验值不变;如果打,将获得等同于怪兽体力的经验值。另外,对于第偶数次打的怪兽,经验值翻倍。求能获得的最大经验值。1<=N<=2E5;1<=A[i]<=1E9分析:获得的经验跟奇偶性有关,设dp0[
- 2024-09-18740. 删除并获得点数
题目链接740.删除并获得点数思路动态规划-打家劫舍-变体题解链接官方题解关键点优化版本:排序后,分段获取“连续子序列”的“打家劫舍值”后进行加和时间复杂度\(O(\#{\text{nums}}+\max\text{nums})\)或\(O(n)\)(优化版本)空间复杂度\(O(\max\text{nums})
- 2024-09-18198. 打家劫舍
题目链接198.打家劫舍思路入门动态规划-“打家劫舍”系列题解链接【视频讲解】动态规划入门:从记忆化搜索到递推(Python/Java/C++/Go/JS)关键点无时间复杂度\(O(n)\)空间复杂度\(O(n)\)或者\(O(1)\)代码实现(DFS):classSolution:defrob(self,nu
- 2024-09-14虾皮9.14笔试
三道都是简化的板子题第一题给出每个位置的过路费,求从左上角到右下角的最小花费是多少。只允许往下或者往右走。数据范围只有100直接暴力搜索即可。intminPathSum(vector<vector<int>>&grid){intm=grid.size();intn=grid[0].size();intres=
- 2024-09-05POJ-3264
这是rmq半懂不懂(因为已经会线段树了)但是!它的代码真的好短啊啊啊啊啊!#include<bits/stdc++.h>usingnamespacestd;intdp1[500010][20],dp2[500010][20],w[1000010];intmain(){ intn,k,q,l,r; ios::sync_with_stdio(0); cin.tie(0); cin>>n>>q; for(inti=1;i<=n;i+
- 2024-08-30Luogu P10997 Partition 题解 [ 蓝 ] [ 轮廓 dp ]
Partition:一道dp神题,用到了以轮廓线的轨迹来做dp的技巧,和敲砖块这题的状态设计有点相似。观察首先观察样例,发现整张图可以看作是被两条线分隔开的。同时每个颜色的四个方向上又存在一大堆奇怪的性质,很容易发现这两条线一条是从左上到右下的线,另一条是从右下到左上的线。暴
- 2024-08-10P1091 [NOIP2004 提高组] 合唱队形
这道题主要考察的是线性dp,最基础的dp,这道题的主要思路1.求出最大子序列,2.求出最小子序列,3.找出最少要多少个人要出列。其实我们主要2可以变成逆序查找最大子序列,所以我们只需要把前两个找出来之后我们就可以求出主要3(注意一定要减1,因为中间的那个同学一定会被多算一次所以必
- 2024-08-08lg-dp1
记忆化搜索:记忆化压缩DP状态(一些期望dp里会用)剪枝递推:保证前面的部分已经计算了数位dp求\([l,r]\)之内满足某种限制的数的个数,该限制应该是与数位有关系的。带不带前导0取决于是否对统计答案造成影响。前缀和转化:只有上界补充题:如果lim=1的时候前面都
- 2024-08-072024/08/07 每日一题
LeetCode3130找出所有稳定的二进制数组II方法1:动态规划classSolution{publicintnumberOfStableArrays(intzero,intone,intlimit){intMOD=1_000_000_007;int[][]dp0=newint[zero+1][one+1];int[][]dp1=newint[zero+
- 2024-07-30P1081 [NOIP2012 提高组] 开车旅行
思路:首先令\(nxt1_i\)表示右侧最近的城市距离(\(id1_i\)为编号),令\(nxt2_i\)表示右侧第二近的城市编号(\(id2_i\)为编号);可以使用set找出离这个城市最近的\(4\)个城市(前面两个,后面两个)。定义:\(f_{i,j}\)表示从\(i\)点出发走\(2^j\)轮最后到达的位置。\(dp1_{i,
- 2024-07-20换根dp三题
真的是公公又式式啊换根dp的宗旨是利用已有的信息来推出其他信息换根dp的题目通常是树,o(n)时间空间,要求每一个点的答案。我们如果指定了以1为根,那么可以算出每个点往下的答案,但是每个点的父亲对本身的贡献还没有算,所以我们可以记录dp1,dp2两个数组,分别记录专用图注意,dp1[u]
- 2024-07-03DP1
T1AtcoderABC217FMakePair考虑区间dp,\(dp[l][r]\)表示消完区间\([l,r]\)中所有人的方案数,转移枚举分界点,如果\(l\)和\(r\)有朋友关系则再从\(dp[l+1][r-1]\)转移。但是这样会算重,所以再加一维\(0/1\)表示这个区间是否封闭(不是由两个区间拼起来),这样就可以
- 2024-06-23力扣-714. 买卖股票的最佳时机含手续费
1.题目介绍题目地址(714.买卖股票的最佳时机含手续费-力扣(LeetCode))https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/题目描述给定一个整数数组 prices,其中prices[i]表示第 i 天的股票价格;整数 fee代表了交易股票的手续费用。
- 2024-06-22力扣每日一题 6/21 数组
博客主页:誓则盟约系列专栏:IT竞赛专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞
- 2024-06-18基础背包问题
01背包有N种物品,第i种物品的体积是v[i],价值是w[i],每件物品最多只能选1件。有一个容量为V的背包,问将哪些物品装入背包,可使这些物品的总体积不超过背包,并且总价值最大,输出最大价值。#include<bits/stdc++.h>usingi64=longlong;voidsolve(){intN,V;std::cin
- 2024-05-26蓝桥杯备赛——DP【python】
一、小明的背包1试题链接:https://www.lanqiao.cn/problems/1174/learning/问题描述输入实例52016253851533输出示例37问题分析这里我们要创建一个DP表,DP(i,j)表示处理到第i个物品时消耗j体积。这样我们在输入数据时可以直接进行操作。对于每一个dp[i][j]我
- 2024-05-25算法学习笔记——动态规划.最长上升/下降子序列 2024.5.24
LanqiaoOJ 773这道题是一道动态规划的题目,主要考察最长上升/下降子序列,难度中等,但是对思维的考察比较重要,特别是如何解决其第二问题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以
- 2024-04-29洛谷题单指南-动态规划2-P1004 [NOIP2000 提高组] 方格取数
原题链接:https://www.luogu.com.cn/problem/P1004题意解读:从起点走到终点,走两次,计算最大路径和,第一次走过的点数值变为0。解题思路:直观上思考,可以先从起点走到终点,计算最大路径和,并记录走过的所有点,然后把所有点的数值置为0,再从起点走到终点,计算最大路径和,把两次的最大路径
- 2024-04-20基环树算法总结
基环树算法总结一、什么是基环树基环树,顾名思义,有两个要素:环和树。因此,基环树就是一棵树的一个节点,扩成一个环,做题时,多棵基环树组成的基环树森林,常以如下方式出现:每个点只有一个出边。每个点只有一个入边。图中一共有\(n\)个点,\(n\)条边。那么,基环树类型的题目应该怎
- 2024-04-04计算给定整数数组中,第i个元素表示从第i个位置开始按摩到最后一个位置能够获得的最大收益。
算法:计算给定整数数组中,第i个元素表示从第i个位置开始按摩到最后一个位置能够获得的最大收益。解题思路:使用动态规划方法解决。代码示例:publicintmassage(Vector<Integer>nums){intn=nums.size();if(n<0){return0;}
- 2024-04-02动态规划---线性dp1
7-3最大子序列总和给定K个整数序列{N1,N2,...,NK}。连续子序列定义为{Ni,Ni+1,...,Nj},其中1≤i≤j≤K。最大子序列是具有最大元素总和的连续子序列。例如,给定序列{-2,11,-4,13,-5,-2},其最大子序列为{11,-4,13},最大和为20。现在,您应该找到最大的总和,以及
- 2024-03-28数位dp
数位dphttps://leetcode.cn/problems/reverse-bits-lcci/description/publicintreverseBits(intnum){intmax=0;intdp1=0;intdp2=0;for(inti=0;i<32;i++){if((num&1)==1){
- 2024-03-24导弹拦截
一、问题描述P1020[NOIP1999提高组]导弹拦截二、问题简析该题要我们求两个问题:1、不上升子序列的最大长度2、不上升子序列的最少个数利用\(Dilworth\)定理,我们得到不上升子序列的最少个数等于上升子序列的最大长度。现在,就是求这两个问题:1、不上升子序列的最大长
- 2024-03-04p7914-solution
P7914Solutionlink先考虑Subtask\(4\)。设\(dp_i\)表示长度为\(i\)的方案数,按题目定义转移:AB,ASB:\(\displaystyledp_n\getsdp_n+\sum_{i=1}^{n-1}\sum_{j=0}^kdp_i\timesdp_{n-i-j}\)(A):\(\displaystyledp_n\getsdp_n+dp_{n-2}\)(SA),(AS):\(\displa