包子凑数(蓝桥杯17H)————动态规划+二分查找

cpp 复制代码
#include<iostream>
using namespace std;
int gcd(int a,int b) {
	int tmp;
	if (a<b) {
		tmp = a;
		a = b;
		b = tmp;
	}
	return b == 0 ? a : gcd(b,a%b);
}
int main() {
	int dp[10001],n;
	memset(dp,0,sizeof(dp));
	cin >> n;
	int* a = new int[n];
	int g,maxn = 0;
	for (int i = 0; i < n;i++) {
		cin >> a[i];
		if (i == 0) {
			g = a[i];
		}
		else {
			g = gcd(g,a[i]);
		}
		maxn = max(maxn, a[i]);
	}
	if (g != 1) {
		cout << "INF";
		return 1;
	}
	dp[0] = 1;
	for (int i = 0; i < n;i++) {
		for (int j = a[i]; j < 10001;j++) {
			dp[j] = (dp[j]>0||dp[j-a[i]]>0)?1:0;
		}
	}
	for (int i = 10001/2; i>0;i/=2) {
		int cnt = 0;
		for (int j = i; j > i - maxn;j--) {
			if (dp[j] == 1) {
				cnt++;
			}
		}
		if (cnt != maxn) {
			int ans = 0;
			for (int z = 1; z <= i * 2;z++) {
				if (!dp[z]) {
					ans++;
				}
			}
			cout << ans;
			return 0;
		}
	}
	return 0;
}
相关推荐
啊阿狸不会拉杆32 分钟前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
小学生的信奥之路1 小时前
洛谷P3817题解:贪心算法解决糖果分配问题
c++·算法·贪心算法
你知道网上冲浪吗2 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
地平线开发者3 小时前
征程 6 | PTQ 精度调优辅助代码,总有你用得上的
算法·自动驾驶
Tisfy4 小时前
LeetCode 837.新 21 点:动态规划+滑动窗口
数学·算法·leetcode·动态规划·dp·滑动窗口·概率
CoovallyAIHub4 小时前
为高空安全上双保险!无人机AI护航,YOLOv5秒判安全带,守护施工生命线
深度学习·算法·计算机视觉
huangzixuan10074 小时前
08.18总结
算法·深度优先·图论
逆向菜鸟4 小时前
【摧毁比特币】椭圆曲线象限细分求k-陈墨仙
python·算法
DolphinDB5 小时前
DolphinDB 回测插件快速上手
算法
利刃大大5 小时前
【动态规划:路径问题】最小路径和 && 地下城游戏
算法·动态规划·cpp·路径问题