目录

蓝桥杯每日一题2023.11.9

包子凑数 - 蓝桥云课 (lanqiao.cn)

题目描述

题目分析

对于此题是一个简单DP的翻版问题,若能凑出当前的包子数,则凑出之前一定为dp[i - a[j]],若表示出的dp[i]不是0则说明是一定存在数可以被凑出的,由题意:若凑不出的数字超过10000这个上界,我们就可以判断出有无穷个

最大不能表示出来的数必定有个上界,因为两个数a,b(当gcd=1时),最大不能表示出来的数是(a - 1)(b - 1) - 1,题目中的N为100,99和98是100内最大的互质的数,故这个上界选择10000

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e7;
int a[N], dp[N];
int main()
{
	int n, ans = 0;
	cin >> n;
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
		dp[a[i]] ++;
	}
	for(int i = 1; i <= N; i ++)
	{
		for(int j = 1; j <= n; j ++)
		{
			if(i - a[j] < 0)continue;
			dp[i] = dp[i - a[j]] + dp[i];
			if(dp[i] != 0)break;//这个数可以被凑出 
		}
		if(dp[i] == 0)ans ++;
	}
	if(ans  > 10000)cout << "INF";
	else cout << ans;
	return 0;
}
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
a东方青21 分钟前
[16届蓝桥杯 2025 c++省 B] 移动距离
c++·算法·蓝桥杯
学c++的一天1 小时前
蓝桥杯备战
算法·职场和发展·蓝桥杯
梭七y2 小时前
【力扣hot100题】(096)多数元素
算法·leetcode·职场和发展
zero.cyx3 小时前
蓝桥杯 DFS
算法·蓝桥杯·深度优先
ChoSeitaku5 小时前
NO.91十六届蓝桥杯备战|图论基础-图的存储和遍历|邻接矩阵|vector|链式前向星(C++)
c++·蓝桥杯·图论
ChoSeitaku6 小时前
NO.88十六届蓝桥杯备战|动态规划-多重背包|摆花(C++)
c++·蓝桥杯·动态规划
梭七y7 小时前
【力扣hot100题】(093)最长公共子序列
算法·leetcode·职场和发展
Ray-国7 小时前
2025蓝桥杯JavaB组
java·职场和发展·蓝桥杯
ll7788118 小时前
C++学习之路,从0到精通的征途:string类的模拟实现
开发语言·数据结构·c++·学习·算法·职场和发展
abant210 小时前
leetcode 3504 回文+最长公共子数组
算法·leetcode·职场和发展