E. Expected Power (Codeforces 976 Div2)

news2024/10/11 16:41:53

这道题好难

原题

E. Expected Power

提示

Hint 1

试着找 f(S) 的期望值而不是 (f(S))^{2}

Hint 2

从f(S)的二进制表示中找规律来求(f(S))^{2}

代码1

对答案代码做了注释

#include <bits/stdc++.h>
using namespace std;

const int mod = 1e9+7, N = 2e5 + 10;

// 最高只有1023, 小于等于2的10次方
const int bits = 11;

int n;
int a[N],p[N];

// 快速幂
int fast_exp (int b, int e, int mod)
{
	int ans = 1;
	while (e)
	{
		if(e&1) ans = (1ll*ans*b) % mod;
		b = (1ll*b*b) % mod;
		e >>= 1;
	}
	
	return ans;
}

// 求逆元
int inv(int n)
{
	return fast_exp(n,mod-2,mod);
}

// 10000的逆元
const int inverse_1e4 = inv(10000);

int dp[bits][bits][2][2];

void transition(int a, int p)
{
//	概率是多少, 也就是一万分之 p
	p = (1ll * p * inverse_1e4) % mod;
	int negp = mod + 1 - p;
	
//	将 a 的二进制形式存入数组
	int bin[bits];
	for(int i = 0; i < bits; i ++ )
	{
		bin[i] = a & 1;
		a >>= 1;
	}
	
	
	for(int i = 0; i < bits; i ++ )
	{
		for(int j = 0; j < bits; j ++ )
		{
//			用于暂存
			int temp[2][2];
			
			for(int k : {0,1}) 
				for(int l : {0,1})
//					              如果没有选到这个数            如果选到这一位, 那么会加上这些
					temp[k][l] = (1ll * dp[i][j][k][l] * negp + 1ll * dp[i][j][k ^ bin[i]][l ^ bin[j]] * p) % mod;
			
			for(int k : {0,1}) 
				for(int l : {0,1}) 
					dp[i][j][k][l] = temp[k][l];
		}
	}
}

void solve()
{
	cin >> n;
	
	for (int i = 0; i < n; i ++) cin >> a[i];
	for (int i = 0; i < n; i ++) cin >> p[i];
	
//	初始化
	for(int i = 0; i < bits; i ++)
		for(int j = 0; j < bits; j ++) 
			dp[i][j][0][0] = 1;
	
	for(int i = 0; i < n; i ++ ) 
		transition(a[i], p[i]);
	
	int ans = 0;
	
//	求答案
	for(int i = 0; i < bits; i ++ )
	{
		for(int j = 0; j < bits; j ++ )
		{
			int pw2 = (1ll << (i + j)) % mod;
			ans += (1ll * pw2 * dp[i][j][1][1]) % mod;
			ans %= mod;
//			用后就清空
			for(int k : {0,1})
				for(int l : {0,1}) 
					dp[i][j][k][l] = 0;
		}
	}
	cout << ans << "\n";
}

