自己看吧:

爆搜代码:

//春水初涨-春林初盛-春风十里-不如你
//----hzwer
// 这是啥子题,读不懂--
//题意有问题 --
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cstdio>
#include<map>
#define mod 998244353
#define N 100000
using namespace std;
int n,m,s,y[N],sum[N],sumy;
int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
struct yelir
{
int pos,sum;
bool operator < (const yelir &a) const
{
if(pos==a.pos) return sum < a.sum;
return pos < a.pos;
}
};
map< yelir , int >mp;
int dfs(int pos,int sum)
{
yelir x = yelir{ pos,sum };
if(pos==n+1)
{
if(sum % m==s)return 1;
return 0;
}
if(mp.find(x) != mp.end() )
{
return mp[x];
}
int ans=0;
for(int i=0;i<=y[pos];++i)
{
ans+=dfs(pos+1,sum+i);
ans%=mod;
}
mp[x]=ans;
return ans;
}
int main()
{
#ifdef yilnr
#else
freopen("restrict.in","r",stdin);
freopen("restrict.out","w",stdout);
#endif
n=read();s=read();m=read();
for(int i=1;i<=n;++i)y[i]=read();
printf("%d",dfs(0,0));
fclose(stdin);fclose(stdout);
return 0;
}
/*
5 145 100000
49 49 48 48 48
*/

AC代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define mod 998244353
#define int long long
#define N 5000008
using namespace std;
int s, m, n, ans, sum, cnt, f, tmp,M;
int y[100005], c =1e9,jie[N],inv[N];
int invjc[N], jc[N];
int power(int x, int y)
{
int res = 1;
for(; y; y >>= 1, x = x %mod* x %mod)
if(y & 1)
res = res %mod* x%mod;
return res%mod;
}
void init()
{
jie[0] = jie[1] = inv[0] = inv[1] = 1;
for(int i = 2;i <= 6000000;i ++)jie[i] = jie[i-1] * i % mod;
inv[6000000] = power(jie[M],mod-2);
for(int i = 60000000 - 1;i >= 2;i --)inv[i] = inv[i+1] * (i + 1) % mod;
}
int C (int n,int m)
{
if(n < 0 || m < 0 || n<m) return 0;
return jie[n] * inv[m] % mod * inv[n-m] % mod;
}
signed main()
{
#ifdef yilnr
#else
freopen("restrict.in","r",stdin);
freopen("restrict.out","w",stdout);
#endif
scanf("%lld%lld%lld",&n, &s, &M);
for(int i = 1; i <= n; i++)
{
scanf("%lld",&y[i]);
sum+=y[i];
c = min(c, y[i]);
}
int yi=0;
init();
for(int i=1;i<=n;i++) m+=(y[i]==c+1);
for(int k=s;k<=sum;k+=M)
{
for(int i=0;i<=n;i++)
{
int vis=0;
for(int j=0;j<=m;j++)
{
vis+= C( k-j-i*(c+1)+n-1 , n-1)%mod * C( m , j ) %mod * C( n-m , i-j)%mod;
vis%=mod;
}
if(i & 1) ans=(ans+mod-vis)%mod;
else ans=(ans+vis)%mod;
}
}
printf("%lld\n",ans);
return 0;
}
/*
5 145 100000
49 49 48 48 48
*/

----WFX

最新文章

  1. WebService是什么?
  2. http://www.blogjava.net/nokiaguy/category/37087.html
  3. ScheduleThreadPoolExecutor源码分析(二)
  4. My.Ioc 代码示例——谈一谈如何实现装饰器模式,兼谈如何扩展 My.Ioc
  5. ofbiz ins
  6. sqlserver2012一直显示正在还原(Restoring)和从单用户转换成多用户模式(单用户连接中)
  7. 常用python处理try except异常的三种方式
  8. 201521123073 《Java程序设计》第1周学习总结
  9. AX_DataSource
  10. Servlet(6)—HttpServletRequest接口和HttpServletResponse接口
  11. FortiGate日志设置
  12. System.getSecurityManager()
  13. Echarts 设置地图上文字大小及颜色
  14. CRC分段校验
  15. Java语法基础学习DayFour
  16. 【转载】 深度学习总结:用pytorch做dropout和Batch Normalization时需要注意的地方,用tensorflow做dropout和BN时需要注意的地方,
  17. sql server连接字符串与tcp/ip开启
  18. 安装git工具在ubuntu系统
  19. 自己动手开启QUIC(转载)
  20. redis在游戏服务器中的使用初探(三) 信息存储

热门文章

  1. 宝塔面板liunx开启ssl域名后无法访问解决方法
  2. opencv实现人脸识别(四) 人脸识别模块
  3. Faster RCNN学习笔记
  4. js摄像头
  5. 【php设计模式】装饰器模式
  6. 客户想要的 vs 客户实际预算:漫画解读软件开发模式 ​​​​
  7. java web开发跨域问题
  8. JTree实现QQ好友列表
  9. js实现复制 、剪切功能-clipboard.min.js 示例
  10. 在线预览word、excel文件