P7154 [USACO20DEC] Sleeping Cows P 题解

news/2025/10/28 23:30:53/文章来源:https://www.cnblogs.com/MoyouSayuki/p/19172947

P7154 [USACO20DEC] Sleeping Cows P 题解

\(s, t\) 升序排序。

容易发现每一个 \(t_i\) 可匹配的 \(s_j\) 对应了一个前缀。

考虑刻画极大匹配,一个匹配是极大的当且仅当最大的没有被匹配的 \(t\) 小于最小的没有被匹配的 \(s\)

证明:充分性显然,如果一个匹配不是极大的,那么 \(\exists i, j, t_i\ge s_j\),其中 \(t_i, s_j\) 未匹配,转化为逆否命题得证必要性。

我们按数值从小到大考虑每一个 \(t_i\)\(s_j\),将它们按升序排成一行,如果把 \(t_i\) 视作黑球,\(s_j\) 视作白球,那么问题转化为了:前面的白球可以选择和后面的某一个黑球匹配,且最小没有匹配的白球后面没有未匹配的黑球。

这个经典的黑白球匹配问题可以用如下 DP 解决:\(f_{i, j, 0/1}\) 表示前 \(i\) 个球,有 \(j\) 个白球需要和后面的黑球匹配,是否有没有匹配的白球,转移考虑当前是黑球白球,以及是否和某个球匹配了。

时间复杂度 \(O(n^2)\)

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <ctime>
#define int long long
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
typedef unsigned long long ull;
const int N = 6000 + 10, mod = 1e9 + 7;int n, a[N], b[N], w[N], f[N][N][2], idx;
PII p[N];signed main() {ios::sync_with_stdio(0), cin.tie(0);cin >> n;for(int i = 1; i <= n; i ++) cin >> a[i], p[++ idx] = {a[i], 0};for(int i = 1; i <= n; i ++) cin >> b[i], p[++ idx] = {b[i], 1};sort(p + 1, p + idx + 1);f[0][0][0] = 1;for(int i = 1; i <= idx; i ++) {for(int j = 0; j <= i; j ++) {for(int o = 0; o < 2; o ++) {if(f[i - 1][j][o]) {int v = f[i - 1][j][o];if(p[i].y) { // blackif(!o) f[i][j][o] = (f[i][j][o] + v) % mod;if(j) f[i][j - 1][o] = (f[i][j - 1][o] + v * j) % mod;}else {f[i][j][1] = (f[i][j][1] + v) % mod;f[i][j + 1][o] = (f[i][j + 1][o] + v) % mod;}}}}}cout << (f[idx][0][0] + f[idx][0][1]) % mod << '\n';return 0;
}

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

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

相关文章

Java流程控制——switch多选择结构

Java流程控制——switch多选择结构swtich多选择语句 多选择结构的另一实现方式为switch-case语句 switch-case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 基本结构示例 switch(expression){case…

P3607 [USACO17JAN] Subsequence Reversal P 题解

好题P3607 [USACO17JAN] Subsequence Reversal P 题解 如果我们顺序对翻转的子序列做 DP,那么在末尾新增一个数会影响前面所有数的交换对应关系。 思考这个翻转的结构,前后对应的数交换,如果我们同时加入前后两个对…

示性函数2

Problem 设有一个大小为 $ n $ 的集合,进行 $ n $ 次操作,每次从集合中随机选取一个元素并记录之,求所有操作结束后,所记录的元素中互不相同的元素的个数的期望 $ E(X) $。分析 通常示性函数在应用与解决此类问题时…

随笔/杂记

随便写写记记 罗素茶壶:一个主张的不可证伪性,并不能成为相信它的理由。

k3s 基础 —— 将 traefik 替换为 ingress-nginx

k3s 基础 —— 将 traefik 替换为 ingress-nginx部署 创建 ingress-nginx.yaml apiVersion: helm.cattle.io/v1 kind: HelmChart metadata:name: ingress-nginxnamespace: kube-system spec:chart: https://<yourcd…

使用 Swift 解析验证码(结合 Tesseract OCR)

环境准备 1.1 安装 SwiftmacOS 自带 Swift,如需更新,可使用: xcode-select --install 更多内容访问ttocr.com或联系1436423940 然后检查 Swift 版本: swift --version Linux 用户可以从 Swift 官方网站 下载对应版…

常见排序算法Java实现

/**常见排序算法汇总 */ public class SortAlgorithms { /**冒泡排序(Bubble Sort) 思想:相邻元素两两比较,大的往后沉。 时间复杂度:O(n^2) 稳定性:稳定 */ public static void bubbleSort(int[] arr) { for (i…

题解:qoj1875 Nein

题意:给出 \(k,n\),问第 \(n\) 个是 \(10^k-1\) 的倍数的且每个数字不含有 \(9\) 的数是多少。\(k\le 18,n\le 10^{18}\)。 做法: 首先先跳出一个很显然的想法,一开始看这个东西觉得应该是拆成 \(x10^k-x\) 去讨论…

【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息(摘)

一、map组件基础使用<template><view class="contact"><image class="img" :src="formData.headImg"></image><view class="info"><view @…

.NET开发上手Microsoft Agent Framework(一)从开发一个AI美女聊天群组开始

前言 在AI快速发展的今天,微软推出了多个AI开发框架,从早期的AutoGen到Semantic Kernel,再到最新的Microsoft Agent Framework。很多开发者可能会有疑问:为什么微软要推出这么多框架?它们之间有什么区别?本文将通…

10/28

10/28今天在工程实训里学习了金属工艺加工,学习了java的相关网课

大学四年的学费/生活费自足攻略

1997年夏天带着通过亲戚朋友筹集的学费4000元踏上了北上兰州的旅程。我独自一人第一次穿越3000公里来到兰州,办好入学手续住进宿舍。虽然没有政和的老乡,但是有几位南平的老乡来找我,特别是建瓯话和政和话是一样的,…

175天 隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

三种工具 frp/NPS/Chisel 不用过多的纠结去使用哪一款工具 frp的C2上线 解决的问题: 1.C2上线 2.实现信息收集(两个) 这边可以使用CS生成一个47.xx.xx.xx的后门,然后搭建frp后,进行上线 下面相当于是把端口映射出…

10.28每日总结

今天的主要课程有人机交互技术,软件构造,软件企业文化。完成了上周机器学习的作业以及企业文化的报告,软考准备开始专精刷题里,加油!

102302126李坤铭作业1

作业1 用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。 1)代码: 点击查看代码 import requests from bs4 import Bea…

10月28日日记

1.今天进行工程实训 2.明天学习马哲 3.负载因子为什么通常设置为0.75?

【大模型应用开发】之本地部署大模型

本地部署本地部署一般是在自己的服务器上部署,但这里以本地电脑进行部署为例,由于电脑配置远远无法支持大模型配置要求,届时部署下来的也是阉割版的。本地部署一种方案就是ollama,官方地址:https://ollama.com访问…

link元素的用法及HTML样板

本人学习时候很容易额外扩展,因为很多次见到同一个熟悉但不了解的代码或用法我会很难受,所以我把基本用法都列出来了,看起来会很冗杂(因为不仅不同文章重复,相同文章我也在重复-.-),但结合实例来回对比查阅让我…