UPD:修了点锅(啊昨天居然写脑抽了)

题目内容

给定两个长度为 \(n\) 的序列,定义 \(magic(A,B)=\sum\limits_{i=1}^n \max(A_i,B_i)\)。

现在给定 \(n,K\) 问有多少对 \((A,B)\) 满足 \(magic(A,B)\geq K\)。

结果 \(\mathrm{mod}\ 998244353\)。

思路

关于数据太水导致特判大法直接AC这件事重评了

关于两重排列,可以将 \(B\) 序列固定为 \(1、2、3\dots n\),最后方案数乘上 \(n!\) 。因为实际上最后变换的就是每一对的位置。然后考虑填 \(A\) 序列。

设 \(f[i][j][k]\) 表示当前填完了 \(1\) ~ \(i\) 的数,其中有 \(j\) 个数填到了下标为 \(i+1\) ~ \(n\) 的位置,\(k\) 为所有 \(\max\{ a[p],b[p] \}\leq i\) 中 \(\max\{ a[p],b[p] \}\) 的和的方案数。

转移分类讨论:

  1. 若将 \(i\) 填到了下标 \(i\) ,则k+=i

  2. 若将 \(i\) 填到了下标小于 \(i\) 的位置,下标 \(i\) 的位置填入了小于 \(i\) 的数,则k+=2*ij--

  3. 若将 \(i\) 填到了下标小于 \(i\) 的位置,下标 \(i\) 的位置填入了大于 \(i\) 的数,则k+=i

  4. 若将 \(i\) 填到了下标大于 \(i\) 的位置,下标 \(i\) 的位置填入了小于 \(i\) 的数,则k+=i

  5. 若将 \(i\) 填到了下标大于 \(i\) 的位置,下标 \(i\) 的位置填入了大于 \(i\) 的数,则j++

其中1、3、4是可以合并的,添加方案数就为2*j+1

然后最后答案为\(\sum_{x\geq K} f[n][0][x]\)

其实你在转移的时候把大于 \(K\) 的都加在 \(K\) 里,就不用再求和了。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=50+10;
const int Mod=998244353;
int n,K;
long long ans;
int f[maxn][maxn][maxn*maxn]; int main(){
#ifndef LOCAL
freopen("D.in","r",stdin);
freopen("D.out","w",stdout);
#endif
scanf("%d%d",&n,&K);
f[0][0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=i;j++)
for(int k=0;k<=K;k++){
long long G=f[i-1][j][k];
f[i][j][min(k+i,K)]=(f[i][j][min(k+i,K)]+(2*j+1)*G%Mod)%Mod;//1&3&4
f[i][j+1][k]=(f[i][j+1][k]+G);//5
if(j)f[i][j-1][min(k+2*i,K)]=(f[i][j-1][min(k+2*i,K)]+j*j*G%Mod)%Mod;//2
}
ans=f[n][0][K];
for(int i=2;i<=n;i++)
ans=ans*i%Mod;
printf("%lld\n",ans);
return 0;
}

