首页 > 其他分享 >CF1842H Tenzing and Random Real Numbers 题解

CF1842H Tenzing and Random Real Numbers 题解

时间:2024-04-27 20:44:05浏览次数:20  
标签:Real ch Tenzing int 题解 void read FF define

题目链接

点击打开链接

题目解法

实数的概率好反直觉!

对 \(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;
}

标签:Real,ch,Tenzing,int,题解,void,read,FF,define
From: https://www.cnblogs.com/Farmer-djx/p/18162489

相关文章

  • CAUC_CTF 题解
    caucctfwpez_隐写如果计算机是中国人发明的Welcome!easy_rsafromCrypto.Util.numberimport*importgmpy2importlibnumimportrandomimporthashlibn=0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f7524......
  • [题解]P2015 二叉苹果树
    P2015二叉苹果树树形dp,一般用dfs辅助解决。当我们搜索到\(u\),此时剩下\(cnt\)条边可以用,也就是说\(u\)为根节点的子树最多可以保留\(cnt\)条边。由于上一层的需求,我们显然需要枚举剩余边数\(i\)(\(1\leqi\leqcnt\))。接下来对于每个\(i\),我们考虑剩余的\(u\)条边可以怎么放。......
  • 题解:P10329 [UESTCPC 2024] Add
    Add题意将序列进行一系列的操作,输出对\(a_{1}\)的期望值。题目中操作说的比较明了,再次就不特殊声明了。思路据题意所知,每一个\(n\)应该对应了一个固定的答案。于是我就想到可以打表,就打出了下面的式子。n=1时ans=1n=2时ans=5n=3时ans=14n=4时ans=30n=5时ans=5......
  • vue,js直接导出excel,xlsx的方法,XLSX_STYLE 行高设置失效的问题解决
    1、先安装依赖:xlsx、xlsx-style、file-saver三个包npminstallxlsxxlsx-stylefile-saver2、引入:<script>import*asXLSXfrom'xlsx/xlsx.mjs'importXLSX_STYLEfrom'xlsx-style';import{saveAs}from'file-saver';exportdefau......
  • Debian/Linux安装 Realtek 8811cu无线网卡驱动
    1、下载必备安装包make、gcc(debian中可用build-essential包)、bc、linux-headers-$(uname-r)、dkmssudoaptinstallbuild-essentialbcsudoaptinstalllinux-headers-$(uname-r)dkms2、在github中下载8811cu的驱动(8811cu和8821cu用的同一个驱动),注意下驱动程序是否能......
  • 题解笔记
    P1196银河英雄传说带权并查集(根搭积木很像):对于每个点,分别记录所属链的头结点、该点到头结点的距离以及它所在集合的大小。每次合并将y接在x的尾部,改变y头的权值和所属链的头结点,同时改变x的尾节点。注意:每次查找的时候也要维护每个节点的权值。每次查询时计算两点的权值差。......
  • 「洛谷」题解:P1008 三连击
    题目传送门题目背景本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。题目描述将\(1,2,\ldots,9\)共\(9\)个数分成\(3\)组,分别组成\(3\)个三位数,且使这\(3\)个三位数构成\(1:2:3\)的比例,试求出所有满足条件的......
  • [题解][2021浙江CCPC] Shortest Path Query
    题目描述输入一张无向图,对于无向图的每条边u,v,w,将u和v转换成二进制后,u是v的前缀。给出q次询问,每次输入s,t,求s到t的最短距离。题解从题目数据而言,n为1e5,m为2e5,显然一般的多源最短路算法无法完成。考虑此题的特殊性质:由于边仅可能从u连向以u为前缀的v,那么若建立一颗以1为根的完......
  • P4707 重返现世 题解
    Description为了打开返回现世的大门,Yopilla需要制作开启大门的钥匙。Yopilla所在的迷失大陆有\(n\)种原料,只需要集齐任意\(k\)种,就可以开始制作。Yopilla来到了迷失大陆的核心地域。每个单位时间,这片地域就会随机生成一种原料。每种原料被生成的概率是不同的,第\(i\)种......
  • [题解] [NOIP 2010] 饮水入城
    [题解][NOIP2010]饮水入城题目描述有一个\(n\timesm\)的矩阵,每一点的高度是\(h_{i,j}\)。矩阵的最下面一行是\(m\)个城市,现在要在第一行建水站为这些城市供水,水站建好后水可以从水站往别的点引水,只能从高处引向相邻的低处,如果一个城市存在可以给他引水的水站,则这个城......