动态规划
xxb3.1415
咸鱼
展开
-
邮票面值设计 dfs+dp
题目链接题目大意给定一个信封,最多只允许粘贴NNN张邮票,计算在给定K(N+K≤15)K(N+K≤15)K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAXMAXMAX,使在111至MAXMAXMAX之间的每一个邮资值都能得到。思路一开始并没有啥思路,然后瞎想另一个问题,给定的k个数,最多使用n个,求MAXMAXMAX该要怎么求。然后发现这个问题可以用dpdpdp来解决,dp[i]dp[i]dp[i]代表iii最少使用多少个数字组成,那么转移方程为mi原创 2020-10-16 23:15:11 · 174 阅读 · 0 评论 -
P2602 [ZJOI2010]数字计数 数位dp
题目链接题目大意给定两个正整数 aaa 和 bbb,求在 [a,b][a,b][a,b] 中的所有整数中,每个数码(digit)(digit)(digit)各出现了多少次。做法一道简单的数位dp,头铁想要执行一次dfs就可以把[0−9][0-9][0−9]筛出来。于是定义了一个结构体。具体含义见注释struct node { LL a[11], v;// [0-9]就是题目里的含义,a[10]代表有多少个数,v用于记忆化判断 node() { _rep(0, 10, i) a[i]原创 2020-10-15 22:43:10 · 257 阅读 · 0 评论 -
P4290 [HAOI2008]玩具取名 区间dp
题目链接题目大意第一行四个整数W、I、N、G。表示每一个字母能由几种两个字母所替代。接下来W行,每行两个字母,表示W可以用这两个字母替代。接下来I行,每行两个字母,表示I可以用这两个字母替代。接下来N行,每行两个字母,表示N可以用这两个字母替代。接下来G行,每行两个字母,表示G可以用这两个字母替代。最后一行一个长度不超过Len的字符串。表示这个玩具的名字。做法我们把WING映射为1234区间dpdpdp,我们用dp[l][r][k][l][r][k][l][r][k]代表区间[l,r]能原创 2020-10-13 22:23:06 · 159 阅读 · 0 评论 -
P2513 [HAOI2009]逆序对数列
题目地址文章目录题目大意思路题目大意求出一个长度为nnn的全排列中有多少个逆序对为kkk的全排列。思路我们很容易想出一个朴素的状态:dp[i][j]dp[i][j]dp[i][j]为长度为iii的全排列中逆序对为jjj的数量。那么转移方程也很好想,我们考虑把iii插入到一个为i−1i-1i−1的全排列中,逆序对的变化,当把iii放在最后面时,逆序数不变,放在倒数第111个的前面,逆序对增加了111,放在倒数第222个的前面,逆序数增加了222。那么总结起来就是dp[i][j]=∑k=max(0原创 2020-10-12 22:37:38 · 310 阅读 · 1 评论 -
CF414B Mashmokh and ACM DP
题目大意:如果一个数列中,后一个数都能被前面一个数整除,那么就叫这个数列为好数列。输入n,k,求数列中最大元素为n,数列长度为k的好数列的种数(对1000000007取模)思路状态设计:dp[i][j]dp[i][j]dp[i][j] 结尾为数字iii,长度为jjj方程:dp[i][j]=dp[d][j−1]dp[i][j]=dp[d][j-1]dp[i][j]=dp[d][j−1],ddd为iii的约数初始化:dp[i][1]=1dp[i][1]=1dp[i][1]=1递推方式:dp[d][j原创 2020-10-09 17:00:25 · 171 阅读 · 0 评论 -
P3431 [POI2005]AUT-The Bus 树状数组+DP
题目链接题目大意:Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 到 m编号. 每个路口用两个数(i, j) 表示(1 <= i <= n, 1 <= j <= m). Byte City里有一条公交线, 在某一些路口设置了公交站点. 公交车从 (1, 1) 发车, 在(n, m)结束.公交车只能往北或往东走. 现在有一些乘客在某些站点等车. 公交车司机希望在路线中能接到尽量多的原创 2020-10-08 19:34:26 · 141 阅读 · 0 评论 -
CF4D Mysterious Present 二维偏序+dp
题目求一个二维的严格递增序列。我们先排个序,然后再dp严格递增子序列,记录一下是从哪里转移过来的。然后再递归输出路径即可。#include<bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const double Pi = acos(-1);namespace { template <typename T> inline void read(T &原创 2020-10-03 15:23:02 · 162 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]组合数问题(数位dp,卢卡斯定理)
个人题解链接,历届试题,正在更新中~题目描述给n,m,k,求有多少对(i,j)(i,j)(i,j)满足1≤i≤n,0≤j≤min(i,m)1 ≤ i ≤ n,0 ≤ j ≤ min(i,m)1≤i≤n,0≤j≤min(i,m)且C(i,j)≡0(modk)C(i,j) ≡ 0(mod k)C(i,j)≡0(modk),k 是质数。其中 C(i,j)C(i,j)C(i,j) 是组合数,表示从 i 个不同的数中选出j个组成 一个集合的方案数。输入第一行两个数 t, k,其中 t 代表该测试点包含 t 组原创 2020-08-19 12:22:39 · 2800 阅读 · 9 评论 -
蓝桥杯 ADV-200 求最大值
问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大。并且要求你选定的数对的ai之和非负,bi之和非负。输入格式 输入的第一行为n,数对的个数 以下n行每行两个整数 ai bi输出格式 输出你选定的数对的ai+bi之和样例输入5-403 -625-847 901-624 -708-293 413886 709样例输出...原创 2019-11-28 13:40:29 · 266 阅读 · 0 评论 -
蓝桥杯 ADV-205 拿糖果 简单dp
问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉。 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数。这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖。然后小B就可以接着拿糖。 现在小B希望知道最多可以拿多少糖。输入格式 一个整数N输出格式 最多可以拿多少糖样例输入15样例输出6数据规模和约定 N <= 100...原创 2019-11-28 12:37:46 · 125 阅读 · 0 评论 -
HDU3466-排序+背包
题目地址转移剩余的空间,当前的剩余的容量为j,则dp[j] 由 dp[j+a[i].p] 转移过来。但是由于物品出现的位置不确定,所以要排个序。不理解要排序的可以用这两组样例试一下:2 101 10 102 9 102 102 9 101 10 10正解为20;ac代码:#include<bits/stdc++.h>using namespace std;typ...原创 2019-07-09 16:04:15 · 254 阅读 · 0 评论 -
牛客小白月赛15-E-线段树+01背包
原题地址没仔细看题目。以为一个人只能选一次。。这样的话用线段树搞一下就可以,求出每个信号要抹去的最小代价,然后一个01背包就可以求出答案啦。#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e5+5;#define lson rt<<1, l, mid#...原创 2019-06-15 21:34:22 · 301 阅读 · 0 评论 -
Monkey and Banana HDU - 1069(dp)
原题地址:点击一道简单的dp题,求最长的递减子序列,不过得先排个序,先给出运算符重载的代码struct node { int x,y,z; bool operator < (const node & a)const { if(x != a.x) return x > a.x; return y > a.y; }//排序方式,长度相同则看宽度 b...原创 2019-05-12 10:01:48 · 144 阅读 · 0 评论 -
小a与星际探索
原题地址点击来自于牛客的寒假算法训练营,发现题目还挺好的,先把一些能做的补掉!思路:先简单的判断下能不能到达,如果不能直接输出-1就可以,若可以的话先记录下可以经过哪些地方。然后使用dp转移所能到达的值,最大的值其实就是(1 << 12)-1, (p最大是3000)。看了下别人的代码,使用了或,确实巧妙。dp[j] |= dp[j^c[i]], 代表若之前jXORc[i] 可...原创 2019-04-23 15:44:15 · 90 阅读 · 0 评论