JZOJ 5436 Group
来源:互联网 发布:mysql 开放远程访问 编辑:程序博客网 时间:2024/06/07 15:58
Matrix
Description
Data Constraint
Solution
对
设
设当前元素的的差值为
原来的差值和为
接下来考虑四种转移
1、新增加的元素作为新的一组的开始元素。
fi,j+1,v +=fi−1,j,k
2、新的元素同时作为新的一组的开始元素和结束元素。
fi,j,v +=fi−1,j,k
3、新的元素作为未结束的j组中的一组的结束元素。
fi,j−1,v +=fi−1,j,k *j (j >0 )
4、新的元素作为未结束的j组中的一组的未结束元素。
fi,j,v +=fi−1,j,k *j (j >0 )
最后统计答案。
Ans =∑ki=0 fn,0,i
Code
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,j,l) for(int i=j;i<=l;i++)#define fd(i,j,l) for(int i=j;i>=l;i--)using namespace std;typedef long long ll;const ll N=12e2,M=250,mo=1e9+7;ll f[2][M][N],a[N],b[N];int n,m,j,k,l,i,o,p;int main(){ cin>>n>>k; fo(i,1,n)scanf("%d",&a[i]); sort(a+1,a+n+1); int u=0,v; a[0]=0; fo(i,1,n)b[i]=a[i]-a[i-1]; b[0]=0; f[0][0][0]=1; fo(l,1,n){ v=1-u; fo(i,0,l) fo(j,0,k)f[v][i][j]=0; fo(i,0,l-1) fo(j,0,k-i*b[l]) if(f[u][i][j]) { ll op=f[u][i][j]%mo,vv=j+i*b[l]; f[v][i+1][vv]+=op; f[v][i][vv]+=op; if(i)f[v][i-1][vv]+=op*i; if(i)f[v][i][vv]+=op*i; } u=v; } ll ans=0; fo(i,0,k)ans=(ans+f[v][0][i])%mo; printf("%lld",ans);}
阅读全文
1 0
- JZOJ 5436 Group
- 【JZOJ 5436】【NOIP2017提高A组集训10.30】Group
- JZOJ 5436. 【NOIP2017提高A组集训10.30】Group
- JZOJ 5436. 【NOIP2017提高A组集训10.30】Group
- group
- group
- Group
- Group
- $group
- [JZOJ 3424] 粉刷匠 && [JZOJ 4254] 集体照
- [JZOJ 1280]最大匹配
- [JZOJ 1281]旅行
- [1282 JZOJ]资源勘探
- [JZOJ 1283]排序统计
- JZOJ NOIP2014模拟 8.12
- JZOJ NOIP2014模拟 8.13
- [JZOJ 1598]文件修复
- 【JZOJ 3111】单词查找
- spring框架(四)——Spring中的事务控制
- linux下nginx
- 自然语言处理基础技术之分词、向量化、词性标注
- 原创超清的 Webpack2 视频教程
- 人工智能面试题86问,新手找工作必备!
- JZOJ 5436 Group
- 凸函数
- 深入理解 boost::bind
- [agc004c]AND Grid
- 浅谈Linux(Centos7.4)环境下NTP服务器的构建
- 【传智播客郑州校区分享】动态数据写入pdf模板心得
- 抽象代数(2)
- 周测
- Understand the serialVersionUID