蓝桥杯dp 负载均衡 传球游戏 摆花 画中漂流

cpp 复制代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n, m;
struct use
{
	int start;
	int times;
	int resum;
};
int const N = 2e5 + 10;
int arr[N];
vector<use>v[N];
int main()
{
	cin >> n >> m;
	for (int i = 1;i <= n;i++)
	{
		cin >> arr[i];
	}
	for (int i = 1;i <= m;i++)
	{
		int a, b, c, d;
		cin >> a >> b >> c >> d;
		int sum = arr[b];
		/*for (int j = 0;j < v[b].size();j++)
		{
			if (v[b][j].start + v[b][j].times > a)
			{
				sum -= v[b][j].resum;
			}
			else
			{
				vector<use>::iterator it = v[b][j];
			}
		}*/
		
		for (vector<use>::iterator it = v[b].begin();it != v[b].end();)
		{
			if ((*it).start+(*it).times>a)
			{
				sum -= (*it).resum;
				it++;
			}
			else
			{
				vector<use>::iterator tmp = it;
				it = v[b].erase(tmp);
			}
		}
		sum -= d;
		if (sum >= 0)
		{
			cout << sum << endl;
			use u;
			u.start = a;
			u.times = c;
			u.resum = d;
			v[b].push_back(u);
		}
		else
		{
			cout << -1 << endl;
		}
	}
	return 0;
}
cpp 复制代码
#include<iostream>
using namespace std;
int n, m;
int const N = 50;
int dp[50][50];
int main()
{
	cin >> n >> m;
	dp[0][1] = 1;
	for (int i = 1;i <= m;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			if (j == 1)
			{
				dp[i][j] = dp[i - 1][2] + dp[i - 1][n];
			}
			else if (j == n)
			{
				dp[i][j] = dp[i - 1][n - 1] + dp[i - 1][1];
			}
			else
			{
				dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j + 1];
			}
		}
	}
	cout << dp[m][1] << endl;
	return 0;
}
cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int n, m;
int mod = 1e6 + 7;
int const N = 110;
int dp[N][N];
int arr[N];
int main()
{
	cin >> n >> m;
	dp[0][0] = 1;
	for (int i = 1;i <= n;i++)
	{
		cin >> arr[i];
	}
	//表示前i个数总和为j的方案数
	for (int i = 1;i <= n;i++)
	{
		for (int j = 0;j <= m;j++)
		{
			for (int k = 0;k <= min(arr[i], j);k++)
			{
				dp[i][j] = (dp[i][j] + dp[i - 1][j - k]) % mod;
			}
		}
	}
	cout << dp[n][m] << endl;
	return 0;
}
cpp 复制代码
#include<iostream>
using namespace std;
long long mod = 1e9 + 7;
long long d, t, m;
long long dp[3010][1510];
int main()
{
	cin >> d >> t >> m;
	//表示时间为 i,体力为j 的方案数
	dp[0][m] = 1;
	for (int i = 1;i <= t;i++)
	{
		for (int j = 0;j <= m;j++)
		{
			if ((m - j) * 2 - i + d > 0)
			{
				dp[i][j] = (dp[i - 1][j] + dp[i - 1][j + 1]) % mod;
			}
		}
	}
	cout << dp[t][0] << endl;
	return 0;
}
相关推荐
BothSavage6 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn6 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽7 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
郝学胜_神的一滴7 小时前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
先吃饱再说1 天前
判断回文字符串,从一行代码到双指针优化
算法
见过夏天1 天前
C++ 基础入门完全指南
c++
黄敬峰1 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术1 天前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六1 天前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程