蓝桥杯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;
}
相关推荐
TracyCoder123几秒前
LeetCode Hot100(28/100)——104. 二叉树的最大深度
算法·leetcode
执着25911 分钟前
力扣hot100 - 101、对称二叉树
数据结构·算法·leetcode
多恩Stone14 分钟前
【3D-AICG 系列-1】Trellis v1 和 Trellis v2 的区别和改进
人工智能·pytorch·python·算法·3d·aigc
三月微暖寻春笋14 分钟前
【和春笋一起学C++】(五十九)派生类和基类之间的关系
c++·基类·派生类·关系
数智工坊16 分钟前
【数据结构-栈、队列、数组】3.3栈在括号匹配-表达式求值上
java·开发语言·数据结构
mit6.82420 分钟前
模运算|z函数 字符串匹配
算法
阿豪只会阿巴21 分钟前
【吃饭香系列】二周目|代码随想录算法训练营第七天|454.四数相加II |383. 赎金信 |15. 三数之和 |18. 四数之和
算法
小O的算法实验室24 分钟前
2025年COR SCI2区,考虑风场影响的无人机搜救覆盖路径规划精确界算法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
xqqxqxxq26 分钟前
洛谷算法1-3 暴力枚举(NOIP经典真题解析)java(持续更新)
java·开发语言·算法
_OP_CHEN27 分钟前
【算法基础篇】(五十五)卡特兰数封神之路:从括号匹配到二叉树构造,组合数学的万能钥匙!
算法·蓝桥杯·c/c++·组合数学·卡特兰数·算法竞赛·acm/icpc