AtCoder Grand Contest 024E: Sequence Growing Hard 题解

Hadoop生态系统-新手快速入门(含HDFS、HBase系统架构) Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量... 阅读详情

神仙题,感觉思路太神奇
题目等价于每次向序列里面插入一个新数,问有多少种方案
我们考虑怎样插入一个新数是合法的,假设当前插入的数是cur,那么有两种情况
1. cur放在序列的末尾
2. cur之后第一个与cur不一样的数比cur小(或者cur后面的数全都和cur一样)
我们发现改一下这个问题的初始条件,不是空序列,而是一个包含一个0的序列,这两种情况就变成只有第二种情况了,而且括号里的部分也不用考虑
接下来是神奇的部分
所以每个数被插入的时候都能在后面认领到一个唯一的比他小的数,这很像一个树的结构:每个点对应一个唯一的父亲
我们考虑用一个二元组(t,cur)来表示树上的每一个节点,t表示这是第几个被插入的数,cur表示这个插入的数是什么,那么(t,cur)和他的父亲(t’,cur’)之间应该满足t>t’,cur>cur’
所以我们的问题转化成了:按照上述规则建立一棵树,不同构的树有多少棵(这里同构不止要求形态相同,上面的二元组也要相同)
考虑树型dp,dp[i][j]表示有i个点的树,根节点的cur值是j的树有多少棵
转移考虑枚举这棵树的最后一棵子树的点的个数p,显然根据上面的规则它的根节点可以是j+1,j+2…k,又考虑到不能把同构的树重复计算,所以我们可以利用一种类似最小表示法的思想,我们保证这棵树编号最大的点在最后一棵子树上,这样除去原树的根节点和已经确定的编号最大的节点,我们还剩i-2个编号,要再给最后一个子树分配p-1个编号,这里可以用一个组合数
状态转移方程是

dp[i][j]=∑p=1i−1∑m=j+1kdp[p][m]∗dp[i−p][j]∗Cp−1i−2dp[i][j]=∑p=1i−1∑m=j+1kdp[p][m]∗dp[i−p][j]∗Ci−2p−1

这样总复杂度是O(n4)O(n4)的,注意到上面的m的一维可以用前缀和优化,所以复杂度降到O(n3)O(n3)
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <utility>
#include <cctype>
#include <algorithm>
#include <bitset>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#define LL long long
#define LB long double
#define x first
#define y second
#define Pair pair<int,int>
#define pb push_back
#define pf push_front
#define mp make_pair
#define LOWBIT(x) x & (-x)
using namespace std;

const int MOD=1e9+7;
const LL LINF=2e16;
const int INF=1e9;
const int magic=348;
const double eps=1e-10;
const double pi=3.14159265;

inline int getint()
{
    char ch;int res;bool f;
    while (!isdigit(ch=getchar()) && ch!='-') {}
    if (ch=='-') f=false,res=0; else f=true,res=ch-'0';
    while (isdigit(ch=getchar())) res=res*10+ch-'0';
    return f?res:-res;
}

int n,k,m;
LL dp[348][348],sum[348][348],c[348][348];

