CF1842H Tenzing and Random Real Numbers 题解

news/发布时间2024/5/9 14:28:14

题目链接

点击打开链接

题目解法

实数的概率好反直觉!

\(1\) 做限制不是很好做,考虑变成正负性的限制(即对 \(0\) 做限制)
\(y_i=x_i-0.5\),那么限制就变成了 \(y_i+y_j\le 0,\;y_i+y_j\ge 0\)

这里要给出一些实数概率的结论:

  1. 实数下,\(x=y\) 的概率为 \(0\),因为 \(\frac{1}{\infty}=0\)
  2. 对于任意一组 \(x\) 之间的范围相同的 \(x_1,...,x_n\),那么对于每一个大小关系 \(x_1<x_2<...<x_n\),概率是相等的

有了这两个结论,不难得到做法
考虑状压 \(y_i\) 的大小关系,同时需要得出 \(y_i\) 的正负(\(0\) 不用管,因为取到 \(0\) 的概率为 \(0\)),最后把方案数除以 \(n!2^n\) 就是答案
状压 \(dp\) 设计简单,这里不讲了
暴力做是 \(O(2^nn^2)\),不难用位运算优化到 \(O(2^nn)\)

#include <bits/stdc++.h>
#define F(i,x,y) for(int i=(x);i<=(y);i++)
#define DF(i,x,y) for(int i=(x);i>=(y);i--)
#define ms(x,y) memset(x,y,sizeof(x))
#define SZ(x) (int)x.size()-1
#define all(x) x.begin(),x.end()
#define pb push_back
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
typedef pair<int,int> pii;
template<typename T> void chkmax(T &x,T y){ x=max(x,y);}
template<typename T> void chkmin(T &x,T y){ x=min(x,y);}
template<typename T> void read(T &FF){FF=0;int RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;FF*=RR;
}
const int N=20,P=998244353;
int n,m,f[1<<N],lmt[2][N];
int qmi(int x,int y){int res=1;for(;y;y>>=1){ if(y&1) res=1ll*res*x%P;x=1ll*x*x%P;}return res;
}
inline void inc(int &x,int y){ x+=y;if(x>=P) x-=P;}
int main(){read(n),read(m);F(i,1,m){int op,x,y;read(op),read(x),read(y);x--,y--;lmt[op][x]|=1<<y,lmt[op][y]|=1<<x;}f[0]=1;F(S,1,(1<<n)-1)F(i,0,n-1) if(S>>i&1){int p=S&lmt[0][i],q=S&lmt[1][i];if(p&&q) continue;if(!p&&!q) inc(f[S],2*f[S^(1<<i)]%P);else inc(f[S],f[S^(1<<i)]);}int tot=1<<n;F(i,1,n) tot=1ll*tot*i%P;int ans=1ll*f[(1<<n)-1]*qmi(tot,P-2)%P;printf("%d\n",ans);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Fastbin attackDouble free和Unsortbin leak的综合使用

Fastbin attack&&Double free和Unsortbin leak的综合使用✅ 今天做一个综合题目,包括利用Fastbin attack实现多指针指向一个地址,以及利用Unsortbin leak泄露libc基地址和修改__malloc_hook地址为one_gadget 题目是buuctf上面的一道题目,题目链接 https://buuoj.cn/…

python学习思维导图分享

python 本文包含了我的一些python学习的笔记和思维导图 第一部分:python基础导图下载链接 第二部分:函数及其他文件操作导图下载链接 第三部分:类及网络编程导图下载链接 第四部分:mysql导图下载链接

微机结构

微型计算机结构 总体来说,微型计算机的结构是采用总线结构实现相互之间的信息传递。CPU和存储器通过总线相互连接,I/O设备通过I/O接口连接在总线上。 总线是计算机各部件之间传输数据的通道,有三类总线分别是:数据总线、地址总线和控制总线(反馈)。主要特性有:公共性、分…

京东web端h5st—4.7逆向分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6Ly93d3cuamQuY29tLw== 分析流程了解h5st 看了sha256相关加密算法逻辑b…

Games 101: 旋转矩阵

旋转矩阵 本文主要介绍了旋转矩阵的推导,分为两种方式:旋转坐标 旋转坐标轴 以下坐标系都是右手坐标系旋转坐标 已知坐标点\(A(x_a,y_a)\), 旋转\(\theta\)角后变为坐标点\(B(x_b,y_b)\),求解旋转矩阵.\[{\large \begin{align*} \begin{split} x_a &=r_a \cdot cos(\alp…

2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意

2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意的是,白色车可以垂直或水平移动,而白色象可以沿对角线移动,它们不能跳过其他棋子。…