CF572_Div2_F
题意
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的更多相关文章
随机推荐
- docker 命令汇总1
命令汇总 docker history fa5fa5为镜像id或者镜像名 docker export 30b >h.tar30b为容器id或者容器名# docker export angry_b ...
- jquery中获取ajax请求返回数据的方法
function getPageTotalAndDataTotal(page) { //设置一个变量用于接收ajax返回的值 var pageTotal = 0; // 获取页数与数据总数 $.aja ...
- Spring||Mails
JMail可以解决Java发送邮件,通过Jmail的核心javax.mail.jar实现,通过Jmail发送邮件需要经过以下步骤 1.创建解析邮件内容:Message类,通过javax.mail.in ...
- Redisson实现Redis分布式锁的底层原理
一.写在前面 现在面试,一般都会聊聊分布式系统这块的东西.通常面试官都会从服务框架(Spring Cloud.Dubbo)聊起,一路聊到分布式事务.分布式锁.ZooKeeper等知识.所以咱们这篇文章 ...
- spring boot(三)Junit 测试controller
Junit测试Controller(MockMVC使用),传输@RequestBody数据解决办法 一.单元测试的目的 简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期 ...
- tomcat 配置项目前缀(推荐方式四)
一. 显示配置 Context 的 path 需要在 server.xml 文件中手动配置. <Host name="localhost" appBase="w ...
- Python PyInstaller安装和使用教程
安装 PyInstalle Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块. 安装 PyInstaller 模块与安装其他 Python 模块 ...
- echo 传义序列
echo 传义序列:\a 警示字符\b 退格\c 输出中忽略最后的换行符\f 清屏\n 换行\r 回车\t 水平制表符\v 垂直制表符\\ 反斜杠字符\0ddd 将字符表示成1到3位的八进制数值
- 12款好用的Visual Studio插件,最后一款良心推荐
目录 01 CodeMaid 02 Markdown Editor 03 ReSharper 04 GitHub Extension for Visual Studio 05 ZenCoding 06 ...
- Magicodes.IE编写多框架版本支持和执行单元测试
背景 很多情况下,我们编写了一些工具库之后,往往在某些框架版本中会出现一些问题,比如本人最近写的一个导入导出的工具库Magicodes.IE(GitHub:https://github.com/xin ...