signed main()
{
	int t;
	cin >> t;
	
	while(t--)
	{
		solve();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HAL+M4学习记录_5

一、串口 记录使用HAL库开发串口 1.1 简介 USART中文意思是通用同步异步收发器&#xff0c;常用串口是异步串口&#xff0c;简记为UART&#xff0c;是内部集成的硬件外设。使用两根通信线&#xff0c;发送端TX和接收端RX&#xff0c;工作时RX和TX交叉连接。由于计算机的USB接口…

【计算机网络】详谈TCP协议确认应答机制捎带应答机制超时重传机制连接管理机制流量管理机制滑动窗口拥塞控制延迟应答

一、TCP 协议段格式 1.1、4位首部长度 4位首部长度的基本单位是4字节&#xff0c;也就是说如果4位首部长度填6&#xff0c;那报头长度就是24字节。报头长度的取值范围为[0,60]字节&#xff0c;也就是说选项的最大长度为40字节。 二、确认应答机制 发送数据和发送应答&#x…

python爬虫 - 初识正则表达式

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、正则表达式 &#xff08;一&#xff09;正则表达式的基本作用 &#xf…

DAY7 继承多态

继承 目的 提高代码的重用性&#xff0c;减少一些重复代码的书写 权限修饰符 就是是用来限制类中的成员&#xff08;成员变量、成员方法、构造器&#xff09;能够被访问的范围。 private 只能本类 缺省 本类、同一个包中的类 protected 本类&#xff0c;同一个包中的类、子…

thenable的执行时机

thenable执行只有2个时机 1.触发resolve()时,代码尚未注册then的内容,那么直到代码扫描到then那一行,才会把then的内容放进队列 2.先注册then,直到后期遇到resolve(),才会进入队列 视频教学 https://www.bilibili.com/video/BV12zsqeMEyt

传智杯 第六届—C

题目描述&#xff1a; 输入两个字符串&#xff0c;从第一字符串中删除第二个字符串中所有的字符。例如&#xff1a;第一个字符串是"They are students."&#xff0c;第二个字符串是”aeiou"。删除之后的第一个字符串变成"Thy r stdnts."。保证两个字符…

仿生水凝胶微纤维:从蜘蛛丝获得灵感,探索高性能纤维材料的新路径

大家好&#xff01;今天咱们来了解一种水凝胶微纤维——《Bioinspired Mechanically Robust and Recyclable Hydrogel Microfibers Based on Hydrogen‐Bond Nanoclusters》发表于《Advanced Science》。研究人员从蜘蛛丝那儿获得灵感&#xff0c;想要做出既机械性能好&#xf…

Spring Cloud 配置中心详解:微服务动态读取与案例示范

在微服务架构中&#xff0c;每个微服务往往都有其独立的配置&#xff0c;这些配置可能会根据环境的不同&#xff08;开发、测试、生产&#xff09;进行调整和变化。Spring Cloud 配置中心提供了一种集中化管理和动态更新微服务配置的解决方案。在本文中&#xff0c;我们将详细介…

详细分析Spring Framework中 @ConditionalOnProperty的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 从实战中学习启发 1. 基本知识 Conditiona…

一键将表格嵌入ppt作为附件!2个做ppt必知的技巧分享!

怎样把表格作为附件放入ppt&#xff1f; 众所周知&#xff0c;微软推出的Office套件包含了Powerpoint和Excel这两款软件&#xff0c;如果想在Powerpoint中插入表格&#xff0c;且表格数据量比较大&#xff0c;此时最好的呈现方式&#xff0c;是在Excel中来展示这些数据&#x…

msvcp120.dll无法继续执行代码的五个解决方法

在计算机系统中&#xff0c;MSVCP120.dll是一个至关重要的动态链接库文件&#xff0c;它是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多基于Windows的应用程序运行至关重要。当系统提示“msvcp120dll丢失”时&#xff0c;意味着该文件可能由于误删…

清华毕业生去向引发的思考....

近日&#xff0c;清华最新发布的毕业生去向一经公布&#xff0c;便在社会上引起了广泛的关注和热议&#xff0c;许多人看完后都陷入了沉默。这一份去向报告&#xff0c;不仅仅是一组数据的呈现&#xff0c;更是对教育成果、社会需求以及个人发展等多方面问题的深刻映射。 一、数…

文件与目录的基本操作

前提&#xff1a;使用su root 切换到权限最大的root用户 1.显示当前工作目录的绝对路径&#xff08;pwd&#xff09; 用途&#xff1a;用于显示当前工作目录的绝对路径的命令。无论用户在文件系统的哪个位置&#xff0c;pwd 命令都能提供当前所在位置的完整路径信息。 用法&a…

现货白银交易技巧:向下突破回撤策略

有关现货白银交易的技巧一直是投资者关注的重点&#xff0c;投资者确实应该保持学习&#xff0c;这样才能跟得上市场&#xff0c;不会落后&#xff0c;下面我们就来介绍一个现货白银交易中的突破回撤的策略。 首先这个现货白银交易技巧判断的基础就是找到一波横盘趋势。所谓的突…

【C# 网络编程】基本概念

基本概念 OSI模型 背景&#xff1a; 为了统一和兼容不同计算机厂商的网络体系结构概念&#xff0c;国际标准化组织&#xff08;ISO&#xff09;在1979年提出了OSI参考模型&#xff08;Open System Interconnection&#xff0c;&#xff09; 结构 物理层&#xff08;Physica…

java反序列化之CommonCollections6利⽤链的学习

一、源起 前文学习CC1链和URLDNS链的学习&#xff0c;同时学习过程中知道cc1受jdk版本的限制&#xff0c;故而进一步分析cc6链的利用过程&#xff0c;这个利用链不受jdk版本的限制&#xff0c;只要commons collections小于等于3.2.1&#xff0c;都存在这个漏洞。 ps&#xff1…

Flink 介绍(特性、概念、故障容错、运维部署、应用场景)

概述 特性 概念 数据流 状态 时间 savepoint 故障容错 运维部署 部署应用到任意地方 Flink能够更方便地升级、迁移、暂停、恢复应用服务 监控和控制应用服务 运行任意规模应用 应用场景 事件驱动型应用 什么是事件驱动型应用? 事件驱动型应用的优势 Flink如何…

对接外卖霸王餐api要遵循哪些步骤?

对接外卖霸王餐API接口的步骤通常包括以下几个关键环节&#xff1a; 选择服务提供商&#xff1a;根据需求、预算、服务内容、接口稳定性、覆盖范围&#xff08;是否支持全国多个城市、是否支持主要外卖平台如美团和饿了么等&#xff09;、技术支持等因素选择合适的霸王餐API服…

实现一个时钟

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QPainter>//画家类 #include<QTime>//时间类 #include<QTimer>//定时器类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget …

vue3.5系列之响应式props解构的几点技巧对比

在最新的版本3.5x中&#xff0c;对props的能力也进行了加强。下面&#xff0c;我们具体看下有哪些变化&#xff0c;给我们带来的新的体验&#xff01; 体验一 3.5之前解构props的效果 // 子组件 <template><div><h1>响应式props</h1><p>{{ co…