博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UOJ#22. 【UR #1】外星人
阅读量:6895 次
发布时间:2019-06-27

本文共 729 字,大约阅读时间需要 2 分钟。

分析

我们发现一个很神的性质,就是对于一个数如果放在它之前的数小于它那它一定对答案没有贡献

于是我们用dp[i][j]表示从大往小考虑了前i个数,当前答案是j的方案数

我们知道它由两种情况转移来,一种是把这个数放上,另一种是在后面的位置选任意一个给它

代码

#include
using namespace std;#define int long longconst int mod = 998244353;int n,m,a[100100],dp[1050][5050],M;inline bool cmp(int x,int y){ return x>y;}signed main(){ int i,j,k; scanf("%lld%lld",&n,&m); for(i=1;i<=n;i++)scanf("%lld",&a[i]); sort(a+1,a+n+1,cmp); dp[0][m]=1; for(i=1;i<=n;i++){ for(j=0;j<=m;j++)dp[i][j]=dp[i-1][j]*(n-i)%mod; for(j=0;j<=m;j++)dp[i][j%a[i]]=(dp[i][j%a[i]]+dp[i-1][j])%mod; } for(i=m;i>=0;i--){ if(dp[n][i]){ cout<
<
<

转载于:https://www.cnblogs.com/yzxverygood/p/10418987.html

你可能感兴趣的文章
MFC学习之EDIT控件初始化
查看>>
luogu P1972 [SDOI2009]HH的项链 树状数组
查看>>
线程的状态
查看>>
OpenCV与QT联合编译 分类: Eye_Detection ...
查看>>
Eclipse的基本使用
查看>>
构建之法 第五章 团队和流程
查看>>
(转)如何在eclipse的配置文件里指定jdk路径
查看>>
如何将atom侧边栏显示在右侧
查看>>
Block介绍(一)基础
查看>>
COLORREF的结构和用法
查看>>
《c程序设计语言》读书笔记--统计换行数,空格数,tab数
查看>>
【14】代理模式(Proxy Pattern)
查看>>
Visual Studio 2013 为C#类文件添加版权信息
查看>>
hdu1025(nlon(n)最长上升子序列)
查看>>
将Linux文件清空的几种方法
查看>>
Centos7使用yum快速安装ansible
查看>>
java例程练习(网络编程[简单网络连接试验])
查看>>
使用 console.time() 计算js代码执行时间
查看>>
test2-1
查看>>
Linux 进程间通信 有名管道(fifo)
查看>>