【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 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...
随机推荐
- gitlab安装指南(gitlab-ce-9.4.3-ce.0.el7.x86_64 centos7)
1,安装gitlab wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-9.4.3-ce.0.el7. ...
- 后端排序,debug模式中map的顺序出错
js中map遍历的顺序是按照插入的顺序来执行的.如果map的来源是字符串转换的,那么就会按照字符串中key值的顺序进行遍历.千万不要被debug中显示的顺序误导,这里应该是为了方便查看对key进行了字 ...
- 《精通Windows API-函数、接口、编程实例》——第4章文件系统
第4章文件系统 4.2 磁盘和驱动器管理 文件系统的基本概念:包括磁盘分区,卷,目录,文件对象,文件句柄,文件映射1.磁盘分区:物理磁盘,逻辑磁盘2.卷:也称逻辑驱动器,是NTFS,FAT32等文件系 ...
- SqlServer2008 R2发布订阅
网上好多大神写的贴子,自己也看着贴子弄的,写的已经很详细了,我就不重复写了,贴上参考资料: http://www.cnblogs.com/dudu/archive/2010/08/26/1808540 ...
- [NOIP10.4模拟赛]3.z题解--思维
题目链接: 咕咕 闲扯: 哈哈这道T3考场上又敲了5个namespace,300+行,有了前车之鉴还对拍过,本以为子任务分稳了 结果只有30分哈哈,明明用极限数据对拍过不知怎么回事最后数据又是读不全, ...
- ThreadPoolExecutor的runState和workCount变量怎么存储?
在阅读Java线程池ThreadPoolExecutor源码的时候,发现它很巧妙地把线程池状态runState和线程数workCount两个变量存放在了一个int型变量里面. 我们先看一个数值,如下是 ...
- npm install 报错踩坑路
先出现的是超过最大调用栈问题: npm ERR! Maximum call stack size exceeded 百度之后说给npm降级或者升级 降级 : npm install -g npm@5. ...
- django form 和modelform样式设置
目录 1.form通过attr设置属性 2.输入框设置表单状态 3.modelform的使用 4.结合modelform 使用for循环生成输入框 5.基于init构造方法设置样式 6.基本增删改 ...
- JAVA语言程序设计课后习题----第六单元解析(仅供参考)
1 本题就是基本函数的用法 import java.util.Scanner; public class Poone { public static void main(String[] args) ...
- 微信小程序双向绑定
欢迎加入前端交流群交流知识获取视频资料:749539640 vue.angular的双向绑定如下示例: <div> <input type="text" [(ng ...