首页 > 其他分享 >Topcoder SRM592-Div1-Lv2 LittleElephantAndPermutationDiv1

Topcoder SRM592-Div1-Lv2 LittleElephantAndPermutationDiv1

时间:2024-06-02 21:55:15浏览次数:19  
标签:LittleElephantAndPermutationDiv1 小于 int SRM592 位填 times MAXN Topcoder LL

题意

设 \(A,B\) 为两个长为 \(n\ (\leq50)\) 的排列,定义操作 \(F(A,B)=\sum\limits_{i=1}^{n}\max(A_i,B_i)\),给定 \(n,k\),求有多少种有序对 \((A,B)\) 满足 \(F(A,B)\geq k\),答案模 \(10^9+7\)。

思路

首先还是用经典的思路将无序转为无序,我们假定 \(A\) 是有序的即 \(A={1,2,3,\dots,n}\),然后计数,最后答案在乘回去一个 \(n!\) 即可。

记 \(f[i][j][k]\) 为填了 \(1\sim i\) 位,有 \(j\) 个小于等于 \(i\) 的数填在 \(i\) 后面了,并且所有小于等于 \(i\) 的 \(\max(A_p,B_p)\) 加起来为 \(k\)。

考虑从第 \(i\) 位转移到第 \(i+1\) 位:

情况 \(j\) 的变化 \(k\) 的变化 \(B[1,i]\) 的情况数
\(i+1\) 就填在第 \(i+1\) 位 不变 \(+(i+1)\) \(f[i][j][k]\)
\(i+1\) 填在小于 \(i+1\) 位,\(i+1\) 位填小于 \(i+1\) 的数 \(-1\) \(+2\times(i+1)\) \(f[i][j][k]\times j^2\)
\(i+1\) 填在小于 \(i+1\) 位,\(i+1\) 位填大于 \(i+1\) 的数 不变 \(+(i+1)\) \(f[i][j][k]\times j\)
\(i+1\) 填在大于 \(i+1\) 位,\(i+1\) 位填小于 \(i+1\) 的数 \(+1-1\) 不变 \(+(i+1)\) \(f[i][j][k]\times j\)
\(i+1\) 填在大于 \(i+1\) 位,\(i+1\) 位填大于 \(i+1\) 的数 \(+1\) 不变 \(f[i][j][k]\)

代码

#include<bits/stdc++.h>
#define add(x,y) x=((x)+(y))%P
using namespace std;
typedef long long LL;
const LL P=1e9+7;
const int MAXN=55,MAXM=2505;
int n,m;
LL f[MAXN][MAXN][MAXN*MAXN],ans,fact=1;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        fact=fact*(LL)i%P;
    }
    f[0][0][0]=1;
    for(int i=0;i<n;i++){
        for(int j=0;j<=i;j++){
            for(int k=0;k<=n*n;k++){
                if(!f[i][j][k]) continue;

                add(f[i+1][j][k+(i+1)],f[i][j][k]*(1+j+j)%P);
                add(f[i+1][j+1][k],f[i][j][k]);
                if(j>=1) add(f[i+1][j-1][k+2*(i+1)],f[i][j][k]*j*j);
            }
        }
    }
    for(int i=m;i<=n*n;i++){
        add(ans,f[n][0][i]);
    }
    cout<<ans*fact%P<<endl;
    return 0;
}

标签:LittleElephantAndPermutationDiv1,小于,int,SRM592,位填,times,MAXN,Topcoder,LL
From: https://www.cnblogs.com/SkyNet-PKN/p/18227687

