20211018地狱模拟赛
好的晚自习这么早就跑过来干博客了,今天还在努力的改昨天的题;
昨天考的那叫一个惨呀,30分,第一题不会逆元放弃,第二题暴力都写挂了只有搜索有10分,第三题暴力勉强20分啊啊啊~~~痛苦~~~
好的今天总结一下常见的数学知识:
第一题:
每一个点在一前面出现的概率为ai/(ai+a1),
所以答案为∑ni=2 ai*ai/(ai+a1)+1,我们就把式子同分,然后再求逆元取模,
而求逆元又是一个重点,逆元有三种求法,拓欧,费马,线性推,
在这里的连加上还有一种方法参考洛谷逆元2,只用跑一次快速幂
接下里就十分简单了:
#include<bits/stdc++.h> using namespace std; const long long N=1e7; const long long p=1e9+7; long long a[N],fac[N],ifac[N]; inline long long read() { static char ch; long long res=0,sign=1; while((ch=getchar())<'0'||ch>'9'){ if(ch=='-') sign=-1; } res=ch-'0'; while((ch=getchar())>='0'&&ch<='9'){ res=res*10+ch-'0'; } return res*sign; } long long Inv(long long x,long long a){ long long ans=1; while(x){ if(x&1){ ans=(long long)ans*a%p; } a=(a*a)%p; x>>=1; } return ans%p; } signed main() { long long n; n=read(); for(int i=1;i<=n;i++){ a[i]=read(); } long long res=a[1]; fac[1]=1; for(int i=2;i<=n;i++) fac[i]=(fac[i-1]*(a[i]+a[1])%p)%p; ifac[n]=Inv(p-2,fac[n]); for(int i=n-1;i;i--) ifac[i]=(ifac[i+1]*(a[i+1]+a[1])%p)%p; for(int i=2;i<=n;i++) ifac[i]=(ifac[i]*(fac[i-1])%p)%p; for(int i=2;i<=n;i++) { res=(res+(a[i]*a[i])%p*ifac[i]%p)%p; } printf("%lld",res); }
然后是第二题,我就暴力求了一个逆序对可以友20分,然而我只有10分
具体实现要用dp 但是我还没有搞懂,先咕着;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】