首页 > 其他分享 >做题小结 DP训练

做题小结 DP训练

时间:2024-08-09 18:16:28浏览次数:14  
标签:训练 删除 int max 这题 DP ans 小结 dp

第一个

开了个二维数组表示删除不删除
然后去重了下 如果前后相差为1的话 ,就可以进行删除的思考 此时i要删除
的话 i-1必须要不删除 如果i不删除的话 存一个前面的max即可
这边注意下可能有重复的数

如果前后相差不为1的话 我们就可以肆无忌惮 怎么搞都行

此题结束

第二题

这题和上一题相对比起来更难了

int dp[range][4][10];	
dp[1][0][0] = 0; 不动
dp[1][1][1] = 1; //左
dp[1][1][2] = 0; //右边

我这边默认左可删的 如果在距离够的情况下 但是右边可以不可以删除取决于后面的距离够不够

	dp[i][0][0] = max(max(dp[i - 1][0][0], dp[i][0][0]), max(dp[i - 1][1][1], dp[i - 1][1][2]));
		if (x[i] - x[i - 1] > h[i] && x[i] - x[i - 1] <= h[i] + h[i - 1]) {
			dp[i][1][1] = max(max(dp[i - 1][0][0] + 1, dp[i][1][1]), max(dp[i - 1][1][2], dp[i - 1][1][1] + 1));
		} else if (x[i] - x[i - 1] > h[i] + h[i - 1]) {
			dp[i][1][1] = max(max(dp[i - 1][0][0] + 1, dp[i][1][1]), max(dp[i - 1][1][2] + 1, dp[i - 1][1][1] + 1));
		}
		if (x[i + 1] - x[i] > h[i]) {
			dp[i][1][2] = max(max(dp[i][1][2], dp[i - 1][0][0] + 1), max(dp[i - 1][1][2] + 1, dp[i - 1][1][1] + 1));
		}

完整代码 逻辑很清晰

第三

这题没做出来
我们要思考到 我们只有一次的操作机会
所以我们只能对那种中间夹了个没用的数进行删除
本来是上升的 由于这个数改变了
思考到这个就简单了 我们求一个后缀 二者拼在一块就是答案

第四个题

非常好的一个题
没做出来 这题蛮有意思的 真没想到
因为我没想到这个状态转移方程
fi=max(fi-1,fj-1+i-j+1)
如果暴力做 是个n方的写法
考虑优化 可以发现fj-1-j+1可以弄成一个东西
于是使用map代替下

	for(int i=0;i<=n;i++)
	{	dp[i]=0;cnt[i]=-1e9;}
	//这题我不会
	//dp[i]=dp[i-1],dp[j-1]+i-j+1
	//做dp要先从n^2的情况下推转移方程 然后去优化
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++)
	{
	dp[i]=max(dp[i-1],i+cnt[a[i]]+1);
	cnt[a[i]]=max(cnt[a[i]],dp[i-1]-i);	
	}
	cout<<dp[n]<<endl;

下一个概率dp

很有意思的一道概率dp

我就讲正解思路了

给出这么多组操作 真正有用的其实就是第一个我们要一次到位的那个数

举个例子 4 2 1 3 5 就是那个4 能直接操作4的那个才有用
于是我们可以知道这个转移方程式就是ans=ans+(1-ans)*p
初始ans=0 我们假设第一次操作成功=p 后面就是说第一次不成功。。第二次也不成功。。。。。

很好一个题

这个题我的思路就是对于a分类
有两种a一个是做第一个位置的a 另一个是最后位置的
然后求一个后缀和对于第二类的a然后再for循环碰到a的话

dp[i][1] = dp[i - 1][1] + 1;
dp[i][2] = dp[i - 1][2];
dp[i][3] = max(dp[i-1][2] + asum[i],dp[i][3]);

这是b
		dp[i][1] = dp[i - 1][1];
			dp[i][2]=max(dp[i-1][1],dp[i-1][2])+1;
			dp[i][3]=max(dp[i][2]+asum[i],dp[i][3]);

就这样了 就ac了 想的话 还好

这是一个橙题 不过我觉得挺有意思的 很体现dp思想
对于一个正方形 我们就必须想到 一个点作为正方形的右下

