首页 > 其他分享 >AtCoder Regular Contest 111 F Do you like query problems?

AtCoder Regular Contest 111 F Do you like query problems?

时间:2023-04-23 20:58:38浏览次数:47  
标签:Do like limits AtCoder dfrac ll times 2m sum

洛谷传送门

AtCoder 传送门

挺有意思的计数。

计数感觉很难做,不妨转成期望,期望又可以转成概率之和。

考虑枚举 \(w \in [0,m-1]\),把 \(> w\) 的数设为 \(1\),\(\le w\) 的数设为 \(0\)。那么期望就是所有 \(w\),\(a_i\) 为 \(1\) 的概率之和。对于一个 \(i\),只有以下的操作能改变 \(a_i\),称以下操作为 \(i\) 的关键操作

  • 满足 \(i \in [l,r], v < w\) 的操作 \(1\);
  • 满足 \(i \in [l,r], v \ge w\) 的操作 \(2\)。

设 \(p_i\) 为一个操作能为 \(i\) 的关键操作的概率,分别考虑它是否包含 \(i\),\(v\) 是否 \(< w\),是否为操作 \(1/2\),那么:

\[p_i = \dfrac{i(n-i+1)}{\dfrac{n(n+1)}{2}} \times (\dfrac{1}{2} \times \dfrac{m}{2m+1} \times \dfrac{w}{m} + \dfrac{1}{2} \times \dfrac{m}{2m+1} \times \dfrac{m-w}{m}) = \dfrac{2mi(n-i+1)}{n(n+1)(2m+1)} \]

设 \(f_{w,t,i}\) 为 \(t\) 时刻 \(a_i\) 为 \(1\) 的概率,则:

\[f_{w,t,i} = [1 - (1-p_i)^t] \times \dfrac{m-w-1}{m} \]

设 \(g_{t,i}\) 为 \(t\) 时刻 \(a_i\) 的和,枚举 \(w\) 求和,即:

\[g_{t,i} = \sum\limits_{w=0}^{m-1} f_{w,t,i} = \sum\limits_{w=0}^{m-1} [1 - (1-p_i)^t] \times \dfrac{m-w-1}{m} = \dfrac{m-1}{2} \times [1 - (1-p_i)^t] \]

枚举第 \(t+1\) 个操作为 \(3\) 操作,每个位置拆贡献,答案即:

\[ans = \sum\limits_{t=0}^{q-1} \sum\limits_{i=1}^n \dfrac{i(n-i+1)}{\dfrac{n(n+1)}{2}} \times \dfrac{1}{2m+1} \times \dfrac{m-1}{2} \times [1 - (1-p_i)^t] \]

\[= \sum\limits_{i=1}^n \dfrac{i(n-i+1)}{n(n+1)} \times \dfrac{m-1}{2m+1} \times \sum\limits_{t=0}^{q-1} [1 - (1-p_i)^t] \]

\[= \sum\limits_{i=1}^n \dfrac{i(n-i+1)}{n(n+1)} \times \dfrac{m-1}{2m+1} \times (q - \dfrac{1-(1-p_i)^q}{p_i}) \]

至此可以 \(O(n \log P)\) 计算,\(P\) 为模数。

code
// Problem: F - Do you like query problems?
// Contest: AtCoder - AtCoder Regular Contest 111
// URL: https://atcoder.jp/contests/arc111/tasks/arc111_f
// Memory Limit: 1024 MB
// Time Limit: 4000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 200100;
const ll mod = 998244353;

ll n, m, q, p[maxn];

inline ll qpow(ll b, ll p) {
	ll res = 1;
	while (p) {
		if (p & 1) {
			res = res * b % mod;
		}
		b = b * b % mod;
		p >>= 1;
	}
	return res;
}

void solve() {
	scanf("%lld%lld%lld", &n, &m, &q);
	for (int i = 1; i <= n; ++i) {
		p[i] = 1LL * i * (n - i + 1) % mod * m % mod * 2 % mod * qpow(n * (n + 1) % mod * (m * 2 + 1) % mod, mod - 2) % mod;
	}
	ll ans = 0;
	for (int i = 1; i <= n; ++i) {
		ll t = (mod + 1 - qpow((mod + 1 - p[i]) % mod, q)) % mod * qpow(p[i], mod - 2) % mod;
		ans = (ans + 1LL * i * (n - i + 1) % mod * (m - 1) % mod * qpow(n * (n + 1) % mod * (m * 2 + 1) % mod, mod - 2) % mod * (q - t + mod) % mod) % mod;
	}
	ans = ans % mod * qpow(((n * (n + 1) / 2) % mod) * (m * 2 + 1) % mod, q) % mod;
	printf("%lld\n", ans);
}

