首页 > 其他分享 >[AGC024E] Sequence Growing Hard

[AGC024E] Sequence Growing Hard

时间:2023-09-25 22:12:52浏览次数:48  
标签:int Hard 节点 AGC024E MAXN Growing 末尾 dp

Sequence Growing Hard
不难发现设合法的条件为第 k 位后,需满足 \(k\in[1,n)\)\(A_{i,k+1}\leq A_{i+1,k}\) 或 k=n。
对于连续相等的一段,在任意位置放得到的 A_{i+1} 相同需去重。
以上两种方式体现为,在末尾放 x,放一段不降序列,再在末尾放 x,再放一段不降序列。以此类推。
所以我们把在末尾放 x 作为特殊操作,思考如何表示放不降序列的过程。
发现使用树形 DP,\(dp_{i,j}\) 表示点数为 i,根节点权值为 j,子节点权值>=j 的方案数。
题目变为有标号树个数计数。
特别的,i 连向根节点表示放入 i 序列末尾。
由于需要去重,需要钦定一个编号最小的节点放在前面,具体的

\[dp_{i,j}=\sum_{k=1}^{i-1}\sum_{l=j+1}^{up}\binom{i-2}{k-1}dp_{k,l}dp_{i-k,j} \]

意思就是新加入 k-1 个点后把这些点是第几个放入插板。

#include<cstdio>
#include<iostream>
using namespace std;
#define ll long long
const int MAXN=305;
int n,m,Mod;
ll dp[MAXN][MAXN],s[MAXN][MAXN],c[MAXN][MAXN];
int main(){
	scanf("%d%d%d",&n,&m,&Mod);
	c[0][0]=1;
	for(int i=1;i<=n;i++){
		c[i][0]=1;
		for(int j=1;j<=i;j++){
			c[i][j]=(c[i-1][j]+c[i-1][j-1])%Mod;
		}
	}
	for(int i=0;i<=m;i++){
		dp[1][i]=1;s[1][i]=m-i+1;
	}
	for(int i=2;i<=n+1;i++){
		for(int k=m;k>=0;k--){
			for(int j=1;j<i;j++){
				dp[i][k]=(dp[i][k]+c[i-2][j-1]*(s[j][k+1]*dp[i-j][k]%Mod)%Mod)%Mod;
			}
			s[i][k]=(dp[i][k]+s[i][k+1])%Mod;
		}
	}
	printf("%lld",dp[n+1][0]);
	return 0;
}	

标签:int,Hard,节点,AGC024E,MAXN,Growing,末尾,dp
From: https://www.cnblogs.com/StranGePants/p/17728915.html

相关文章

  • 使用shuffle sharding增加容错性
    使用shufflesharding增加容错性最近在看kubernetes的APIPriorityandFairness,它使用shufflesharding来为请求选择处理队列,以此防止高吞吐量流挤占低吞吐量流,进而造成请求延迟的问题。介绍首先看下什么是shufflesharding,下面内容来自aws的Workloadisolationusingshuffle......
  • shardingdb:支持分片和并发读写的 GoLevelDB
    概述shardingdb是一个开源包,旨在为GoLevelDB增加分片和并发读写功能。它可以作为LevelDB的替代品,方便地集成到现有项目中。本博客将介绍shardingdb及其功能,并介绍如何在您的项目中使用它。特点-分片支持:shardingdb使您能够将数据分布在多个LevelDB实例中,提高性能和......
  • 论文阅读: Co-design Hardware and Algorithm for Vector Search
    1.Introduction介绍一下论文背景,向量检索常用于搜索引擎,推荐系统,LLM和科学计算等对应的常用的硬件向量检索方法,IVF-PQ其中IVF:将多个向量聚类,PQ将向量压缩而为了最大化IVF-PQ的效果,也会面临很多的挑战在芯片设计的过程中,会遇到针对六个阶段如何设计合适的微架构?如何将有......
  • git硬重置(hard reset)重找回
    首先进行git版本回退1、gitlog查找历史commit_idgitlog 2、版本回退gitreset--hardcommit_id 3、找回你的提交(commit),因为Git对每件事都会有日志,且都会保存几天。gitreflog 4、选择你想要回到的提交(commit)的SHA,再重置一次:gitreset--hardcomm......
  • MongoDB Sharding深入学习
    对于MongoDB的Sharding(分片)技术并不陌生,但是发现里面其实还是有不少值得深入学习的东西。笔记整理一下发上来跟大家分享。-----------------------------------一、MongoDB分片机制:1、一个分片包含数据的某一子集。若某一分片包含多台服务器。则每台服务器都拥有完整的数据副本。......
  • [LeetCode] 85. Maximal Rectangle_Hard tag: Dynamic Programming
    Givena rowsxcols binary matrix filledwith 0'sand 1's,findthelargestrectanglecontainingonly 1'sandreturn itsarea. Example1:Input:matrix=[["1","0","1","0","0"],["1&q......
  • CF1867E2 Salyg1n and Array (hard version)
    其实如果你在做E1的时候想到正解了,这道题都甚至不需要改E1的代码,直接交就好,这大概也是E2的分还没E1的高的原因。因为一摸一样的思路,所以这里就不作介绍了,可以看看我的题解。在这里呢,主要是稍微证明一下询问次数不会超,如下:可以发现,有余数的情况,只会增加两次询问,而后面的......
  • LeetCode297:hard级别中最简单的存在,java版,用时击败98%,内存击败百分之九十九
    本篇概览因为欣宸个人水平有限,在刷题时一直不敢面对hard级别的题目,生怕出现一杯茶一包烟,一道hard做一天的窘境这种恐惧心理一直在,直到遇见了它:LeetCode297,建议不敢做hard题的新手们速来围观,拿它练手,轻松找到自信题目简介二叉树的序列化与反序列化序列化是将一个数据......
  • 【题解】CF1854A2 Dual (Hard Version)
    你考虑我们A1只需要通过自加凑一个最大的数,然后将所有的数都变成正数,最后做一次前缀和即可。(不懂可以看看落谷题解)好,我们现在去看HardVersion的\(31\)次操作怎么分配:前缀和(全为正)/后缀和(全为负)——\(19\)次还剩下\(12\)次,不知道该怎么做。我们的目标便变......
  • CF1374E2 Reading Books(hard version) 题解
    CF1374E2ReadingBooks(hardversion)这道题是在CF1374E1ReadingBooks(easyversion)的基础上出的,而且仅仅增加了一个\(m\)的限制,下面的做法也是基于简单版的思路而想到的。建议先尝试简单版,然后尝试此题。题意简述:有\(n\)本书,每本书有一个阅读时间\(t_i\),和属性\(......