蓝桥杯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;
}
相关推荐
学嵌入式的小杨同学20 分钟前
STM32 进阶封神之路(三十二):SPI 通信深度实战 —— 硬件 SPI 驱动 W25Q64 闪存(底层时序 + 寄存器配置 + 读写封装)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
米粒124 分钟前
力扣算法刷题 Day 27
算法·leetcode·职场和发展
好大哥呀1 小时前
C++ Web 编程
开发语言·前端·c++
Fuxiao___1 小时前
C 语言核心知识点讲义(循环 + 函数篇)
算法·c#
Mr_Xuhhh2 小时前
LeetCode hot 100(C++版本)(上)
c++·leetcode·哈希算法
漫随流水2 小时前
c++编程:反转字符串(leetcode344)
数据结构·c++·算法
南境十里·墨染春水2 小时前
C++ 笔记 友元(面向对象)
开发语言·c++·笔记
C++ 老炮儿的技术栈3 小时前
分享一个安全的CString
c语言·c++·windows·git·安全·visual studio
穿条秋裤到处跑3 小时前
每日一道leetcode(2026.03.31):字典序最小的生成字符串
算法·leetcode
桦03 小时前
[C++复习]:STL
开发语言·c++