【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 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...
随机推荐
- logstash grok
input { file { path => "/opt/service/test-service/logs/catalina-error*.log" type => ...
- DevExpress WPF控件记录
以下是博主用到DevExpress WPF控件时的一些记录笔记: 1.Canvas控件:Canvas控件的背景色一定要设置(background="Transparent"),不然 ...
- 一、python快速入门(每个知识点后包含练习)
1. 编程与编程语言 编程的目的是什么? #计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一 ...
- Windows 证书签名的伪造
Windows 系统中的一些非常重要文件通常会被添加数字签名,其目的是用来防止被篡改,能确保用户通过互联网下载时能确信此代码没有被非法篡改和来源可信,从而保护了代码的完整性.保护了用户不会被病毒.恶意 ...
- [NOIP2018模拟赛10.16]手残报告
[NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...
- Pycharm+Selenium webdriverPython自动化测试
这是关于软件测试的一个作业! 1.Pycharm下载,这里可以自己去官网下载即可:https://www.jetbrains.com/pycharm/download/#section=windows ...
- 一个SDL2.0程序的分析
//把图片加载到SDL_Texture SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren){ ...
- 【转】js中的原型
原文链接:https://blog.csdn.net/u012468376/article/details/53121081 一.什么是原型原型是Javascript中的继承的基础,JavaScrip ...
- 【小知识点】input输入框在安卓以及IOS手机中光标及字体不居中解决方法
问题根本:不要使用line-height垂直居中. 解决方法:可直接定义height,然后高度由上下padding值撑开. input { height: 1rem; padding: 1rem 0; ...
- 1 java 笔记
第一java的版本: J2ME主要用于移动设备和信息家电 J2SE整个Java技术的核心 J2EE java技术应用最广泛的部分,主要应用与企业的开发 第二:基于java语言的开源框架 struts ...