牛客练习赛64(C,D(容斥))
发布日期:2021-06-29 12:58:21 浏览次数:2 分类:技术文章

本文共 1267 字,大约阅读时间需要 4 分钟。

C-序列卷积之和

题意:

成功看错题,看成连乘,推算了一个小时的规律,然后跳D题自闭了。

分析:

#pragma GCC optimize(2)#include
#define ll long long#define maxn 1005#define inf 1e9#define pb push_back#define rep(i,a,b) for(int i=a;i<=b;i++)#define per(i,a,b) for(int i=a;i>=b;i--)using namespace std;const ll mod=1e9+7;inline ll read(){ ll x=0,w=1; char c=getchar(); while(c<'0'||c>'9') {if(c=='-') w=-1; c=getchar();} while(c<='9'&&c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar();} return w==1?x:-x;}const int N=2e5+10;ll s[N],a[N];int n;int main(){ n=read(); rep(i,1,n) a[i]=read(); per(i,n,1) { s[i]=s[i+1]+(n-i+1)*a[i]%mod; s[i]%=mod; } ll ans=0; rep(i,1,n) { //printf("s2:%lld\n",s[i]); ans+=i*a[i]%mod*s[i]%mod; ans%=mod; } printf("%lld\n",ans);}/*41 2 3 4*/

D-宝石装箱

链接:

来源:牛客网
 

题目描述

n颗宝石装进n个箱子使得每个箱子中都有一颗宝石。第i颗宝石不能装入第ai​个箱子。求合法的装箱方案对998244353取模。

两种装箱方案不同当且仅当两种方案中存在一颗编号相同的宝石装在不同编号的箱子中。

官方题解:

#include
using namespace std;const int N=8005,mod=998244353;typedef long long ll;ll f[N],dp[N];int n,a[N];int main(){ f[0]=f[1]=1; for(int i=2;i
=0;j--) (dp[j+1]+=dp[j]*a[i])%=mod; ll ans=0; for(int i=0,p=1;i<=n;i++,p*=-1) ans=(ans+p*dp[i]*f[n-i]%mod)%mod; ans=(ans+mod)%mod; printf("%lld\n",ans);}

 

转载地址:https://ccsudeer.blog.csdn.net/article/details/106296888 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:西安邮电大学第五届ACM-ICPC校赛(同步赛)(A(dp),B(拓扑排序),C(树形dp),E(模拟),G(差分),H(数学思维))
下一篇:整数划分(划分dp)总结

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月26日 08时47分52秒