int main ()
{
    int i,j,p;
    n=getint();k=getint();m=getint();
    c[0][0]=1;
    for (i=1;i<=n;i++)
    {
        c[i][0]=c[i][i]=1;
        for (j=1;j<=i-1;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%m;
    }
    for (i=0;i<=k;i++) dp[1][i]=1,sum[1][i]=k-i+1;
    for (i=2;i<=n+1;i++)
        for (j=k;j>=0;j--)
        {
            dp[i][j]=0;
            for (p=1;p<=i-1;p++)
                dp[i][j]=(dp[i][j]+((dp[i-p][j]*sum[p][j+1])%m*c[i-2][p-1])%m)%m;
            sum[i][j]=(sum[i][j+1]+dp[i][j])%m;
        }
    printf("%lld\n",dp[n+1][0]);
    return 0;
}
GPFS扩展技术原理(十一)-FMDN广播与EID加解密 GFPS扩展技术原理(十一)FMDN广播及EID加解密 阅读详情

相关推荐

【微信小程序开发与设计】垃圾智能分类小程序

垃圾分类是将来生活可持续发展的必需项。但是很多人由于缺乏垃圾分类知识,或是因为垃圾分类困难,费时费力,所以没有好好贯彻垃圾分类政策,此时设计一款方便于群众进行智能化垃圾识别分类的微信小程序就显得尤为必要。

Markelle_Fultz的博客 8246

AGC024E - Sequence Growing Hard

AGC024E - Sequence Growing Hard 题目描述 Solution 我们可以把问题看成如下形式: 你有一个空序列,每次要加入一个元素xxx,x∈[1,k]x \in [1,k]x∈[1,k],使得新的序列字典序比上一个序列的字典序大。 显然如果我们加入一个数xxx,则它后面一个位置的数一定小于xxx(相等时可以将xxx往后移动,还是同一种方案)。 我们把这个序列看作一棵树,...

xmr_pursue_dreams的博客 420

决策规划算法四:Piecewise Jerk Path Optimizer

一,问题分析 路径规划的本质目的:规划出一条安全(无碰撞),舒适(平滑),符合车辆运动学的轨迹。 如下图所示,决策算法开辟凸空间后,路径规划算法用数值优化的方法搜索出一条最优路径,即将问题转化为二次规划的问题,采用二次规划的求解器进行求解。 二次规划问题的求解顺序: 1,确定优化变量 2,确定目标函数 3,确定约束条件 4,将目标函数和约束条件变形为二次规划的标准形式 5,用二次规划求解器进行求解,获得优化变量的序列,使得目标函数取得最小值。 注:路径的最终表达式为:,..

肥嘟嘟的左卫门 8562

[AGC024] E - Sequence Growing Hard 树型DP

把问题看成每次向序列中添加一个[1,K][1,K][1,K]的数,假设我们要填的数是xxx,因为要保证字典序变大,那么所填的位置往后的第一个非xxx数必须&amp;lt;x&amp;lt;xxxx中的任意位置再填一个xxx都是等价的,所以等同于只能在一个&amp;lt;x&amp;lt;xxxx。 那我们把填一个数看成一个二元组(t,w)(t,w)(t,w),表示在第ttt次填了数www,假设把这个www填的位置后面的那个&amp;l...

DOFYPXY的博客 917

[3D检测系列-PV-RCNN] PV-RCNN实战指南:从论文解析到代码调试全流程

本文提供了PV-RCNN在3D目标检测领域的实战全流程指南。文章深入解析了其Point-Voxel融合的核心思想,并详细演示了从环境搭建、数据准备、代码复现到模型训练与调试的具体步骤,特别针对常见的报错问题给出了解决方案,帮助开发者高效掌握这一经典算法。

weixin_29189381的博客 480

windows10系统上安装最新版mysql 8.0详细步骤

windows10系统上安装最新版mysql 8.0详细步骤

glei20的博客 6715

【AtCoder Grand 024E】Sequence Growing Hard 题解

题目大意   求满足以下条件的序列集合 {A0,A1,...,AN} 的个数,模 M: Ai​ 长度为 i,其中每个元素都是 [1,K] 内的一个正整数。 对于 i≥1,Ai​ 是由 Ai−1​ 在某个位置插入一个数得到的。 对于 i...

Four's 474

YOLO-World:从入门到实战的多模态目标检测全指南

想象一下,你给模型一张“公园”的图片,再输入文字“红色的郁金香”,它能直接在图中框出所有红色郁金香的位置——这就是多模态目标检测:结合图像视觉信息和文本语义信息,同时完成“是什么”(分类)和“在哪里”(定位)的任务。传统目标检测(如YOLOv5、YOLOv8)只能识别预定义的类别(比如训练时学过“猫”“狗”),但多模态目标检测摆脱了“类别预定义”的限制,只要文本能描述,它就能检测,这就是“开放词汇检测(Open-Vocabulary Detection)”的魅力。

know_F0727的博客 204

AtCoder Grand Contest 024 E - Sequence Growing Hard 动态规划

题意 给出n,k,m,问有多少个序列组(A0,A1,...,An)(A0,A1,...,An)(A_0,A_1,...,A_n)满足以下条件: 序列AiAiA_i的长度恰好为iii 所有元素均在[1,k][1,k][1,k]的范围内 Ai−1Ai−1A_{i-1}是AiAiA_i的子序列 AiAiA_i的字典序大于Ai−1Ai−1A_{i-1} 答案模mmm输出。 n,k≤300n,...

beginend 540

HALCON机器视觉之结合LMI Gocator 5504进行手机折叠屏异物、折痕和胶体检测(基于C# + HALCON)

手机折叠屏是一种创新的屏幕技术,它允许屏幕在一定程度上进行折叠,从而在便携性和屏幕尺寸之间取得平衡。这种屏幕通常由多层材料组成,包括柔性显示层、保护层和胶水层等。本文将详细介绍如何使用C#编程语言,结合HALCON和LMI Gocator 5504来实现手机折叠屏的异物、折痕和胶体检测。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 9319

让 PyCharm 代码“发光”:高亮插件与特效全攻略

PyCharm 作为一款强大的 Python IDE,支持多种插件让代码“发光”——无论是动态输入特效、彩虹括号,还是霓虹主题,都能让你的代码脱颖而出!进入 File → Settings → Editor → Color Scheme → Rainbow Brackets。进入 File → Settings → Appearance & Behavior → Material Theme。进入 File → Settings → Editor → Color Scheme → General。

qq_43580271的博客 3835

AGC24 E - Sequence Growing Hard-树形DP

传送门 题意: 给出n,k,m,问有多少个序列组(A0,A1,...,An)(A0,A1,...,An)(A_0,A_1,...,A_n)满足以下条件: 序列AiAiA_i的长度恰好为i 所有元素均在[1,k][1,k][1,k]的范围内 Ai−1Ai−1A_{i−1}是AiAiA_i的子序列 AiAiA_i的字典序大于Ai−1Ai−1A_{i−1} 答案模m输出。 n,...

Fizzmy的博客 637

如何在 UniApp 中接入讯飞语音听写功能 文末附vue3+vue2完整代码

在开发过程中,我遇到了讯飞接口返回空数据的问题。通过仔细检查传送的每一帧数据,我发现问题出在第一帧的配置信息以及 Base64 数据的切片。确保每一帧的数据正确且符合接口要求,问题就能够得到解决。希望这个过程能帮助你在项目中顺利对接讯飞语音识别。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 997

[AtCoder Grand Contest 024 Problem E]Sequence Growing Hard

题目大意:考虑 N +1 个数组 {A0,A1,…,AN}。其中 Ai 的长度是 i,Ai 内的所有数字都在 1 到 K 之间。 Ai−1 是 Ai 的子序列,即 Ai 删一个数字可以得到 Ai−1。 Ai 的字典序大于 Ai−1。输入 N,K,M 问序列个数模 M。解题思路:考虑每次从前面那个状态插入一个数,那么插入位置右边的那个数要严格小于插入的数。 fi,j,p 表示当前长度为i,...

201

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Atcoder Grand Contest 024E Sequence Growing Hard

题目在这里呀! 啊啊啊准备了一个月期末考的我终于飘回来啦~~ 真可谓在学OI的时候忘不了文化课,然后在学文化课的时候又想念编程啦qwq 那那那开始我的七月第一篇题解? (我七月想写很多很多题解的w) 题意 考虑 N +1 个数组 {A0,A1,…,AN}。 其中 Ai 的长度是 i,Ai 内的所有数字都在 1 到 K 之间。 Ai−1 是 Ai 的子序列,即 Ai 删一个数字可以...

七箫. 390

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AtCoder Grand Contest 024 迟到早退记+ABC题解

比赛链接 https://agc024.contest.atcoder.jp 游记 晚上九点才想起来有这个比赛…… 随便打了打,搞完ABC就21:40了,然后睡觉。 居然还上了绿名,rating+=195?震惊! A - Fairness 题目大意 一开始有333个数A,B,CA,B,CA,B,C, 每次操作AAA变成B+CB+CB+C,以此类推,问操作KKK次后A−BA−...

Canopus 462

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

AtCoder Grand Contest 031题解

题面 传送门 题解 比赛的之后做完\(AB\)就开始发呆了……简直菜的一笔啊…… \(A - Colorful\ Subsequence\) 如果第\(i\)个字母选,那么它前面任意一个别的字母的选择方法为\(cnt_x+1\)种,其中\(cnt_x\)为出现次数,直接乱搞就行了 //minamoto #include<bits/stdc++.h> #define R registe...

weixin_30484247的博客 97

【AtCoder Grand Contest 024】E - Sequence Growing Hard

题目描述 社论 editorial:社论 这个模型转化妙啊 为了不重复计数,每次添加元素 $x$ 的时候,放到一个比 $x$ 小的 $y$ 的前面 这个过程相当于构建了一棵树 设 $f_{i,j}$ 表示 $i$ 个点,根的权值为 $j$ 的方案数 枚举第一个子树的大小,可得:$f_{i,j}=\sum_{k=1}^{i-1}{i-2 \choose k-1} f_{i...

aoping9329的博客 235

AtCoder Grand Contest 003 E - Sequential operations on Sequence

题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_e 题目大意 一串数,初始为\(1\sim N\),现有\(Q\)个操作,每次操作会把数组长度变成\(L_i\),多余的长度直接截断;长度不够则循环填充,问最后\(1\sim N\)每个数的出现次数 首先维护一个单调递增的栈,因为较短的\(L_i\)可以让较长的\(L_{i'}\)...

a5163273的博客 184

AtCoder Grand Contest 003 E - Sequential operations on Sequence 乱搞

题意 初始有一个长度为n的序列,第i个元素为i。现在有m个操作,第i个操作有一个参数qiqiq_i,表示先把该序列当成循环结无限循环。然后取前q个元素作为新的序列。问m次操作后的序列中,1到n每个元素的出现次数。 n,m&lt;=100000,q&lt;=10^18 分析 首先注意到若qi&gt;qi+1qi&gt;qi+1q_i>q_{i+1},那么qiqiq_i是没用的,可以删掉。这样...

beginend 302

AtCoder Grand Contest 031 (AGC031) D - A Sequence of Permutations 其他

原文链接https://www.cnblogs.com/zhouzhendong/p/AGC031D.html 前言 比赛的时候看到这题之后在草稿纸上写下的第一个式子就是 $$f(p,q) = pq^{-1}$$ 然后就再也没有改过。 发现了一堆奇奇怪怪的性质可是一直没有用。 直到官方题解出来的时候: $$\Huge f(p,q) = qp^{-1}$$ 题解 我们可以把前面的...

weixin_30505751的博客 158

[AGC003E Sequential operations on Sequence] [思路题:逆推与分治]

[题目大意]     给出一个长度为N的序列A,其中A[i]=i。然后对它依次进行M次操作:每一次操作用一个整数q[i]描述,表示构造一个无穷长的序列B=AAAAAA...,然后令A=B[1..q[i]]。M次操作全部结束后,对每一个i∈[1,N]询问:A中有多少项等于i。 [思路] 这题有毒!!(话说AGC系列哪个没毒??) 首先画几个序列观察一下吧: n=3,m=2,q={8,21}...

Orzage的博客 358

AtCoder Grand Contest 016 D - XOR Replace

Time limit : 2sec / Memory limit : 256MBScore : 1000 pointsProblem StatementThere is a sequence of length N: a=(a1,a2,…,aN). Here, each ai is a non-negative integer.Snuke can repeatedly perform the fol

Felix-Lee的博客 439

Atcoder Grand Contest 024 简要题解

Fairness: (A,B,C)(A,B,C)(A, B, C) 经过一次变换之后变成 (B+C,A+C,A+B)(B+C,A+C,A+B)(B + C, A + C, A + B) 再变换变成 (A+B+C+A,A+B+C+B,A+B+C+C)(A+B+C+A,A+B+C+B,A+B+C+C)(A + B + C + A, A + B + C + B, A + B + C + C) 。 如...

wxh010910 877

AtCoder - 3962 Sequence Growing Hard

Problem Statement Find the number of the possible tuples of sequences(A0,A1,…,AN)that satisfy all of the following conditions, moduloM: For everyi(0≤i≤N),Aiis a sequence of lengthiconsist...

weixin_30246221的博客 178
上一篇: AtCoder Regular Contest 080C: 4-adjacent 题解
下一篇: AtCoder Grand Contest 024D: Isomorphism Freak 题解
IcePrincess_1968
博客等级 码龄9年 13粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值