【csp模拟赛5】限制 (restrict.cpp)--数学

自己看吧:

爆搜代码:
//春水初涨-春林初盛-春风十里-不如你
//----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
【csp模拟赛5】限制 (restrict.cpp)--数学的更多相关文章
- 【CSP模拟赛】坏天平(数学&思维)
蹭兄弟学校的题目做还不用自己出题的感觉是真的爽 题目描述 nodgd有一架快要坏掉的天平,这架天平右边的支架有问题,如果右边的总重量比左边多太多,天平就彻底坏掉了.现在nodgd手上有n种砝码,质量分 ...
- CSP模拟赛游记
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...
- 【csp模拟赛4】 珠江夜游 (cruise.cpp)-二分,贪心
Problem 1 珠江夜游 (cruise.cpp) [题目描述] 小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再 到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后, ...
- 【csp模拟赛4】基站建设 (station.cpp)
[题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...
- 【CSP模拟赛】Confess(数学 玄学)
题目描述 小w隐藏的心绪已经难以再隐藏下去了.小w有n+ 1(保证n为偶数)个心绪,每个都包含了[1,2n]的一个大小为n的子集.现在他要找到隐藏的任意两个心绪,使得他们的交大于等于n/2. 输入描述 ...
- 【CSP模拟赛】方程(数学)
题目描述 求关于x的方程:x1+x2+……xk=n的非负整数解的个数. 输入格式 仅一行,包含两个正整数n,k. 输出格式 一个整数,表示方程不同解的个数,这个数可能很大,你只需输出mod 20080 ...
- 【csp模拟赛5】购物(shopping.cpp)--常规
多项式,因为每次的x相同,所以把a和b相加就行了,然后找对称轴,找离对称轴最近的整数点,然而我却写了个暴力,没看x #include <iostream> #include <cst ...
- 【csp模拟赛4】旅行计划 (travelling.cpp)--欧拉回路
[题目描述] 小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅 行时并不关心到达了哪个网红景点打了哪些卡.小 Z 更关注沿路的风光,而且 小 Z 觉得,尽管多次到达同一个地方, ...
- 【csp模拟赛1】铁路网络 (network.cpp)
[题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...
随机推荐
- pt-online-schema-change使用
MySQL ddl 的问题现状 在 运维mysql数据库时,我们总会对数据表进行ddl 变更,修改添加字段或者索引,对于mysql 而已,ddl 显然是一个令所有MySQL dba 诟病的一个功能,因 ...
- 【数学】Eddy Walker
#include<bits/stdc++.h> using namespace std; typedef long long ll; ; ll qpow(ll a,ll b){ ll an ...
- 怎样通过name属性获取元素节点集合
使用 document.getElementsByName(); document.getElementsByName("userInfo") instanceof NodeLis ...
- 通过ADB调试安卓程序
ADB,即 Android Debug Bridge,它是Android开发/测试人员不可替代的强大工具. 1.下载ADB后,将以下四个文件放到某个文件夹下即可.因为打开Cmd默认路径是 C:\Use ...
- Unable to bind to http://localhost:8080 on the IPv6 loopback interface: 'Cannot assign requested address'.
.net core+nginx警告: warn: Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5 ...
- 【C++】如何提高Cache的命中率,示例
参考链接 https://stackoverflow.com/questions/16699247/what-is-a-cache-friendly-code 只是堆积:缓存不友好与缓存友好代 ...
- TypeScript入门二:基本数据类型
浅析基本数据类型 TypeScript类型解析 一.浅析基本数据类型 首先有一个问题TypeScript是一门编译型语言?还是解释性语言?显然已经不能被这两个分类来区分,TypeScript的并不是为 ...
- 垃圾分类常见APP
垃圾分类指南app 上海就要实行垃圾分类了,垃圾分类指南app你需要吗,这里有相关的各种垃圾分类的介绍与上海垃圾分类投放指南,这里是垃圾分类指南手机入口能够让你更好的去完成垃圾分类呢.垃圾分类指 .. ...
- ActiveMQ入门系列二:入门代码实例(点对点模式)
在上一篇<ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)>中,大致介绍了ActiveMQ和一些概念,并下载.安装.启动他,还访问了他的控制台页面. 这篇,就用代 ...
- ASE19团队项目alpha阶段model组 scrum5 记录
本次会议于11月7日,19时整在微软北京西二号楼sky garden召开,持续12分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing W ...