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$代价内的数字分组有多少?一个分组的代价是分成的每个小组的总代价:一个小组的代价是极差. 问的极差那就从极入手嘛.一个小组 ...
随机推荐
- Identityserver4证书
dotnet应用用IdentityServer4做了登陆的功能,本地运行没有问题,部署到服务器上面就出现上面的问题,打开服务器的日志记录开关,获取到下面的异常信息.原来是 通过分析日志信息 ...
- axios拦截登陆过期请求多次
request.interceptors.response.use( response => { console.log(response.data.code) // console.log(r ...
- Java 之 字符输出流[writer]
一.字符输出流 java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地. 它定义了字节输出流的基本共性功能方法. void write(int c) ...
- 低功耗蓝牙UUID三种格式转换
熟悉BLE技术同学应该对UUID不陌生,服务.特征值.描述都是有UUID格式定义. 蓝牙广播中对服务UUID格式定义都有三种16 bit UUID.32 bit UUID.128 bit UUID. ...
- 爬虫请求库 requests
requests模块 阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到 ...
- 解决用Xftp向虚拟机VMware传文件速度慢的问题
在使用Xftp向虚拟机传文件时发现很慢,之后几K,如果这个文件有几十M,这是一个非常让人头疼的问题.网上找过很多设置都试过,都没有效果,偶然发现Windows网络配置中,有个选项Large Send ...
- IAR建立stm32工程
stm32是一个当下非常流行的微控制器,很多人都加入了学习stm32的行列中,常用的stm32编译器有IAR和mdk两种,接下来是利用stm32固件库3.5在IAR下的建立的工程模板历程: 1.在常用 ...
- Educational Codeforces Round 41 967 E. Tufurama (CDQ分治 求 二维点数)
Educational Codeforces Round 41 (Rated for Div. 2) E. Tufurama (CDQ分治 求 二维点数) time limit per test 2 ...
- SATB的标记问题解决之道与G1垃圾收集模式系统详解及最佳实践
继续接着上一次https://www.cnblogs.com/webor2006/p/11148282.html的理论学习,上一次学习到了这: 接着继续: SATB详解: 对于三色算法在concurr ...
- Gitlab,Git设置及使用前的准备
1. git config --global user.name "……" #定义全局的用户名 git config --global user.email "……&qu ...