返回顶部

随笔分类 -  动态规划

摘要:2021-2022-1 ACM集训队每周程序设计竞赛(8) - 问题D :一月忘干净 题意:一个含有$?\(和数字的字符串,\)?$可以用$0$~$9$来代替,问你最后得到的数有多少个除以$13$余$5$ 题解:首先要知道在取模意义下,乘法和加法都是能直接算的,设$dp[i][j]$为在第$i$个位 阅读全文
posted @ 2021-11-22 10:52 _Kolibri 阅读(54) 评论(0) 推荐(0)
摘要:题意:每个点都属于某个公司,公司对应一个权值,对于一条路径,如果一些点属于同一家公司,那么贡献只能算一次,给你一张图,路径只能从小的往大的走,现在问你从$1$到每个点的路径上的最大权值是多少。 题解:$n$最大为$36$,出现多个点的公司数最大为$\frac{n}{2}$,不难发现,对于一条路径,如 阅读全文
posted @ 2021-11-04 02:05 _Kolibri 阅读(260) 评论(0) 推荐(0)
摘要:代码+分析: #include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back #define me memset #define rep(a,b,c) for( 阅读全文
posted @ 2021-11-01 19:02 _Kolibri 阅读(97) 评论(0) 推荐(0)
摘要:题意:$n$x$m$的01矩阵,每次可以向下或向右移动,从$(1,1)\(走到\)(n,m)$,且满足路径上的$0$的个数不少于$p$,$1$的个数不小于$q$,问你有多少条不同的路径数。 题解:设$dp[i][j][k]\(表示在\)(i,j)$,当前路径有$k$个$0$的方案数,这很简单,裸dp 阅读全文
posted @ 2021-10-27 14:30 _Kolibri 阅读(228) 评论(0) 推荐(0)
摘要:题意:长度为$n$的数组,确定一个数$k$,然后连续选$k,k-1,...,2,1$个不相交的区间,并且满足区间$sum$和严格递增,问你$k$的最大取值。 题解:我们从后往前遍历,设$dp[k][i]$表示当前位置为$i$,选择区间长为$k$的$[i,n]$中的最大取值,因为我们要求区间是严格递增 阅读全文
posted @ 2021-10-27 10:53 _Kolibri 阅读(77) 评论(0) 推荐(0)
摘要:题意:有一长度为$n$的数组,现在需要将每个数字染成黑色或红色,然后从左往右,红色数字拼接在一起,黑色数字拼接在一起,得到的两个数能够分别被$A$和$B$整除,同时黑色和红色涂色数尽可能相近,输出涂色方案。 题解:数据范围比较小,考虑四维dp,设$dp[i][j][a][b]$表示当前红色涂了$i$ 阅读全文
posted @ 2021-10-22 13:04 _Kolibri 阅读(59) 评论(0) 推荐(0)
摘要:题意:给你一个二进制数,求有多少对$(x,y)$满足图中的两个条件。 题解:对于$x+y=x\oplus y$,我们知道异或是不进位的,那么就要保证$x$和$y$的任意一位不同时为$1$,先看$x+y=n$的情况,这很容易就能算出来,关键是$x+y\le n$怎么搞,我们假设$dp[0][i]$表示 阅读全文
posted @ 2021-10-19 20:18 _Kolibri 阅读(117) 评论(0) 推荐(0)
摘要:E. Staircases 题意:一张$n$x$m$的图,有两种楼梯形,$L$和$7$形,即向下向右和向右向下这样无限重复,单点和横着的两个点和竖着的两个点也算,有$q$个询问,每次将每个点的权值异或$1$,如果某个点的值为$0$,那么这个点就不能用,再询问贡献。 题解:在纸上手玩几个例子,发现某个 阅读全文
posted @ 2021-10-13 00:39 _Kolibri 阅读(93) 评论(0) 推荐(0)
摘要:题意:有一张DAG,每条边都有边权,每一天都需要计算$1$到$m$的最短路,但是有些点在某些天不能到达,假设某一天的路径和前一天的路径不同,需要额外的$k$个费用,保证任何时候$1$到$m$一定连通,问你$n$天下来的最少总费用。 题解:假设$dp[i]$表示前$i$天的最少总费用,$cost[i] 阅读全文
posted @ 2021-10-12 15:15 _Kolibri 阅读(43) 评论(0) 推荐(0)
摘要:题意:长度为$n$的序列$a$,求其子序列$b$的最长长度,使得$b[i]$&\(b[i-1]\neq 0\ \ \ 2\le i\le k\). 题解:$dp[j]$表示二进制的$j$位的最大贡献,对于每个$a[i]$,遍历它的二进制每一位$1$,那么当前状态就可以从这些$1$的位置转移过来,先找 阅读全文
posted @ 2021-10-10 20:04 _Kolibri 阅读(65) 评论(0) 推荐(0)
摘要:AtCoder Beginner Contest 220 A - Find Multiple 水题 B - Base K 水题 C - Long Sequence 题意:有长度为$n$的序列$A$,$B$由连续$10^{100}$个$A$拼接而成,给你一个$X$,问你$B$的最小的前缀和位置$k$, 阅读全文
posted @ 2021-09-27 22:14 _Kolibri 阅读(241) 评论(0) 推荐(0)
摘要:题意:有2行,每行$n$个点,给你$m$个连接上下两行的边,问你最对能选多少条边,这些边互不相交。 题解:先固定选上面或者下面一行作为起点去遍历,假设选下面一行,我们从头开始遍历,假设遍历到$i$个点时,枚举它的所有出边$to$,假设这条边的终点为$j$,设$dp[j]\(表示区间\)[1,j]$的 阅读全文
posted @ 2021-09-25 21:55 _Kolibri 阅读(75) 评论(0) 推荐(0)
摘要:题意:一个$2$x$n$的矩阵,每个格子可以涂成黑色或者白色,现在问你全部涂完后,连通块个数为$k$个一共有多少方案数 题解:每一列总共有$4$种情况,白白,黑白,白黑,黑黑,设$dp[i][j][k]$表示第$i$列,涂第$j$种情况,涂完后连通块个数$k$的情况数,那么很容易从前一列的状态转移过 阅读全文
posted @ 2021-09-25 21:22 _Kolibri 阅读(32) 评论(0) 推荐(0)
摘要:题意:有$n$个序列,每两个数之间可以放$+\(和\)-\(,但是不能存在两个及以上的\)-$,写出全部不同的多项式,求这些多项式的和。 题解:设$dp[i][0/1]$表示前$i$个数并且当前符号为$+\(和\)-\(的情况,先不考虑\)+/-$第$i$个数的情况,那么很明显$dp[i][0]=d 阅读全文
posted @ 2021-09-18 13:45 _Kolibri 阅读(84) 评论(0) 推荐(0)
摘要:题意:一棵$n$个点$m$条边的树,每个点都有点权,如果某个点被标记了,那么这个点和它相邻的点会被覆盖,贡献是被标记的这个点的点权,问将所有点覆盖需要花费的最小代价。 题解:首先,这题不能和树形dp的模板题等同,因为假如有一颗树$1-2-3-4$,我们把$1,4$标记,那么$1,2,3,4$就全被我 阅读全文
posted @ 2021-09-17 13:18 _Kolibri 阅读(57) 评论(0) 推荐(0)
摘要:题意:你的键盘有$k$个按键,矩阵$T_{i,j}$,表示第$i$个键和第$j$个键之间的输入频率,并带有一个$L$的修正,$T$的每一行都是非递减的,现在你忘了你的密码,但是你知道你密码的相邻两个字符的输入频率,你需要构造一个序列,这个序列需满足$T_{S_i,S_{i+1}}-L \le P_i 阅读全文
posted @ 2021-09-16 20:19 _Kolibri 阅读(423) 评论(0) 推荐(0)
摘要:题意:每次骑车花费$r$,有$n$张优惠券,每张优惠卷花费$c_i$,使用后可以在之后的$d_i$天内免费骑车$k_i$次,$m$个需求,表示在$p_i$这一天要骑$q_i$次,问你最少花费多少钱满足条件。 题解:首先用将次数和天数对应起来,然后遍历次数,设$dp[i]$表示总共骑了$i$次的最少花 阅读全文
posted @ 2021-09-11 18:09 _Kolibri 阅读(295) 评论(0) 推荐(0)
摘要:题意:一张$n$个点的完全图,删去$m$条边,一共走$k$步,问你从起点出发再回到起点一共有多少种方案? 题解:设$dp[i][j]$表示走了$i$步,以$j$为终点的方案数,那么状态转移为$dp[i+1][u]=\sum_{v\in edge[u]} dp[i][v]$. 此时的代码为(注意此时的 阅读全文
posted @ 2021-09-08 19:39 _Kolibri 阅读(118) 评论(1) 推荐(0)
摘要:题意:一棵$n$个顶点的树,定义一次删点是”美丽的“,如果删去某个点后,树的每个点都有边,问有多少种”美丽的“删点方式。 题解:对于某个点父亲结点$u$,考虑它的儿子和子树。 定义$f[u][0/1/2]$分别表示$u$的三种形式: 0:删去$u$这个结点,并且保证删去后所有子树都是合法的。 1:不 阅读全文
posted @ 2021-09-07 23:44 _Kolibri 阅读(213) 评论(0) 推荐(0)
摘要:传送门 A - Blood Pressure 水题 B - Cycle Hit 水题 C - chokudai 题意:给你一个字符串$S$,问你有多少子序列能构成$chokudai$,答案$\mod 1e9+7$. 题解:根据每个连续性,当遍历到某个字符时,状态一定只从它在模板串的上一个字符转移过来 阅读全文
posted @ 2021-09-07 22:15 _Kolibri 阅读(95) 评论(0) 推荐(0)