$n \leq 200$个数,$ \leq 500$,$K \leq 1000$代价内的数字分组有多少?一个分组的代价是分成的每个小组的总代价;一个小组的代价是极差。

问的极差那就从极入手嘛。一个小组只有最大和最小值是有用滴!那就来分这些最大最小值。

由于考虑大小,不如先把数列排个序。这样的话,可以表示出那种“有几个小组分不满”的形似插头DP的状态,在移动到下一个数时代价加上当前数和下一个数的差乘上还没分配满的小组数即可。具体,$f(i,j,k)$表示前$i$个数$j$个小组还没满,当前代价$k$的方案,如此不需要知道最小值们是谁,只需在$i$移动到$i+1$时,每个没配满的小组加上$a_{i+1}-a_i$的代价即可,因此没配满小组数$j$就可以计算代价。转移的话,分$i$单独一组、新开一个未满组、加入之前一个未满组、充当之前一个未满组的最大值,来转移。

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
//#include<math.h>
//#include<queue>
//#include<vector>
#include<algorithm>
//#include<iostream>
//#include<assert.h>
using namespace std; int n,K;
const int mod=1e9+;
int a[],f[][][],cur; int main()
{
scanf("%d%d",&n,&K);
for (int i=;i<=n;i++) scanf("%d",&a[i]); sort(a+,a++n);
cur=; f[][][]=;
for (int i=;i<=n;i++)
{
for (int j=;j<=n;j++)
for (int k=,tmp=j*(a[i]-a[i-]),to=K-tmp;k<=to;k++,tmp++) if (f[cur][j][k])
{
f[cur^][j+][tmp]+=f[cur][j][k]; f[cur^][j+][tmp]-=f[cur^][j+][tmp]>=mod?mod:;
f[cur^][j][tmp]+=(j+)*1ll*f[cur][j][k]%mod; f[cur^][j][tmp]-=f[cur^][j][tmp]>=mod?mod:;
if (j>)
{f[cur^][j-][tmp]+=j*1ll*f[cur][j][k]%mod; f[cur^][j-][tmp]-=f[cur^][j-][tmp]>=mod?mod:;}
}
memset(f[cur],,sizeof(f[cur]));
cur^=;
} int ans=; for (int i=;i<=K;i++) ans+=f[cur][][i],ans-=ans>=mod?mod:;
printf("%d\n",ans);
return ;
}

最新文章

  1. fft练习
  2. Redmine自定义字段增多后会变慢
  3. django进行model字段的自定义
  4. Ansible-Tower快速入门-5.导入许可【翻译】
  5. Win7 Object_Header之TypeIndex解析
  6. BZOJ1931 : [Shoi2007]Permutation 有序的计数
  7. C# 点绕某点旋转某角度
  8. 【转】solr+ajax智能拼音详解---solr跨域请求
  9. [原创]SSIS-执行包任务调用子包且子包读取父包变量
  10. VmodCam top verilog
  11. php 正则表达
  12. [git] git 分支管理和工作流程
  13. opencar二次开发常用代码
  14. 基于visual Studio2013解决C语言竞赛题之1091多项式
  15. ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
  16. hibernate--hibernate.cfg.xml常用配置详解
  17. 关于inet_addr() 函数
  18. JavaEESpringMVC基础整理
  19. Java新知识系列 四
  20. 学习 Spring (十二) AOP 基本概念及特点

热门文章

  1. python打飞机pro版
  2. leetcode_1053. Previous Permutation With One Swap
  3. python基础一 day14 生成器函数进阶
  4. C++类型强制转换&lt;转&gt;
  5. call和apply方法的异同
  6. python基础面试题整理---从零开始 每天十题(03)
  7. Java常见对象Object类中的个别方法
  8. java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础 SWT的激活方法,swt开发包下载,及破解激活码
  9. java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理
  10. ios 自定义RadioButton