那就必须满足他的左边 上面 对角 都要有值 而且这个值大家都要用 否则
无法构成正方形的 于是 状态转移就出来了 取一个min就可以了

标签:训练,删除,int,max,这题,DP,ans,小结,dp
From: https://www.cnblogs.com/LteShuai/p/18351273

相关文章

  • 自闭症儿童康复训练后能否顺利迈进小学之门
    在当今社会,自闭症儿童的教育和发展备受关注。经过康复训练的自闭症儿童能否顺利进入小学,成为了众多家长和教育工作者关心的重要问题。自闭症儿童在经过系统的康复训练后,其状况会得到不同程度的改善。但能否上小学,不能简单地一概而论,而需要综合考虑多个方面的因素。康复训练的......
  • 代码随想录算法训练营day08|344.反转字符串,541.反转字符串II,卡码网:54.替换数字
    344.反转字符串题目链接:https://leetcode.cn/problems/reverse-string/description/我的代码:classSolution{public:voidreverseString(vector<char>&s){for(inti=0;i<s.size()/2;i++){chartemp=s[i];s[i]=......
  • 自动训练稳定扩散错误(ModuleNotFoundError:没有名为“autotrain”的模块)
    我正在使用python3.11和cuda12.1..我正在尝试在本地计算机上训练模型。但安装后出现错误..!pipinstall-Uautotrain-advanced!auto​​trainsetup--update-torch我已经完成了上述命令,但是当我给出时autotraindreambooth--modelstableai/stable-diffusion-......
  • 预训练语言模型公平性-公平性度量、去偏方法
    一、内在偏见与外在偏见1、内在偏见:训练前数据集中存在的刻板印象;2、外在偏见:用来衡量偏差如何在下游任务中传播。通常包括微调,然后评估其关于性别和种族等敏感属性的表现;3、许多NLP应用程序对现有的语言模型进行了微调,这些模型将外在偏见和内在偏见交织在一起。......
  • 预训练的 Word2Vec 向量来初始化词嵌入矩阵
    使用预训练的Word2Vec向量来初始化词嵌入矩阵的过程涉及以下几个步骤:1.下载预训练的Word2Vec向量获取模型:预训练的Word2Vec向量通常可以从模型发布者的官方网站或开源平台下载。例如,Google提供了大规模的预训练Word2Vec向量。文件格式:预训练的Word2Vec向量一......
  • 「代码随想录算法训练营」第三十三天 | 动态规划 part6
    322.零钱兑换题目链接:https://leetcode.cn/problems/coin-change/文章讲解:https://programmercarl.com/0322.零钱兑换.html题目难度:中等视频讲解:https://www.bilibili.com/video/BV14K411R7yv/题目状态:略微有点思路,但还是有点转不过来。思路:这次是找最小的钱币组合,因此......
  • 代码随想录算法刷题训练营day49:LeetCode(42)接雨水、LeetCode(84)柱状图中最大的矩形
    代码随想录算法刷题训练营day49:LeetCode(42)接雨水、LeetCode(84)柱状图中最大的矩形LeetCode(42)接雨水题目代码importjava.util.Stack;classSolution{publicinttrap(int[]height){//用单调栈进行操作intsum=0;Stack<Integ......
  • 基于YOLOv10深度学习的交通信号灯检测识别系统【python源码+Pyqt5界面+数据集+训练代
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~......
  • dp 套 dp(dp of dp)小记
    其实并不是什么很高大上的东西,就是把内层dp的结果压到外层dp的状态里。通常解决的是“限制某种值为\(x\)的方案数”之类的问题,而限制的值通常是一个经典的dp问题。没有啥好直接介绍的,就写三道做过的题。BZOJ3864Heromeetdevil题目链接算是一道入门题目。我们先回......
  • 代码随想录算法训练营第64天 | 图论:Floyd 算法+A * 算法
    97.小明逛公园https://kamacoder.com/problempage.php?pid=1155Floyd算法精讲https://www.programmercarl.com/kamacoder/0097.小明逛公园.html#floyd-算法精讲Floyd算法精讲问题总结:双向道路;路径规划;多个起点到多个终点核心思想:动态规划确定dp数组和下标含义:grid......