2024_CCPC网络赛I题

news/2024/9/19 12:52:21/文章来源:https://www.cnblogs.com/dhu-gxy/p/18418234

2024_CCPC网络赛I题

题目链接

思路

  • time为1s,n==200,可以\(n^3\)做法。

  • 可以想到枚举每一个时间间隔。原先的思路是对于每一个确定的时间,比如x,通过某种dp求出来时间为x的时候的方案数目。所以比赛的时候一直卡在这里没做出来。

  • 有一个小trick:
    当我们在枚举某一个变量统计结果的时候,我们需要之后刚刚好这个变量为x的时候的结果,可以考虑求解出来所有\(>=x\)的结果,在求解出来所有\(>=(x+1)\)的结果,进行差分可以得到刚好等于x的结果
    也就是用差分的思想来代替原先的刚好等于的情况。
    同时也可以使用\(<=\)

  • 使用了上面的trick之后,处理对于每一个变量x如何求解方案数目。
    状态转移方程:首先可以想到,\(dp[i][j]\)表示前i个人,选择了\(j\)个物品的方案数目。是选择了j件,如果想要表示在前j件里面做了什么事情,还要有新的维度。
    对于当前的时间间隔d,只要物品和人物的时间间隔\(>=d\),这个人就可以选择这个物品。可以先使用sum[]数组,预处理出来每一个人有多少种选择。

    对于第i个人,可以选择的物品的坐标区间是\([0,pos_1]\),对于第i+1个人可以选择的物品的位置的区间:\([0,pos_2]\)

    pos2一定大于等于pos1,也就是前一个人可以选择的区间,一定是后一个人的子集。

    5的选择一定是6里面的选择。

  • 方程转移:
    对于\(dp[i][j]\)。首先一种方式就是

    \[dp[i][j] += dp[i-1][j] \]

  • 另外一种:第i个人选择一件物品:

    \[dp[i][j] += dp[i-1][j-1] * (sum[i] - (j-1)) \]

    \(dp[i-1][j-1]\)是前i-1个人一共选择了j-1件物品,\(sum[i] - (j-1)\)是当前第i个人还有多少个自己可以选择。两者是相乘的关系。(组合数学的内容)。

  • 最后统计一下答案就好了,细节在代码的注释里面。

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 998244353;
const int N = 505;
int a[N], b[N];
int g[N];//表示 d >= x 的方案数目。
int sum[N];//sum[i] 表示 在d确定的时候 第i个人 可以拿的所有的行李数目
int f[N][N];//表示在某一个d的情况下,前i个人 拿了j件行李的方案数目。
void solve()
{int n, m;cin >> n >> m;for(int i = 1; i <= n; i++) cin >> a[i];for(int j = 1; j <= m; j++) cin >> b[j];sort(a + 1, a + 1 + n);sort(b + 1, b + 1 + m);int ans = 0;for(int d = 0; d <= 500; d++){for(int i = 0; i <= m; i++) sum[i] = 0;for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){if(b[i] - a[j] >= d) sum[i]++;}}for(int i = 0; i <= m; i++){for(int j = 0; j <= n; j++){f[i][j] = 0;}}for(int i = 0; i <= m; i++){f[i][0] = 1;}for(int i = 1; i <= m; i++){for(int j = 1; j <= min(n, sum[i]); j++){f[i][j] = (f[i][j] + f[i - 1][j]) % mod;f[i][j] = (f[i][j] + f[i - 1][j - 1] *  (sum[i] - (j - 1))) % mod;}}for(int j = 1; j <= n; j++){g[d] = f[n][j] + g[d];g[d] %= mod;}}for(int d = 0; d + 1 <= 500; d++){ans = (ans + (g[d] - g[d + 1]) * d) % mod;ans %= mod;}cout << ans << "\n";
}signed main()
{solve();return 0;
}

提一下边界情况:
很明显,最后添加答案的时候,必须要存在至少一件物品被选择。所以统计\(g[d]\),也就是时间大于等于d的方案数的时候,直接从\(f[n][1]\)开始添加。
但是其实,就算从\(f[n][0]\)开始也是一样的,因为如果都用了\(f[n][0]\),后面的差分会把这种情况自动消除。不过在实际意义上就会不好理解。
以及,这个题目,用\(f[i][0]== 1\)赋初值很好理解,如果不想这样,就需要自己加特判手动更新\(f[i][1]\)。然后转移方程从j = 2开始就好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799271.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Z-Blog提示数据库连接错误的原因