【动态规划】DP搬运工3的更多相关文章

  1. 动态规划dp

    一.概念:动态规划dp:是一种分阶段求解决策问题的数学思想. 总结起来就一句话:大事化小,小事化了 二.例子 1.走台阶问题 F(10):10级台阶的走法数量 所以:F(10)=F(9)+F(8) F ...

  2. 算法-动态规划DP小记

    算法-动态规划DP小记 动态规划算法是一种比较灵活的算法,针对具体的问题要具体分析,其宗旨就是要找出要解决问题的状态,然后逆向转化为求解子问题,最终回到已知的初始态,然后再顺序累计各个子问题的解从而得 ...

  3. 水题大战Vol.3 B. DP搬运工2

    水题大战Vol.3 B. DP搬运工2 题目描述 给你\(n,K\),求有多少个\(1\)到\(n\) 的排列,恰好有\(K\)个数\(i\) 满足\(a_{i-1},a_{i+1}\) 都小于\(a ...

  4. 非确定性有穷状态决策自动机练习题Vol.3 D. Dp搬运工3

    非确定性有穷状态决策自动机练习题Vol.3 D. Dp搬运工3 题目描述 给定两个长度为 \(n\) 的排列,定义 \(magic(A,B)=∑_{i=1}^nmax(Ai,Bi)\) . 现在给定 ...

  5. DP搬运工1 [来自yyy--mengbier的预设型dp]

    DP搬运工1 题目描述 给你 \(n,K\) ,求有多少个 \(1\) 到 \(n\) 的排列,满足相邻两个数的 \(max\) 的和不超过 \(K\). 输入格式 一行两个整数 \(n,K\). 输 ...

  6. 【转】动态规划DP

    [数据结构与算法] DP 动态规划 介绍 原创 2017年02月13日 00:42:51 最近在看算法导论. DP全称是dynamic programming,这里programming不是编程,是一 ...

  7. 动态规划DP的优化

    写一写要讲什么免得忘记了.DP的优化. 大概围绕着"是什么","有什么用","怎么用"三个方面讲. 主要是<算法竞赛入门经典>里 ...

  8. hdu 1421:搬寝室(动态规划 DP + 排序)

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  9. hdu 2059:龟兔赛跑(动态规划 DP)

    龟兔赛跑 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

随机推荐

  1. (006)增加Blazor WebAssembly子站,推荐一个可视化linux ssh客户端FinalShell

    增加一个Blazor WebAssembly子站,并添加来回链接. 同时推荐一个好用的ssh客户端:FinalShell,windows用户再也不怕linux黑窗口不会用了:) * 支持直接命令行; ...

  2. Apache2.4 下载和安装 - Win10

    Apache安装包已放入百度网盘,链接地址在本文最后 1.下载Windows版本的Apahce安装包 a. 访问官网,进入下载页面 https://www.apachelounge.com (apac ...

  3. css常用属性之display属性

    1.dispaly属性之一:块级标签转行内便签display: inline(内容有多大,就展示多大(用F12看区别)) 2.display属性之二:行内便签转块级标签:diaplay: block ...

  4. turtle角度坐标体系

    seth()改变海龟的行进角度 例如 让海龟的方向朝着45°方向行进 turtle.seth(45) 让海龟的方向朝着-135°反方向行进 turtle.seth(-135) turtle.left( ...

  5. zookeeper服务端

    服务端启动时,就启动线程通过NIO监听网络端口.每个连接都会有一个上下文环境对象,当接收到请求后,会在上下文环境对象中进行处理. 服务端启动线程,监听网络端口,(NIOServerCnxn.Facto ...

  6. java虚拟机配置

    -XXSurvivorRatio 设置两个survivor和eden的比,8表示两个survivor:eden:2:8.survivor的比例影响新生代向老年代移动的数度.survivor比例越小,新 ...

  7. java基础整理总结篇(1)

    >>java数据区域,大致分以下几种 寄存器:位于cpu内部,寄存器的数量有限,所以寄存器根据需求分配.不能直接控制它. 堆栈:位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器 ...

  8. 【转】PostgreSQL Index性能调优

    Index(索引)这个概念对于很多熟悉关系型数据库的人来说,不是一个陌生的概念.当表中数据越来越多时,在查询时,为了避免全表查询(sequence scan)可以在查询相关的条件字段上添加索引.举例来 ...

  9. Asp.Net Core Log4Net 配置分多个文件记录日志(不同日志级别)

    本文所有配置都是在core3.1环境下. 首先看看最终的效果. 请求监控:对每次请求的相关信息做一个记录. 全局异常:我不想我的错误信息,跟其他的信息混合在一起,查看的时候不大方便. 应用日志:这个主 ...

  10. kmt字符串匹配

    # -*- coding:utf-8 -*-class StringPattern: def findAppearance(self, A, lena, B, lenb): pos=0 tmp = 0 ...