相关文章

  • Topcoder SRM616-Div1-Lv2 ColorfulCoins
    涉及知识点:奇妙Ad-hoc前言一道很不常规的题目,思维难度大代码简单,而且这种思路很难在赛时想到,故记录一下。题意某国的货币系统硬币有\(n\(\leq60)\)种面额\(val_i\(\leq10^{18})\),其中最小的面额为\(1\),并且所有的面额之间都保证两两有倍数关系,每种面额的硬币有独一无......
  • Topcoder SRM622-Div1-Lv2 Ethernet
    涉及知识点:图论贪心题意有一颗\(n\(\leq50)\)个节点的树,节点\(i\)的父亲为fa[i],到父亲的边的边权为dis[i],边权\(\leq500\)。现在要将每个点分配到\(k\)个连通子图中的一个,使得子图中距离最长的两个点距离小于\(maxd\),定义子图为:如果\(u\)和\(v\)都是该子图的......
  • Topcoder SRM647-Div1-Lv2 CtuRobots
    涉及知识点:动态规划题意有\(n\(\leq500)\)个机器人,每个机器人的价格为\(cost_i\(\leq10^4)\),油箱容量为\(cap_i\(\leq10^9)\),一单位燃料可以走一单位距离,你可以给购买的机器人编号,机器人\(k\)可以给机器人\(k+1\)补充燃料,但是任意时刻机器人的燃料不能超过其油箱......
  • TOPCODER时期训练赛小总结
    20240407模拟赛T1TurnOnLamps直接树上dp维护子树内是否有路径在根节点处停止的最小操作数\(O(n)\)维护即可,数据范围纯sbT2XorCards线性基或高斯消元板子,高斯消元比较好想。可以枚举大于等于时前若干位是相同的,然后直接搞出限制消元即可。时间复杂度合理。线性基则非常......
  • TopCoder SRM478C RandomApple 题解
    题意:有\(k\)种苹果和\(n\)个箱子,每个箱子中有一些苹果,先等概率选取\(n\)个箱子组成集合的非空子集,再从选出的苹果中随机选一个,问每种苹果被选中的概率是多少箱子\(i\)有\(a_{i,j}\)个第\(j\)种苹果,第\(i\)个箱子的总苹果数\(siz_i=\sum\limits_{j=1}^ka_{i,j}\),苹果总数\(sum=\su......
  • RandomPaintingOnABoard TopCoder - 12607
    AnoteabouttheconstraintsConstraintsindicateusthatthemaximumwidthandheightwillbe21.Thereisanotherconstraintthough:Themaximumtotalnumberofcellsis150.Thiscanhelpusbecauseitmeansthatthesmallerdimensionwillbeatmost1......
  • [TopCoder 13001] BigO 题解
    [TopCoder13001]BigO题解题目描述给定一张有向图,当\(L\)趋近于无穷大时,长度为\(L\)的路径条数有\(S\)条,此时若\(S=O(L^k)\),输出\(k\),否则如果没有多项式的大O表示法,输出\(-1\)。指数情况首先如果一张图中存在如下强连通分量,则\(S=O(2^L)\)。因为每次到1......
  • TopCoder 15903 EllysNim
    TopCoder15903EllysNim(https://vjudge.net/problem/TopCoder-15903)\(n\)看似有点东西,实际上就只是一个贪心。。。设\(i\)表示第\(i\)位,且\(i\)从\(0\)开始计数那么我们肯定是让\(i\)从高位到低位枚举,若当前位的异或值为\(1\),想办法让它变成\(0\)且不会改变更高位的异或值......
  • Topcoder 10880 - Rabbit Problemming
    \[兔子,兔子,兔子\]首先,我们考虑一只兔子可以达到的最大值\(mx_i\)和最小值\(mn_i\),这个可以很方便的求出来。并且每只兔子的取值是独立的。然后,如果一个组合能被选中,那么在这个组合内部所有的兔子都取\(mx_i\),其他的兔子都取\(mn_i\)的时候一定也能被选中。我们就钦定所有......
  • Topcoder 10880 - Functional Equation
    首先分析一下这个鬼畜的函数,我们考虑\(f(x)+2C\)\(=f(2f(x)-x+1)+C\)\(=f(2f(2f(x)-x+1)-(2f(x)-x+1)+1)\)\(=f(2(f(x)+C)-2f(x)+x-1+1)\)\(=f(x+2C)\)也就是\(f(x)=f(x\bmod2C)+2C\lfloor\dfrac{x}{2C}\rfloor\)也就是,只要决定了\(f(x)\),\(f(x+2mC)\)也就被确定了。......