Z-Blog 提示数据库连接错误的原因可能有多个,以下是一些常见的原因及其解决方法:数据库连接信息错误:数据库服务器地址、端口、数据库名称、用户名或密码输入错误。 解决方法:检查数据库连接信息是否正确,并确保数据库用户具有足够的权限来连接数据库。数据库服务未启动:…

安装zblog提示数据库连接失败,怎么解决

当安装 Z-Blog 时提示数据库连接失败,可以尝试以下步骤来解决这个问题:检查数据库连接信息:确认数据库服务器地址、数据库名称、用户名和密码是否正确无误。 检查数据库连接字符串中的端口号是否正确,以及是否需要使用端口号。确认数据库服务状态:确认数据库服务正在运行。…

zblog后台访问不了应用中心的解决办法

当您遇到 Z-Blog 后台无法访问应用中心的问题时,可以从以下几个方面着手解决:检查网络连接:确保服务器能够访问互联网,并且没有防火墙或安全设置阻止对外部站点的访问。检查服务器配置:确认服务器是否允许远程访问应用中心的服务器地址 app.blogcn.net。如果服务器上有任何…

zblog水印插件上传图片提示getimagesize

当您在使用 Z-Blog 的水印插件上传图片时遇到 getimagesize 的错误提示,这通常意味着 PHP 在尝试获取图片信息时出现了问题。getimagesize 函数用于获取图像尺寸和其他信息,如果它无法正常工作,可能是由于以下几个原因:文件类型不支持:getimagesize 不支持所有类型的图像文…

zblog后台的应用中心登录提示错误解决方法

Z-Blog 后台应用中心登录提示错误的情况时,可以尝试以下几种解决方法:检查应用中心插件版本:登录 Z-Blog 后台,进入“应用中心”页面,检查是否有应用中心插件的更新可用。 如果有更新,尝试升级应用中心插件到最新版本。检查网络连接:确保服务器能够访问互联网,并且没有…

Ros2 - Moveit2 - MoveItCpp

MoveItCpp 教程 介绍 MoveItCpp 是一个新的高级接口,一个统一的 C++ API,不需要使用 ROS 操作、服务和消息来访问核心 MoveIt 功能,并且是现有MoveGroup API的替代方案(不是完全替代) ,我们建议需要更多实时控制或行业应用的高级用户使用此接口。PickNik Robotics 已根据…

ZBLOG错误原因:数据库连接错误

当您在使用 Z-Blog 时遇到“数据库连接错误”,这可能是由多种原因引起的。根据过去的经验和提供的信息,以下是一些可能的原因及解决方案:权限问题:确保数据库用户拥有足够的权限来连接数据库以及执行必要的读写操作。 检查数据库连接配置文件中的用户名和密码是否正确。文件…

Z-blog上传文件时出现未知错误

当在使用 Z-Blog 上传文件时遇到未知错误,可以尝试以下几个方面来诊断和解决问题:检查文件格式:确保上传的文件格式是 Z-Blog 支持的。常见的支持格式包括 JPEG、PNG 和 GIF。如果你上传的是其他格式的文件,可能就会导致上传失败。检查文件大小:Z-Blog 对上传文件的大小有…

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览VMware vSphere 8.0 Update 3b 发布下载,新增功能概览 vSphere 8.0U3 | ESXi 8.0U3 & vCenter Server 8.0U3 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u3/,查看最新版。原创作品,转载请保留出处。…

闯关提交04

书生浦语大模型上海人工智能实验室推出的一系列开源AI大模型 卓越的推理能力和超长文本处理功能 包括轻量级、中量级和重量级三个类别,分别对应不同的应用场景和性能需求 支持高达一百万词元的文本输入 提供了全链路开源体系,包括数据、预训练、微调、部署和评测等环节Intern…

VMware vCenter Server 8.0U3b 发布下载,新增功能概览

VMware vCenter Server 8.0U3b 发布下载,新增功能概览VMware vCenter Server 8.0U3b 发布下载,新增功能概览 Server Management Software | vCenter 请访问原文链接:https://sysin.org/blog/vmware-vcenter-8-u3/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.…

【日记】我太爱工作了,工装都发霉了(987 字)

正文突然好想吃学校里的老麻抄手。晚上不知道为什么,忽然特别特别想吃。这附近好像从来没有那么麻辣好吃的抄手。最后还是去一家店里点了金汤的抄手。虽然店里有红汤,但感觉应该没有老麻抄手那种味道。正巧我也没有吃过酸辣口,就点了试一下。最后吃起来感觉还行。今天似乎实…