ACG054 B - Greedy Division

文章目录

题目

https://atcoder.jp/contests/agc054/tasks/agc054_b

思路

怎么看,这题应该要DP,但是描述一个状态是很大问题:你怎么知道选了哪些橙子(共有 2 100 2^{100} 2100种情况)?

经过一番漫长的思考后,师父,我悟了!

其实,并不用描述选了哪些橙子,题目的关键就在排列 P P P和那两人拿橘子的顺序是一一对应的,比如说,Takahashi 依次取了1,5,2号橙子,Aoki依次取了4,3号橙子,那么,有且仅有一个 P P P和这种情况对应,且该 P P P只对应这种情况(用心体会下)

这样,问题就简单多了,设 f i f_i fi表示拿了 i i i个橙子,且它们的重量和恰好等于所有橙子重量和的一半,的方案数.答案就应该是(别忘了取模):
a n s = ∑ i = 1 n f i ⋅ i ! ⋅ ( n − i ) ! ans=\sum^n_{i=1}f_i\cdot i!\cdot (n-i)! ans=i=1nfii!(ni)!
i ! i! i!是其中一个人拿橙子的顺序的方案数, ( n − i ) ! (n-i)! (ni)!就是另一个人拿橙子的顺序的方案数

如何得到 f f f?

DP: f i , j f_{i,j} fi,j表示拿了 i i i个橙子,总重量为 j j j的方案数,过程有点像背包问题,应该都会了吧

代码

#include <iostream>
#include <cstdio>
using namespace std;
#define N 110
#define ll long long
#define mod 998244353ll
ll f[N][10010];
ll n , w[N] , sumw;
ll fac[N];

int main() {
	fac[0] = 1;
	for(int i = 1 ; i <= 100 ; i++)
		fac[i] = fac[i - 1] * i % mod;
	
	cin >> n;
	for(int i = 1 ; i <= n ; i++) {
		cin >> w[i];
		sumw += w[i];
	}
	if(sumw % 2 == 1) {
		cout << 0;
		return 0;
	}
	
	f[0][0] = 1;
	for(int i = 1 ; i <= n ; i++)//枚举第i个橙子
		for(int j = n ; j >= 0 ; j--)//一共j个橙子(除了i),注意倒叙枚举
			for(int k = sumw ; k >= 0 ; k--)//重量(除了i)
				f[j + 1][k + w[i]] += f[j][k],
				f[j + 1][k + w[i]] %= mod;
	
	ll ans = 0;
	for(int i = 1 ; i <= n ; i++)//求答案
		ans = (ans + fac[i] * fac[n - i] % mod * f[i][sumw / 2] % mod) % mod;
	
	cout << ans << endl;
	return 0;
}
基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值