首页 > 其他分享 >arc106d-ti-jie

arc106d-ti-jie

时间:2024-05-08 18:23:16浏览次数:20  
标签:jie int sum ti arc106d times maxn ans mod

ARC106D

思路

左边到右边不好,改为任意一个到另一个。

$$ans_x=\frac{1}{2}(\sum_in\sum_jn (a_i+a_j)x-\sum_in (2\times a_i)^x)$$

拆开 $k$ 次方。

$$(a_i+a_j)x=\sum_{k=0}x (\binom{x}{k}\times {a_i}^k\times {a_j}^{x-k})$$

$$ans_x=\frac{1}{2}(\sum_{k=0}x(\sum_in {a_i}^k\times \sum_j^n {a_j}{x-k})-\sum_in (2\times a_i)^x)$$

预处理 $sum_k=\sum_i {a_i}^k$。

$$ans_x=\frac{1}{2}(\sum_{k=0}^x(sum_k\times sum_{x-k})-2^x\times sum_x)$$

复杂度 $O(nk+k^2)$。

code

int n,x,a[maxn];
inline int ksm(int a,int b=mod-2,int p=mod){
	int ans=1;
	while(b){
		if(b&1)ans=ans*a%p;
		a=a*a%p;
		b>>=1;
	}
	return ans;
}
int ans,ni;
int fac[maxn],inv[maxn];
int C(int m,int n){return fac[m]*inv[n]%mod*inv[m-n]%mod;}
int sum[maxm],mul[maxn];
void work(){
	n=read();x=read();
	for(int i=1;i<=n;i++)a[i]=read(),mul[i]=1;
	for(int k=0;k<=x;k++){
		for(int i=1;i<=n;i++)sum[k]+=mul[i],sum[k]%=mod;
		for(int i=1;i<=n;i++)mul[i]=mul[i]*a[i]%mod;
//		cout<<sum[k]<<" ";
	}
//	cout<<"\n";
	fac[0]=1;for(int i=1;i<=x;i++)fac[i]=fac[i-1]*i%mod;
	inv[x]=ksm(fac[x]);
	for(int i=x-1;~i;i--)inv[i]=inv[i+1]*(i+1)%mod;
	ni=ksm(2);
	for(int i=1;i<=x;i++){
		ans=0;
		for(int k=0;k<=i;k++)ans+=C(i,k)*sum[k]%mod*sum[i-k]%mod,ans%=mod;
		ans+=mod-ksm(2,i)*sum[i]%mod,ans%=mod;
		ans*=ni,ans%=mod;
		printf("%lld\n",ans);
	}
}

标签:jie,int,sum,ti,arc106d,times,maxn,ans,mod
From: https://www.cnblogs.com/yhddd/p/18180557

相关文章

  • agc049a-ti-jie
    agc049a思路期望。与CF280C相似的思路。每个点最多被做一次,或者被其他点影响。设$f_i$表示$i$是否被选,为$0$或$1$。答案为$E[\sumf_i]$,即$\sumf_i$的期望。$$ans=E[\sumf_i]=\sumE[f_i]=\sump_i$$所以答案为每个点被选的概率的和。能影响点$i$使其不被......
  • abc349g-ti-jie
    abc349g思路从前往后枚举$i$,每次对$i+1\lej\lei+a_i$的$j$赋值$b_j=b_{i\times2-j}$。同时有$b_{i+a_i+1}\neb_{i-a_i-1}$。用$ban_{i,j}$记录$i$不能是$j$,如果要给$i$赋值就选最小的。最直接的就是并查集倍增将两段区间并起来。可以用类似马拉车的思路得......
  • Elements in iteration expect to have 'v-bind:key' directives.
    当组件中使用v-for时,如果不指定key,则会有红色警告信息。解决方案如下。方案一:绑定key(亲试有效)//方式一<liv-for="(item,index)inlist":key="index">//方式二<liv-for="(item,index)inlist":key="item.id">//方式三<liv-for="(item,in......
  • GeometryCollection 的类型映射器(TypeHandler)
    byemanjusakafromhttps://www.emanjusaka.top/2024/05/mybatis-typeHandler-geometryCollection彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。GeometryCollection是GeoJSON数据模型中的一个类型,用于表示一个几何对象的集合。MySQL8中支持了GeometryCol......
  • 为什么在有@Transactional注解的方法,一定要加rollbackFor异常回滚的异常类型?
    在spring项目中,@Transactional注解默认会回滚运行时异常(RuntimeException)及其子类当你在一个有@Transactional注解方法里面抛了一个Expection类型的异常,呢它是不支持事务回滚的,异常继承体系我们在一个方法里面要对事务进行操作,如果要抛异常,应该抛出untimeException,不能直接......
  • spring刷题记录——to be continue
    在牛客网刷的题目,类似于补基础了?这里按照知识点进行分类,因为发现有些同样的知识点不同的题目还是很痛苦。这里就不用颜色标记了,因为我觉得都要记。Spring容器篇Spring容器也叫做Ioc容器(Ioc,在我之前写的随笔里面也有谈到),本质上就是一个工厂。Sp......
  • Windows下使用ONNXRuntime推理YOLOv8
    一、准备工作将训练好的pt文件转为onnx格式。yoloexportmodel=best.ptformat=onnxdevice=0opset=13dynamic#如果是动态Shape的话,命令行参数dydynamic一定要加上,不然就是static的模型二、下载与安装ONNXRuntime注意:下载安装onnxruntime-gpu时需要保证其与cuda的兼容......
  • c# Dictionary<TKey,TValue>.TryAdd
    原文链接:https://learn.microsoft.com/zh-cn/dotnet/fundamentals/code-analysis/quality-rules/ca1864Dictionary<TKey,TValue>.ContainsKey(TKey) 和 Dictionary<TKey,TValue>.Add 都执行查找操作,这是冗余设置。如果字典中已存在键,Dictionary<TKey,TValue>.Add 也会引发异......
  • Server-side vulnerabilities :path traversal
    来自bp的学院,提供了靶机,是个学习好地方服务器漏洞之路径遍历 就是说网站提供的图片,如果直接通过src="/loadImage?filename=xxx.jpg“读取的话,可以通过构造”filename=../../../etc/passwd"参数,拿到服务器的passwd文件,这样能读取服务器的用户放一个靶机地址:https://portswigg......
  • 【container】【docker-compose】【mysql】【redis】【rabbit mq】【mongo】【elastic
    @目录写在前面mysqlredisrabbitmqmongoelasticsearch单节点多节点参考资料dockerkuberneteshelmk3s写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。mysqlversion:'3'services:......