NOIP 2023 模拟赛
绝对不是伟大又敬业的老师亲自堵在酒店房间门口才补写的
A.merge
数学题 错位相减 快速幂 注意mod
思路:
一开始没有想到要用快速幂优化,然后数据n<=十的九次方,就。。。
错误代码:
#include
using namespace std;
long long mod=1e9+7;
int main()
{
freopen("merge.in","r",stdin);
freopen("merge.out","w",stdout);
long long a=1;
int n;
cin>>n;
if(n==1)
{
cout<<1<<endl;
}
else
{
double p=1;
for(int i=2;i<=n;i++)
{
p=(p+i)/2;
}
for(int i=1;i<=n-1;i++)
{
a=a*2%mod;
}
a=a*p;
cout<<a%mod<<endl;
}
return 0;
}
B.homework.
期望的线性性
思路:
这道题其实只要想到就不会特别难
A1 被第 k 个选到,即 A1 前有k-1 个,那么 E(k)= sum PAi
在 A1 之前被选中)。⽽对于 Ai 和 A1 之间的顺序,与其他 Ai ⽆关,即有 Ai/Ai+A1 的概率先选到 Ai,
A1/Ai+A1 的概率选到 A1.
代码:
#include
using namespace std;
const int N = 1e5 + 10;
int a[N];
int main()
{
freopen("homework.in", "r", stdin);
freopen("homework.out", "w", stdout);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",a+i);
}
double ans=1.0;
for(int i=2;i<=n;i++)
{
ans+=(double)a[i]/double(a[1]+a[i]);
}
printf("%.12lf\n",ans);
return 0;
}
C.path
分层图最短路
D.sort
线段树(学习ing)
这两题考试时没有时间做了,所以没有错误代码,有点可惜。其实都不会
小插曲
啊啊啊啊啊啊啊啊啊
今天考试的时候在上交代码时,只需要将四个代码放进文件夹就可以了。(我只交了两个)
然后,我在每个个代码外面又套了一个文件夹。
交上去运行时就直接找不到了!!!!
直接零分!!!气死了
总结
这次的总分是70+100=170分,主要是因为题目的难度不算特别高,还勉强应付的过来。