首页 技术 正文
技术 2022年11月8日
0 收藏 496 点赞 1,237 浏览 1301 个字

正题

题目链接:https://www.luogu.com.cn/problem/P7099


题目大意

给出\(n\)个坐标轴上的点,\(q\)次询问从某点出发每次等概率向左或者向右一格求到达某个给出点的期望步数。

保证每个询问点左右都有目标点

\(1\leq n\leq 10^5,1\leq q\leq 5\times 10^6,1\leq x_i,y_i\leq 10^9\)


解题思路

每个询问具体分析,离左边点的距离为\(l\),右边点的距离为\(r\)

设\(f_i\)表示从\(i\)出发到达终点的期望距离,那么有

\[f_i=\frac{f_{i-1}+f_{i+1}}{2}+1
\]

然后\(f_{-l}=f_r=0\)然后求\(f_0\)。

然后拆出来

\[2f_i=f_{i-1}+f_{i+1}+2
\]\[(f_{i+1}-f_{i})-(f_{i}-f_{i-1})=-2
\]

也就是\(f\)数组两次差分是一个常数,所以说\(f\)可以被表示成一个二次函数,设\(f_x=ax^2+bx+c\),那么\(f’_x=f_{x}-f_{x-1}=2ax-a+b\),然后\(f”_x=f’_{x}-f’_{x-1}=2a=-2\),所以\(f_x=-x^2+bx+c\)。

因为知道零点\(\left\{\begin{matrix}-(-l)^2+b(-l)+c=0\\-r^2+br+c=0\end{matrix}\right.\),所以解出来\(\left\{\begin{matrix}b=r-l\\c=l\times r\end{matrix}\right.\)

所以其实答案就是\(l\times r\)

时间复杂度\(O(n\log n)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
const int N=1e5+10,P=998244353;
int T,n,q,a[N];
int read(){
int x=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
return x*f;
}
int main()
{
T=read();n=read();q=read();
for(int i=1;i<=n;i++)a[i]=read();
sort(a+1,a+1+n);
int k=1,p1=0,p2=0,p3=0,p4=2147483647;
for(int i=1;i<=q;i++){
int x=read();
while(k<n&&a[k]<x)k++;
int ans=1ll*(a[k]-x)*(x-a[k-1])%P;
p1^=ans;p2+=(ans&1);
p3=max(p3,ans);p4=min(p4,ans);
}
printf("%d\n%d\n%d\n%d",p1,p2,p3,p4);
return 0;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,487
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289