codeforces626F
CF626F Group Projects
输入输出样例
3 2
2 4 5
3
4 3
7 8 9 10
13
4 0
5 10 20 21
1 hint:n<=200,k<=1000 sol:
把a排序
注意到不和谐度一定是一个终点的值-起点的值,中间可能还有几个非终非起的点,随便放即可
dp[i,j,k]表示前i个数,还有j个起点未匹配,当前总贡献为k个方案数
转移就是枚举当前点做起点,中间点,终点
然后就会挂的很惨,有一种很坑的东西,就是一个点既是起点又是终点
/*
把a排序
注意到不和谐度一定是一个终点的值-起点的值,中间可能还有几个非终非起的点,随便放即可
dp[i,j,k]表示前i个数,还有j个起点未匹配,当前总贡献为k个方案数
转移就是枚举当前点做起点,中间点,终点
然后就会挂的很惨,有一种很坑的东西,就是一个点既是起点又是终点
*/
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=; bool f=; char ch=' ';
while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();}
while(isdigit(ch)) {s=(s<<)+(s<<)+(ch^); ch=getchar();}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<) {putchar('-'); x=-x;}
if(x<) {putchar(x+''); return;}
write(x/); putchar((x%)+'');
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const int Mod=,N=;
int n,m,a[N];
int dp[][N][];
inline void Ad(int &x,int y)
{
x+=y; x-=(x>=Mod)?Mod:;
}
int main()
{
freopen("codeforces626F_data.in","r",stdin);
int i,j,k,t;
R(n); R(m);
for(i=;i<=n;i++) R(a[i]);
sort(a+,a+n+);
dp[t=][][]=;
for(i=;i<=n;i++)
{
t^=;
for(j=;j<=min(i,n>>);j++)
{
int oo=a[i]-a[i-];
for(k=;k<=m;k++)
{
dp[t][j][k]=;
if(j&&k>=(j-)*oo) Ad(dp[t][j][k],dp[t^][j-][k-(j-)*oo]);
if(k>=j*oo) Ad(dp[t][j][k],1LL*dp[t^][j][k-j*oo]*j%Mod);
if(k>=(j+)*oo) Ad(dp[t][j][k],1LL*dp[t^][j+][k-(j+)*oo]*(j+)%Mod);
if(k>=j*oo) Ad(dp[t][j][k],dp[t^][j][k-j*oo]);
}
}
}
int ans=;
for(i=;i<=m;i++) Ad(ans,dp[t][][i]);
Wl(ans);
return ;
}
codeforces626F的更多相关文章
- [Codeforces626F] Group Projects (DP)
Group Projects Description There are n students in a class working on group projects. The students w ...
- DP的序--Codeforces626F. Group Projects
$n \leq 200$个数,$ \leq 500$,$K \leq 1000$代价内的数字分组有多少?一个分组的代价是分成的每个小组的总代价:一个小组的代价是极差. 问的极差那就从极入手嘛.一个小组 ...
随机推荐
- VMware Workstation Pro 15 序列号
VMware Workstation Pro 15 序列号: GA70H-8TYE2-H886P-04YZC-YVA84 YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8 UG5J2-0ME ...
- English-培训2-五大句型
- Android NDK 学习之调用Java函数
本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse-> ...
- (二)react-native开发系列之windows开发环境配置
之前写了react-native在mac上得环境搭建,但是如果只开发android的话,只要用windows系统就可以了,下面就来说下react-native的windows开发环境配置. 1.下载配 ...
- Typora数学公式
LaTeX编辑数学公式基本语法元素 LaTeX中的数学模式有两种形式: inline 和 display. 前者是指在正文插入行间数学公式,后者独立排列,可以有或没有编号. 行间公式(inline) ...
- 缓存数据库memcache、redis原理对比
一.问题: 数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求. 二.解决方案: 1.通过高速服务器Cache缓存数据库数据 2.内存数据库 (这里 ...
- Anaconda基础使用
Windows下Anaconda操作:在Anaconda Prompt下执行 1. Anaconda 更新 conda update conda conda update anaconda conda ...
- JDBC-DBUtils工具-[课本293]-ResultSetHander接口的三种实现类的BeanHander/BeanListHander/ScalarHander
---恢复内容开始--- ResultSetHander接口 1.使用BeanHandler()只返回第一行结果集 ,封装到一个对应的JavaBean中 ;eg: User user=(User)bd ...
- burp插件debug
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2. ...
- C#格式化信息,格式化数字、格式化日期
一.格式化方法: 1.ToString()实例方法 使用当前文化: varname.ToString("C4"); 使用特定文化: varname.ToString("C ...