首页 > 其他分享 >题解 P3974【[TJOI2015]组合数学】

题解 P3974【[TJOI2015]组合数学】

时间:2022-11-10 16:23:27浏览次数:73  
标签:10 P3974 int 题解 TJOI2015 财宝 include 1010

posted on 2022-10-28 14:11:41 | under 题解 | source

problem

给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。

\(n,m\leq 10^3,V\leq 10^6\)。

solution

建模:以右下角 \((n,1)\) 为原点,建立平面直角坐标系。将每一财宝拍成一个点,放在平面上,如图:

3 1 5 2
2 2 1 2
4 0 3 3

我们希望将“走一次”变成这样的一个问题:选出一些点 \(\{(x_i,y_i)\}\),使得对于任意 \(x_i<x_j\) 都有 \(y_i\geq y_j\)。我们把一个点的宝藏斜放在一个格子里保证了“走过”这个格子只会取走一个。

把它拍到序列上,相当于需要多少个单调不增的子序列覆盖这些点。

Dilworth 定理

  • 对于一个偏序集,其最少反链划分数等于其最大链的大小。
  • 对于一个偏序集,其最少链划分数等于其最大反链的大小。

应用到这道题,就是 单调不增的子序列的数量 = 最长单调递增的子序列的长度。

于是直接 dp 就可以了。

code

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
int n,m,a[1010][1010];
LL f[1010][1010];
int mian(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) scanf("%d",&a[i][j]);
	}
	for(int j=1;j<=m;j++){
		for(int i=n;i>=1;i--){
			f[i][j]=max({f[i+1][j-1]+a[i][j],f[i][j-1],f[i+1][j]});
		}
	}
	printf("%lld\n",*max_element(&f[1][1],&f[n][m]));
	return 0;	
}
int main(){
	for(scanf("%*d");~scanf("%d%d",&n,&m);mian());
	return 0;
}

证明

考虑导弹拦截,现在有很多个系统拦截了 \([1,i)\) 的导弹。欲将拦截 \(i\) 号导弹,我们一定是选当前最低的一个系统去拦截。如果导弹飞的比系统还高,那就给它开个系统。这样就感性地证明了 Dilworth 定理。

标签:10,P3974,int,题解,TJOI2015,财宝,include,1010
From: https://www.cnblogs.com/caijianhong/p/solution-P3974.html

相关文章

  • 【题解】【切开字符串】
    P8631[蓝桥杯2015国AC]切开字符串Sol首先问题可以转化为对每个前缀求出本质不同奇回文子串数,和对每个后缀求出本质不同子串数和本质不同奇回文子串数。本质不同子......
  • simpread-(127 条消息) fastAPI 中的跨域问题解决_小童同学_的博客 - CSDN 博客_fasta
    本文由简悦SimpRead转码,原文地址blog.csdn.netCrossOrigin前言前端采用Vue,后端采用fastAPI的CV项目在开发时遇到跨域问题,记录学习过程与解决方案。概念C......
  • 体验 Python 剪辑视频以及相关问题解决, 一劳永逸!
    前言对于使用Python对视频进行剪辑我们最常用的就是Moviepy,我之前也写过一篇​​《必杀技--使用FFmpeg命令快速精准剪切视频》​​,这篇文章单纯使用的是FFmpeg,他是通过......
  • 题解 P8827 [传智杯 #3 初赛] 森林
    本题解提供两种做法。做法一为了叙述方便,先引入\(n\)级母树的概念。定义\(1\)级母树即为该子树被删去前,其所在的原来的完整的树。如下图,以\(5\)为根的一级母树......
  • node -v显示信息 npm -v 不显示信息问题解决
    两个方法:第一个,1.将打开nodejs文件夹(如果你是安装到D盘,就打开D盘!就是nodejs文件所在目录)2.分别右击该文件,点击列表属性,选择安全,编辑,勾选写入,应用,确定。(目的是为了一会要......
  • 2022 icpc 沈阳站 记录(非题解)
    赛前大概是赛前三周才突然知道拥有了比赛机会。赛前训练和vp频率很高,有一段时间cf上都是绿的。比赛的那一周只有一天没在vp,到了周六热身赛我人都有点麻木。(可能正赛也是......
  • 题解 SP11198 【IPAD - Ipad Testing】
    postedon2021-06-0220:59:42|under题解|sourceSP11198是个神题,它考察了选手们的记忆、乱搞、找规律、压行能力。本题题解是乱搞题解,没有证明。下面就由我来解......
  • 题解 P7724 【远古档案馆(Ancient Archive)】
    postedon2021-07-1419:19:57|under题解|source首先我们先算一下网格最多可能有多少种状态,很显然是\(5^4=625\),完全可以暴力搜索。那怎么实现呢?可以使用bfs,以初......
  • 题解 P7775 【[COCI 2009-2010 #2] VUK】
    postedon2021-08-0316:20:45|under题解|sourcebfs+二分。首先算出一个数组\(w_{i,j}\),表示\((i,j)\)这个格子与离它最近的树的距离。这个过程可以参考P133......
  • 题解 P2482 【[SDOI2010]猪国杀】
    postedon2021-04-1619:58:01|under题解|source想看代码的直接跳Day6这题不能发题解,所以这是做题记录做题原因:499AC,教练推荐我切这题遗言前言:早就听说了这个......