dp1
  • 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
  • 2024-02-27P10156(dp思想)
    难度2也是比较有意思的一道题。首先发现每个小团体独立,所以对于每个小团体分开直接暴力dp,dp[i][j]表示当前小团体做到第i人,走了j人,然后O(n)转移,加上部分分喜提50pts。为什么要O(n)转移呢,因为我要枚举匹配的两个人然后算贡献。但是对于这种带绝对值的贡献,我们一般都要把绝对值拆掉
  • 2024-01-15AtCoder Beginner Contest 336
    B-CTZ难度:⭐题目大意给定一个数n,输出其二进制最后有几个连续的0;解题思路模拟一下就行;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#defineendl'\n'usingnamespacestd;
  • 2023-12-12「杂题乱刷」CF1272D
    题目链接CF1272DRemoveOneElement题意简述给定一个长度为\(n\)的序列,你需要求出至多删除一个数后的这个序列的最长上升子串。解题思路首先我们可以想一下这题的弱化版,给定一个长度为\(n\)的序列,你需要求出至多删除一个数后的这个序列的最长上升子序列。这题我们可以
  • 2023-12-09Codeforces Round 801 (Div. 2)
    基本情况A就开始犯病,导致+2.B、C都过样例了,但是都错。B.CircleGame赛时推出来奇数必输,也知道偶数不是必赢,但是思路不清楚。这里我没意识到一个很关键的性质。奇数堆拿的石堆会变,这也导致了必输,比如三个堆\(1,2,3\)。表粗的为JOE。123123显然JOE拿的石堆是变化的
  • 2023-11-14P1004 [NOIP2000 提高组] 方格取数
    P1004[NOIP2000提高组]方格取数基本思路我想的是搞两次二维DP第一次搞完之后把走过的删掉,然后搞第二次,然而只有\(80pts\)#include<iostream>#include<algorithm>#include<cstdio>usingnamespacestd;intn;intx,y,t;inta[11][11];intdp1[11][11],dp2[11][
  • 2023-10-14P5558 心上秋
    Description竟宁元年(前33年)正月,昭君出塞前一晚。画师跌跌撞撞地来到昭君居住的宫殿。听说北国的那座城池被冬雪覆了终日等到故人长诀渐行渐远转眼已隔两世——《心上秋》如果再也不能相见的话,画师想着,他想给昭君留下些什么。他想把他的画笔送给昭君。
  • 2023-10-09题解 P3894【[GDOI2014] 传送】
    难倒不难,128MB的空间限制快恶心死我了。我们设\(d_{u_0,u_1}\)表示到节点\((u_0,u_1)\)距离最近的叶子的距离,这个可以很容易换根DP求出。设\(p_{u_0}\)表示树\(u_0\)中距离最近的两个叶子的距离。设\(dis(u_0,u_1,v_0,v_1)\)(\(u_0=v_0\))表示树中两个节点\(u_1\)和
  • 2023-08-12DP1
    DP1P2523[HAOI2011]Problemc从后往前考虑,容易判掉无解。启发我们计数也从后往前考虑,设\(f[i][j]\)表示考虑到\([i,n]\)的位置,确定了\(j\)个人的编号的方案数。转移枚举之前确定了多少个人、在当前位置确定多少个人即可。CF311BCatsTransport求出正好接到每只小
  • 2023-08-03【csp2020】 方格取数 题解
    洛谷传送门1.题目大意给定一个\(n*m\)的矩阵,矩阵中每个点\((i,j)\)都有一个权值\(f_{(i,j)}\)。每次可以向上,向下或向右走。问从\((1,1)\)走到\((n,m)\),经过的路径上点的权值之和最大是多少?2.思路这道题我们不难想到动态规划。但是与一般的动规不同的是,本题中有上下右
  • 2023-08-03代码源 - 基环树
    ZJOI2008骑士自己写的时候建的是\(dls\)的反图,想的是基环树不是要保证每个点的出度为\(1\),就选择每个点向仇恨点连接一条有向边.这种情况下如果记录每一个点出度指向哪,那么在找环的时候不一定能找到,因为图上带环的话要根据入度点找环(画图理解)如果记录入度
  • 2023-08-02nefu-dp1 (线性dp)
    nefu-dp1https://vjudge.csgrandeur.cn/contest/571200#overview感谢z神的题单dp废物来打基础了。(感觉难度大概是递减的)琪露诺单调队列优化dp#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5;intf[N],a[N],n,l,r;//f[i]:i结尾的最大值in
  • 2023-08-01ARC157
    ARC157A简单分讨即可#include<bits/stdc++.h>usingnamespacestd;intAbs(intx){ returnx>0?x:-x;}intn;intA,B,C,D;intmain(){ scanf("%d%d%d%d%d",&n,&A,&B,&C,&D); if(Abs(B-C)>1) { printf("No&quo