int main() {
	int T = 1;
	// scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

标签:Do,like,limits,AtCoder,dfrac,ll,times,2m,sum
From: https://www.cnblogs.com/zltzlt-blog/p/17347689.html

相关文章

  • 云原生之docker容器资源管理
    一、本次实践介绍1.本次实践环境1.本次实践环境为ECS云服务器;2.本次实践为个人测试环境,生产环境请谨慎使用;3.本次实践为研究docker容器的资源管理,加深对docker容器的理解;2.登录ECS云服务器二、docker环境检查1.检查docker版本检查docker版本[root@ecs-7501~]#dockerversion......
  • AtCoder ABC 299 ABCDEFG
    A-TreasureChest题意给定由\(\texttt{.}\)、\(\texttt{|}\)、\(\texttt{*}\)三种字符组成的长度为\(n\)的字符串\(s\),保证\(\texttt{|}\)的个数为\(2\),\(\texttt{*}\)的个数为\(1\)。判断\(\texttt{*}\)是否在两个\(\texttt{|}\)之间。代码#include<cstrin......
  • Docker镜像的三种创建方法及dockerfile案例
    一、基于现有镜像创建1. 首先启动一个镜像,在容器里做修改(1)首先启动一个镜像,在容器里做修改dockerrun-itdcentos:7/bin/bash#创建并启动镜像dockerps#查看启动的镜像信息 2. 将修改后的容器提交为新的镜像,需要使用该容器的ID号创建新镜像(2)将修改后的容器提......
  • 【MAUI Blazor踩坑日记】2.关于Windows上的相机问题
    前言MAUI中Windows上,调用MediaPicker.Default.CapturePhotoAsync()并不能启动相机拍照。关于这个问题可以查看https://github.com/dotnet/maui/issues/7660,https://github.com/dotnet/maui/pull/13220,好消息是已经修复了,坏消息是.net8修复了,而且还没发布.所以目前怎么办,http......
  • Markdown与中文文档写作规范
    记录一下Markdown学习,还有写作规范。Markdown学习Markdown语法教程写作规范中文技术文档的写作规范中文文案排版指北......
  • 使用Docker安装Mysql
    mysql官方DockerHub地址:https://hub.docker.com/_/mysql可选的环境变量:MYSQL_ROOT_PASSWORDMYSQL_DATABASEMYSQL_USER,MYSQL_PASSWORDMYSQL_ALLOW_EMPTY_PASSWORDMYSQL_RANDOM_ROOT_PASSWORDMYSQL_ONETIME_PASSWORDMYSQL_INITDB_SKIP_TZINFO创建一个环境变量配置文件,vi......
  • Docker资源管理
    一、Docker资源控制1.CPU资源控制工具cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等等。所以cgroups(Controlgroups)实现了对资源的配额和度量。cgroups有四大功能:资源限制:可以对任务......
  • 【Qt6】QWindow类可以做什么
    原来的水文标题是“用VSCode搞Qt6”,想想还是直接改为“Qt6”,反正这个用不用VSCode也能搞。虽然我知道大伙伴们都很讨厌CMake,但毕竟这厮几乎成了C++的玩家规范了。Qt也算识大体,支持用CMake来构建程序。所以,只要你用的是能写C++的工具,理论上都能搞Qt。创建应用程序......
  • mysql undo log管理
    MySQLundolog管理在InnoDB存储引擎中,undolog是采用分段(segment)的方式进行存储的。rollbacksegment称为回滚段,每个回滚段中有1024个undologsegment。在MySQL5.5之前,只支持1个rollbacksegment,也就是只能记录1024个undo操作。在MySQL5.5之后,可以支持128个rollbacksegment......
  • docker网络模式
    一、docker网络概述1、docker网络实现的原理Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一......