首页 > 编程语言 >蓝桥-13届-C++-B组-省赛-I题-李白打酒加强版

蓝桥-13届-C++-B组-省赛-I题-李白打酒加强版

时间:2023-03-07 17:55:34浏览次数:46  
标签:13 加强版 int 蓝桥 110 省赛 dp 题意

最直接的做法,算是回溯吧:

  1. 生成指定01数的序列
  2. 挨个检查是否满足题意并计数

能不能将生成和判断的过程统一呢?能不能记忆前面的序列呢

瞄一眼题解,往动态规划的方向上靠

#include<iostream>
using namespace std;
const int MOD = 1e9 + 7;
// 第i次相遇,遇到j次店,酒量为k的方案数
// k不可能超过遇花数,遇花数不超过100
int dp[210][110][110];

int main() {

	int n, m;
	cin >> n >> m;
	// 最后一次是花,而且正好喝完了,也就是说最后一次是-1=0
	// 问有多少种可能?按理来说是2^n+m种可能性最多,但是要保证符合题意
	// 构造所有可能然后一一检查?!这个怕是不太现实,2^200,至少也要做剪枝
	// 不对,如果制定了01的数量的话,应该是不会到这么大的
	// 或者是自己来组合生成所有可能的结果?
	dp[0][0][2] = 1;
	for (int i = 1; i <= n + m - 1; i++) {
		for (int j = 0; j <= n; j++) {
			for (int k = 0; k <= m; k++) {
				// 为什么遇店不为0且酒量为偶数?
				// 偶数表示上一次遇到的可以是店,这又要求了上一次店数>0
				// 同时也可以是花
				if (j != 0 && k % 2 == 0)
					dp[i][j][k] = (dp[i - 1][j][k + 1] + dp[i - 1][j - 1][k / 2]) % MOD;
				// 上一次只能是花
				else  dp[i][j][k] = dp[i - 1][j][k + 1];
			}
		}
	}
	cout << dp[n + m - 1][n][1] << endl;
	return 0;
}

我想不到,而且还是第一见三维数组的DP

标签:13,加强版,int,蓝桥,110,省赛,dp,题意
From: https://www.cnblogs.com/yaocy/p/17188960.html

相关文章

  • 713. Subarray Product Less Than K
    713.SubarrayProductLessThanK题目Youraregivenanarrayofpositiveintegersnums.Countandprintthenumberof(contiguous)subarrayswherethe......
  • 13_MyBatis
    MyBatis1.什么是MyBatis?是一款优秀的持久层框架,用于简化JDBC开发持久层负责将数据保存到数据库的那一层代码javaee三层架构:表现层,业务层,持久层框架:半成品软件,是......
  • ENGG1310 P2.2 Data, Logic Gates & Binary Computation
    课程内容笔记,自用,不涉及任何assignment,exam答案Notesforself-use,donotincludeanyassignmentsorexamsDataRepresentations这里可以和前面介绍的数字信号/......
  • APIO 2013 T1 ROBOTS
    每个机器人只能和相邻的机器人合并,转成人话就是任何的合并机器人只能是一段区间。而且机器人之间的行动互不干扰。那么就是区间\(dp\)了。设\(dp_{l,r,x,y}\)表示令由......
  • APIO 2013 T2 Toll
    想要解决这道题的最大难点是:如果我们前面插入了边的话,可能会改变树的形态,从而对后面的点的安排产生影响。每次都需要重构树形态。考虑消除顺序的影响,枚举最终加入生成树的......
  • 算法随想Day30【贪心算法】| LC1005-K次取反后最大化的数组和、LC134-加油站、LC135-
    LC1005.K次取反后最大化的数组和借用评论区的一句话——“普通人思维,无数个ifelse”。voidNegationsLoop(vector<int>&nums,intk,intpos){if(k%2!=0......
  • Apache Hudi 0.13.0版本重磅发布!
    ApacheHudi0.13.0版本引入了许多新功能,包括Metaserver、变更数据捕获、新的RecordMergeAPI、Deltastreamer支持新数据源等。虽然此版本不需要表版本升级,但希望用户......
  • 2022年第十三届蓝桥杯大赛软件类省赛C/C++大学A组真题
    Preface周末没什么比赛打索性开始准备下蓝桥杯,然后就想着找一下去年的真题来做一下结果yysy去年的真题说实话有点难度的,感觉出题风格偏向OI比赛而和ACM的风格不太像啊感......
  • P3558 [POI2013]BAJ-Bytecomputer
    给定一个长度为nn的只包含−1,0,1−1,0,1的数列A,每次操作可以使ai←ai+ai−1,求最少操作次数使得序列单调不降。  F[i][3] 分类讨论 #include<io......
  • AtCoder Regular Contest 131(A,B,C)
    AtCoderRegularContest131(A,B,C)AA这个大意就是很容易做出来,只是有一点要注意,对于第二个字符串,如果小于\(2\),那么比如\(1\),,这些可能是进位形成的,所以我们需要补一......