首页 > 其他分享 >#dp,Dilworth定理#洛谷 4934 礼物

#dp,Dilworth定理#洛谷 4934 礼物

时间:2024-05-09 20:23:48浏览次数:21  
标签:10 洛谷 int Dilworth ans 4934 include dp

题目传送门


分析

首先,可以放在一起当且仅当 \(\max\{a_i,a_j\} \& \min\{a_i,a_j\} \neq \min\{a_i,a_j\}\)

根据 Dilworth 定理可知最小链划分中链的数目等于最长反链的长度

所以设 \(dp[i]\) 表示以 \(i\) 为结尾的反链的最大长度,则 \(dp[i]=\max_{j| i}\{dp[j]\}+[a_k==i]\)

构造可以根据当前的 \(dp\) 值划分给各个箱子,因为最终答案为 \(dp[2^k-1]\)


代码

#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N=1050011;
int n,m,v[N],dp[N];
vector<int>K[N];
int iut(){
	int ans=0,f=1; char c=getchar();
	while (!isdigit(c)) f=(c=='-')?-f:f,c=getchar();
	while (isdigit(c)) ans=ans*10+c-48,c=getchar();
	return ans*f; 
}
void print(int ans){
	if (ans>9) print(ans/10);
	putchar(ans%10+48);
}
int main(){
	n=iut(),m=iut();
	for (int i=1;i<=n;++i) ++v[iut()];
	for (int i=0;i<(1<<m);++i){
		for (int j=i;j;j&=j-1) dp[i]=max(dp[i],dp[i^(-j&j)]);
		if (v[i]) K[++dp[i]].push_back(i);
	}
	putchar(49),putchar(10),print(dp[(1<<m)-1]);
	for (int i=1,len;i<=dp[(1<<m)-1];++i){
		putchar(10),print(len=K[i].size());
		for (int j=0;j<len;++j) putchar(32),print(K[i][j]);
	}
	return 0;
}

标签:10,洛谷,int,Dilworth,ans,4934,include,dp
From: https://www.cnblogs.com/Spare-No-Effort/p/18183009

相关文章

  • 洛谷题单指南-动态规划2-P4310 绝世好题
    原题链接:https://www.luogu.com.cn/problem/P4310题意解读:求最长的子序列长度,使得每相邻两个元素&操作不为0。解题思路:直观来看,可以通过类似最长上升子序列的算法,进行状态转移,但是复杂度为O(n^2),会超时状态表示:dp[i]表示前i个数能产生满足条件的子序列的最长长度状态转移:dp......
  • 洛谷题单指南-动态规划2-P1833 樱花
    原题链接:https://www.luogu.com.cn/problem/P1833题意解读:在有限的时间内,看n株樱花树,第i株樱花树可以看pi次,看每株樱花树耗费时间ti,看每株樱花树一次美学值ci,求最多能看到多少美学值。解题思路:本题实质是一个混合背包问题(pi>0是多重背包,pi=0是完全背包):背包容量:总时间,可以根据......
  • 历史研究(洛谷AT_joisc2014_c 歴史の研究)
    历史研究(洛谷AT_joisc2014_c 歴史の研究)题目描述IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记。JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件。日记中记录了连续N天发生的事件,大约每天发生一件。......
  • 他是 WC 第一名,也是在线知名题库的洛谷”网红“
    改编自他是ISIJ第四名,也是在线知名题库的洛谷“网红”。2024年全国青少年信息学奥林匹克竞赛冬令营(WC)上,以优秀成绩斩下第一名年仅六年级的陈彦汐,成为最夺目的选手之一。而且虽然是六年级的选手,但他取得优异成绩后,不少网友并不感到陌生,纷纷留言:这不是洛谷上天天爆切神仙题的......
  • 洛谷题单指南-动态规划2-P1854 花店橱窗布置
    原题链接:https://www.luogu.com.cn/problem/P1854题意解读:F束花依次放入V个花瓶,每个花瓶最多一朵,且花的顺序在花瓶中递增,计算最大的美学值,并且输出每朵花具体放置方案。解题思路:首先想到的的DFS法,对于每一朵花,枚举所有的摆放方案,累加美学值,并记录放置位置,完成一种方案就记录最......
  • 洛谷P1576最小花费(逆Dijkstra算法)
    背景:说实话,这题有点考建模思想,及对Dijkstra算法的理解思路:因为转账间有手续费,即有一定损失比例,故边权均小于1(比例来说),而边的路权值非和,而是积,故边权相当于负(因为每次乘会使dis[i]变小)而题目刚好求最大路,而边权又等价于全为负,不刚好是Dijkstra的逆运用吗?原理:等......
  • 洛谷题单指南-动态规划2-P1435 [IOI2000] 回文字串
    原题链接:https://www.luogu.com.cn/problem/P1435解题思路:方法1:回文字串的特点是,正着读、反着读是一样的换一个思路,对于一个字符串s,正序、逆序公共的部分就是已经是回文的部分,剩余的部分就是要插入的字符所以,问题转换为,计算一个字符串正序、逆序的最长公共子串,然后剩下的长度......
  • 洛谷P2375 [NOI2014] 动物园
    动物园题目描述输入格式输出格式输入输出样例输入3aaaaaababcababc输出36132开始时都没看出来这是kmp板子题先看看AC代码吧#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintmaxn=1e6+10;constintmod=1e9+7;chara[maxn];in......
  • #交互,dp#洛谷 7998 [WFOI - 01] 猜数(guess)
    题目传送门分析首先要搞清楚,交互库的自适应会让区间长度尽可能增大(答案自适应)也就是说,如果现在区间为\([l,r]\),你选取的区间为\([l',r']\),那么交互库会让你的区间变成\([l,r'-1]\)和\([l'+1,r]\)中区间更长的那一个,不妨枚举这个长度设\(dp[i]\)表示区间长度为\(i\)......
  • 洛谷2664树上游戏-点分治
    link:https://www.luogu.com.cn/problem/P2664lrb有一棵树,树的每个节点有个颜色。给一个长度为\(n\)的颜色序列,定义\(s(i,j)\)为\(i\)到\(j\)的颜色数量。以及\[sum_i=\sum_{j=1}^ns(i,j)\]现在他想让你求出所有的\(sum_i\)。一个暴力的想法:因为是求和,所以可以拆......