题意

http://codeforces.com/contest/1189/problem/F


思考

由于是子序列,答案只跟选法有关,与顺序无关,先排序。

直接计算答案比较困难。联想到期望的无穷级数计算公式,设gi表示beauty值大于等于i的总方案数,则答案=sigma(g1~max{a})。

对于给定的gi,这是容易得到答案的。使用前缀和优化能在O(nk)的时间中得到一个值。

再发现当gi较大时,没有任何合法的方案。因为k*(n-1)会大于最大的值,取g到max{a}/(k-1)即可获得所有非0答案。

总复杂度O(max{a}*n)。


代码

 #pragma GCC optimize 2
#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
typedef long long int ll;
const int maxn=1E3+;
int n,k,a[maxn],maxx,where[maxn];
ll f[maxn][maxn],sum[maxn][maxn];
ll get(int x)
{
for(int i=;i<=k;++i)
for(int j=;j<=n;++j)
f[i][j]=;
for(int i=;i<=n;++i)
{
where[i]=where[i-];
while(a[i]-a[where[i]+]>=x)
++where[i];
}
f[][]=;
for(int i=;i<k;++i)
{
sum[i][]=f[i][];
for(int j=;j<=n;++j)
sum[i][j]=(sum[i][j-]+f[i][j])%mod;
for(int j=;j<=n;++j)
f[i+][j]=sum[i][where[j]];
}
ll sum=;
for(int i=;i<=n;++i)
sum=(sum+f[k][i])%mod;
return sum;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=;i<=n;++i)
{
cin>>a[i];
maxx=max(maxx,a[i]);
}
sort(a+,a+n+);
ll ans=;
for(int i=;i<=/(k-)+;++i)
ans=(ans+get(i))%mod;
cout<<ans<<endl;
return ;
}

CF572_Div2_F的更多相关文章

随机推荐

  1. FreeSql取多表数据

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! 以文章随笔与分类为例. 表结构 部分字段如下,其他省略,为了展示一对多关联,一个分类下可以有多个文章.一个文章属于一个分类. blog_artic ...

  2. Visual Studio Team Services and Team Foundation Server官方资料入口

    Team Foundation Server msdn 中文文档入口 Visual Studio Team Services or Team Foundation Server www.visuals ...

  3. 关于 5G,我们应该了解的

    2020年元旦,我看了高通之前发布的一篇关于5G的文章,标题为“Everything You Need to Know About 5G”,主要包括5G是什么.有什么优势以及未来的前景等内容.我斗胆翻 ...

  4. 从零开始のcocos2dx生活(十一)TableView

    目录 简述 主要变量 主要方法 setVerticalFillOrder reloadData cellAtIndex updateCellAtIndex insertCellAtIndex remo ...

  5. 洛谷$P4001\ [ICPC-Beijing 2006]$狼抓兔子 网络流+对偶图

    正解:网络流+对偶图 解题报告: 传送门! $umm$日常看不懂题系列了$kk$.其实就是说,给定一个$n\cdot n$的网格图,求最小割$QwQ$ 然后网格图的话显然是个平面图,又看到数据范围$n ...

  6. 探索 模块打包 exports和require 与 export和import 的用法和区别

    菜单快捷导航: CommonJS 之 exports和require用法 ES6 Module 之 export 和 import 用法 CommonJS和ES6 Module的区别 循环依赖 和 解 ...

  7. 基于Redis的分布式锁和Redlock算法

    1 前言 前面写了4篇Redis底层实现和工程架构相关文章,感兴趣的读者可以回顾一下: Redis面试热点之底层实现篇-1 Redis面试热点之底层实现篇-2 Redis面试热点之工程架构篇-1 Re ...

  8. 1038 统计同成绩学生 (20 分)C语言

    题目描述 本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入描述: 输入在第1行给出不超过105的正整数N,即学生总人数.随后1行给出N名学生的百分制整数成绩,中间以空格分隔.最后1 ...

  9. Web基础了解版12-上传下载

    上传 两个步骤: 用户在页面中选择要上传的文件,然后将请求提交到Servlet Servlet收到请求,解析用户上传的文件,然后将文件存储到服务器 上传文件表单 <form action=&qu ...

  10. SpringBootTest 测试工具

    以下内容,翻译自官方文档,并结合了学习过程的demo. Spring Boot提供了许多实用程序和注解,帮助测试应用程序.测试支持由两个模块提供:spring-boot-test 包含核心项,spri ...