Dilworth定理学习笔记

定理内容

偏序集上最小链划分中链的数量等于其反链长度的最大值

定理理解

偏序集:配备了偏序关系的集合

偏序关系:配备了部分排序关系的集合

通俗来讲,定义集合A中的一个二元关系\(\leq\)对于\((a_1,b_1)\)\((a_2, b_2)\)两个元素,我们可以定义\((a_1, b_1)\) \(\leq\) \((a_2, b_2)\)当且仅当\(a_1 \leq a_2\)\(b_1 \leq b_2\),而若\(a_1 > a_2\)\(b_1 \leq b_2\),这两个元素就不可比。在满足自反性,反对称性,传递性三个条件时,\((A, \leq)\)就是个偏序集

反链:若偏序集\((B, \leq)\)中的元素两两不可比,则称\(B\)为反链

例题

TJOI2015组合数学

#include <bits/stdc++.h>
#define i64 long long
using namespace std ;
const int MAXN = 1005 ;
int t ;
int n, m ;
i64 a[MAXN][MAXN] ;
i64 dp[MAXN][MAXN] ;
void solve()
{
    cin >> n >> m ;
    for(int i = 1 ; i <= n ; i ++ )
    {
        for(int j = 1 ; j <= m ; j ++ )
        {
            cin >> a[i][j] ;
        }
    }
    for(int i = 1 ; i <= n ; i ++ )
    {
        for(int j = m ; j >= 1 ; j -- )
        {
            dp[i][j] = max(dp[i - 1][j + 1] + a[i][j], max(dp[i-1][j], dp[i][j + 1])) ;
        }
    }
    cout << dp[n][1] << endl ;
}
int main()
{
    cin >> t ;
    while(t -- )
    {
        solve();
    }
    return 0 ;
}
posted @ 2023-04-25 20:02  Lwen1243  阅读(29)  评论(0)    收藏  举报