BZOJ 5215: [Lydsy2017省队十连测]商店购物
裸题
注意+特判
#include<cstdio>
using namespace std;
const int mod=1e9+7;
int F[1000005],mi[10000005],ni[10000005],G[1000005];
int pow(int a,int b){
int ans=1;
while (b){
if (b&1) ans=1ll*ans*a%mod;
a=1ll*a*a%mod;
b=b>>1;
}
return ans;
}
int C(int n,int m){
if (n<m) return 0;
return 1ll*mi[n]*ni[m]%mod*ni[n-m]%mod;
}
int main(){
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
mi[0]=ni[0]=1;
for (int i=1; i<=n+k; i++) mi[i]=1ll*mi[i-1]*i%mod;
ni[n+k]=pow(mi[n+k],mod-2);
for (int i=n+k-1; i>=1; i--) ni[i]=1ll*ni[i+1]*(i+1)%mod;
n-=m;
F[0]=1;
int tot=0;
for (int i=1; i<=m; i++){
int x;
scanf("%d",&x);
tot+=x;
for (int j=0; j<=m*300; j++) G[j]=F[j];
for (int j=1; j<=m*300; j++) (G[j]+=G[j-1])%=mod;
for (int j=0; j<=m*300; j++){
int l=j-x-1;
F[j]=G[j];
if (l>=0) F[j]-=G[l];
(F[j]+=mod)%=mod;
}
}
int ans=0;
if (!n){
if (k<=tot) ans=F[k];
else ans=0;
}
else{
for (int i=0; i<=m*300; i++){
int K=k-i;
if (K<0) break;
(ans+=1ll*F[i]*C(K+n-1,n-1)%mod)%=mod;
}
}
printf("%d\n",ans);
return 0;
}
BZOJ 5215: [Lydsy2017省队十连测]商店购物的更多相关文章
- bzoj 5216 [Lydsy2017省队十连测]公路建设 线段树维护 最小生成树
[Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 93 Solved: 53[Submit][Status][ ...
- bzoj 5216: [Lydsy2017省队十连测]公路建设
5216: [Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 66 Solved: 37[Submit][St ...
- bzoj 5218: [Lydsy2017省队十连测]友好城市
题意: 这题显然直接tarjan是做不了的. 这里安利另一个求SCC的算法Kosaraju,学习的话可以见这篇博客 于是结合莫队,我们有了个暴力. 发现主要瓶颈是dfs过程中找最小的未经过的点,我们用 ...
- bzoj 5217: [Lydsy2017省队十连测]航海舰队
Description Byteasar 组建了一支舰队!他们现在正在海洋上航行着.海洋可以抽象成一张n×m 的网格图,其中有些位置是" .",表示这一格是海水,可以通过:有些位置 ...
- @bzoj - 5219@ [Lydsy2017省队十连测]最长路径
目录 @description@ @solution@ @accepted code@ @details@ @description@ 在Byteland一共有n个城市,编号依次为1到n,形成一个n个 ...
- Lydsy2017省队十连测
5215: [Lydsy2017省队十连测]商店购物 可能FFT学傻了,第一反应是前面300*300背包,后面FFT... 实际上前面背包,后面组合数即可.只是这是一道卡常题,需要注意常数.. //A ...
- 【BZOJ 5222】[Lydsy2017省队十连测]怪题
题目大意: 传送门 给一个长度为$n(n<=200)$的数列$h$,再给$m$个可以无限使用的操作,第$i$个操作为给长度为花费$c_i$的价值给长度为$l_i$的数列子序列+1或-1,求将数列 ...
- 2018.09.26 bzoj5218: [Lydsy2017省队十连测]友好城市(回滚莫队)
传送门 比较简单的一道回滚莫队吧. 每次询问用bitset优化kosaraju统计答案. 就是有点难调. 然后向dzyo学长学习了回滚莫队的一种简洁的实现方式,就是直接建立一个sqrt(m)∗sqrt ...
- 2018.09.26 bzoj5221: [Lydsy2017省队十连测]偏题(数学推导+矩阵快速幂)
传送门 由于没有考虑n<=1的情况T了很久啊. 这题很有意思啊. 考试的时候根本不会,骗了30分走人. 实际上变一个形就可以了. 推导过程有点繁杂. 直接粘题解上的请谅解. 不得不说这个推导很妙 ...
随机推荐
- MVC FileResult
你如何将文件传送给用户取决于你最开始如何存储它,如果你将文件存入数据库,你会用流的方式将文件返还给用户,如果你将文件存在硬盘中,你只需要提供一个超链接即可,或者也可以以流的方式.每当你需要以流的方式将 ...
- Thread 和 Runnable创建新线程的区别,Runnable可以共享线程类的实例属性
Thread实现多线程: public class Thread2 extends Thread{ public int i; public void run(){ for(; i < 100 ...
- 【extjs6学习笔记】Mastering Ext JS, 2nd Edition
我不知道在别人看来,我是什么样的人:但在我自己看来,我不过就象是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真理的海洋,却全 ...
- UML的九种模型图
本文转自UML 的九种模型图,仅供学习交流! 一.作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML语义:描述基于UML的精确元模型定义. UML表示法:定义UML符号的表示 ...
- Monitorix系统和网络监控工具
Monitorix 系统和网络监控公工具一.monitorixMonitorix是一款功能非常强大的免费开源轻型工具,目的在于监测Linux中的系统和网络资源.它可以定期收集系统和网络数据,并使用自己 ...
- jsp跳转标签<jsp:forward>
forward.jsp <%@ page language="java" contentType="text/html; charset=utf-8" p ...
- 从程序猿到SAP产品经理,我是如何转型的?
文章作者:Jason Xia(夏建军) Jerry: 今天的文章来自Jason Xia, 我的老同事,和我一样从2007年进入SAP成都研究院工作至今.这篇文章讲述了Jason是如何从一名SAP资深开 ...
- ABAP vs Java, 蛙泳 vs 自由泳
去年7月定下的一年之内学会自由泳的目标终于实现了,特来还愿. ABAP和Java, 蛙泳和自由泳.前面的组合是Jerry用来挣钱养家的技术,后者是Jerry花了大量业余时间和金钱苦练的技能.或许有的朋 ...
- cesium-大规模人群运动测试
环境:cesium1.57: 笔记本电脑:集成显卡+独显Navida 1060 测试内容:大规模人群运动(500人,可设置运动的路径),可行性及帧率 测试结果:21-23FPS,较为流畅:集显70%- ...
- Yum简单使用小结
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动 ...