
动态规划
文章平均质量分 59
本居小鈴
无尽深渊中,唯有你与我共行。
展开
-
数位统计 dp 问题
数位统计 dp文章目录数位统计 dp@[toc]简介解决的问题写法递推记忆化搜索例题例题 统计问题 The Counting Problem[P4124 [CQOI2016]手机号码](https://www.luogu.com.cn/problem/P4124)[SP17247 PR003004 - Digit Sum](https://www.luogu.com.cn/problem/SP17247)[SP10606 BALNUM - Balanced Numbers](https://www.lu原创 2022-05-29 22:37:16 · 820 阅读 · 0 评论 -
最长上升子序列(的长度)的求法
最长上升子序列给定一个长度为nnn的数列,问其最长上升子序列最大为多长。简单求法设f(i)f(i)f(i)为第iii个元素为末尾的最长上升子序列的长度。那么根据最长上升子序列的定义,则状态转移方程为:f(i)=max(f(j)+1)f(i)=max(f(j)+1)f(i)=max(f(j)+1)其中,第jjj个元素比第iii个元素小,且有j<ij<ij<i。代码实现如下。#include <bits/stdc++.h>using namespace std;原创 2022-04-08 16:16:01 · 907 阅读 · 0 评论 -
最长公共上升子序列(LCIS)
最长公共上升子序列(LCIS)大致题意给一个数字nnn,然后再给两个长度为nnn的数列,求它们的最长公共上升子序列。思路普通做法考虑这样的一个状态f(i,j)f(i,j)f(i,j),这样的一个状态描述为:截止到jjj(也就是第二个数列)的位置时,在含有第一个数列的前iii个数字中最长公共上升子序列的长度。这个过程就是LCS+LIS的思路。int solve(std::vector<int> &a, std::vector<int> &b) { s原创 2022-04-06 00:20:03 · 380 阅读 · 0 评论 -
HDU 1503 Advanced Fruits(最长公共子序列)
HDU 1503 Advanced Fruits(最长公共子序列)HDU OJ 终于又活过来了。题目传送门题目The company "21st Century Fruits" has specialized in creating new sorts of fruits by transferring genes from one fruit into the genome of another one. Most times this method doesn't work, but somet原创 2022-04-02 18:57:46 · 385 阅读 · 0 评论 -
蓝桥 第十二届省赛 砝码称重
第十二届省赛 砝码称重题目传送门思路根据之前计算得到的质量求得个数(负数的质量在天平上反过来就是正的)。基于这种思路,很容易写出暴搜的错解。暴搜这是一种及其暴力的搜索方式。当然只过了一半的点。#include <bits/stdc++.h>typedef long long ll;int n;ll c[110];std::set<ll> cnt;void dfs(int id, int now) { cnt.insert(std::abs(now)原创 2022-04-01 21:17:29 · 295 阅读 · 0 评论 -
蓝桥 砝码称重(完全背包)
蓝桥 砝码称重题意给定nnn种砝码(每种砝码个数不限)和一个整数mmm,问至少需要多少个砝码才可以称量mmm。思路这题是完全背包的模板题(但是因为没看到无限砝码个数WA了)。考虑每个重量当前可以选取的最少砝码个数f(i)f(i)f(i)和目前法码ccc,可以知道这个状态可以是从i−ci-ci−c那边得到,也可以从自己得到。也就是说,目前的重量可以选择的最少砝码个数,要么是它现在的选择个数,要么就是之前的状态转移得到。因此,可以得到下面的状态转移方程:f(i)=min(f(i), f(原创 2022-04-01 20:24:07 · 574 阅读 · 0 评论 -
【日志】01背包(简单讨论)
01背包01背包问题简单来说,是允许放置是放或者不放这个物品的问题。状态转移方程虽然这玩意叫做状态转移方程,但是一直感觉还是属于递推的方式,但是由于暴力一般的01背包问题都有如下这个状态转移方程。f(i,j)=max{f(i−1,j),f(i−1,j−v)+w}f(i,j)=\max\{ f(i-1,j),f(i-1,j-v)+w\}f(i,j)=max{f(i−1,j),f(i−1,j−v)+w}其中,iii指的是考虑第iii个物品(前面i−1i-1i−1个物品是不考虑的,默认已经得到了原创 2022-03-06 00:36:21 · 183 阅读 · 0 评论