当前位置:网站首页>[acnoi2022] no way without guessing
[acnoi2022] no way without guessing
2022-06-23 04:37:00 【OneInDark】
tell the truth c n b l o g s \rm cnblogs cnblogs Just like a place to write a blog . C S D N \rm CSDN CSDN What is it
subject
Background
Follow OUYE \textsf{OUYE} OUYE Learn together O I \rm OI OI It is a gamble in life . Poor thing is , No casino will let you win more and lose less .
Title Description
Do you have x ( 0 ⩽ x < 1 ) x\;(0\leqslant x<1) x(0⩽x<1) money , You can gamble , The amount is any real number y y y, But you need { y i } \{y_i\} { yi} Monotonous . if x ⩾ 1 x\geqslant 1 x⩾1 You win , It's impossible to achieve and lose .
Gambling rules : cast y y y money , Yes p p p The probability is 2 y 2y 2y money , Yes ( 1 − p ) (1{-}p) (1−p) Probability is lost . Guarantee p < 1 2 p<\frac{1}{2} p<21 .
Find the probability of winning under the optimal strategy . Yes 998244353 998244353 998244353 Take the mold output .
Data range and tips
x = a 1 b 1 , p = a 2 b 2 x=\frac{a_1}{b_1},\;p=\frac{a_2}{b_2} x=b1a1,p=b2a2, Yes a 1 < b 1 ⩽ 1 0 6 a_1<b_1\leqslant 10^6 a1<b1⩽106 And 2 a 2 < b 2 ⩽ 1 0 6 2a_2<b_2\leqslant 10^6 2a2<b2⩽106 .
Ideas
There are no examples , I will not get a cent . With the example , The score is still low . Get out of the math problem O I \rm OI OI
Solve first b 1 = 2 k b_1=2^k b1=2k, That is to say x x x Is a finite decimal under binary . It is impossible not to guess the conclusion .
Conclusion : Every time x x x The last one under binary 1 1 1 Bet on the corresponding number .
prove : First, relax the conditions , Don't ask for the amount of gambling not to drop . We will prove , In this looser decision tree , This is the optimal strategy .
The following is the proof of the solution . There are some places I can't quite understand , The place in doubt will be marked with .
Make c ( s ) c(s) c(s) by s s s Binary system 1 1 1 The number of , f ( x , n ) ( x ∈ N ) f(x,n)\;(x\in\Bbb N) f(x,n)(x∈N) by x 2 n \frac{x}{2^n} 2nx become 1 1 1 Probability . Let's assume that the amount of gambling can only be 2 − n 2^{-n} 2−n Multiple , So this is equivalent to x → 2 n x\to 2^n x→2n Bet the whole amount each time . remember q = 1 − p q=1-p q=1−p Then there is a recurrence
f ( x , n ) = p ⋅ f ( ⌈ x 2 ⌉ , n − 1 ) + q ⋅ f ( ⌊ x 2 ⌋ , n − 1 ) f(x,n)=p\cdot f\left(\left\lceil\frac{x}{2}\right\rceil,n{-}1\right)+q\cdot f\left(\left\lfloor{x\over 2}\right\rfloor,n{-}1\right) f(x,n)=p⋅f(⌈2x⌉,n−1)+q⋅f(⌊2x⌋,n−1)
because 2 ∤ x 2\nmid x 2∤x I was gambling , 2 ∣ x 2\mid x 2∣x Time is shifting .
It's not hard to find out , This is actually a probability that l o w b i t \rm lowbit lowbit Carry or disappear . We enumerate where b i t \rm bit bit On “ Let go ” 了 , Set to i i i . about lcp ( x , i ) \text{lcp}(x,i) lcp(x,i) Part of , If both are 1 1 1, It means you missed it , It must be carried forward in one breath ; If both are 0 0 0, Although I didn't miss , For final carry , The following must be carried . about lcp \text{lcp} lcp The latter , if x x x by 0 0 0 and i i i by 1 1 1 Then there is no carry possibility , The opposite is always possible . So the back b i t \rm bit bit It doesn't matter . It is not difficult to find that this is i < x i<x i<x The judgment of the , thus
f ( x , n ) = ∑ i = 0 x − 1 q c ( i ) p n − c ( i ) f(x,n)=\sum_{i=0}^{x-1}q^{c(i)}p^{n-c(i)} f(x,n)=i=0∑x−1qc(i)pn−c(i)
The above text is a way of understanding ; Mathematical induction can also prove it .
Next, just prove ∀ k ∈ [ 0 , x ] ∩ Z \forall k\in[0,x]\cap\Bbb Z ∀k∈[0,x]∩Z Yes f ( x , n ) ⩾ p ⋅ f ( x + k , n ) + q ⋅ f ( x − k , n ) f(x,n)\geqslant p\cdot f(x{+k},n)+q\cdot f(x{-}k,n) f(x,n)⩾p⋅f(x+k,n)+q⋅f(x−k,n) . Press : Something should be summed up here , Similar to the shortest circuit , Just verify that the distance label cannot be relaxed . But the shortest path can be as follows “ The number of shortest sides ” inductive , And you ?
p ( f ( x + k , n ) − f ( x , n ) ) ⩽ q ( f ( x , n ) − f ( x − k , n ) ) ⇔ ∑ i = 0 k − 1 q c ( i + x ) p n − c ( i + x ) + 1 ⩽ ∑ i = 1 k q c ( x − i ) + 1 p n − c ( x − i ) \begin{aligned} p(f(x{+}k,n)-f(x,n))&\leqslant q(f(x,n)-f(x{-}k,n))\\ \Leftrightarrow\sum_{i=0}^{k-1}q^{c(i+x)}p^{n-c(i+x)+1}&\leqslant\sum_{i=1}^{k}q^{c(x-i)+1}p^{n-c(x-i)} \end{aligned} p(f(x+k,n)−f(x,n))⇔i=0∑k−1qc(i+x)pn−c(i+x)+1⩽q(f(x,n)−f(x−k,n))⩽i=1∑kqc(x−i)+1pn−c(x−i)
We prove a super unequal relation : There is bijection f ( t ) : [ x , x + k ) ↦ [ x − k , x ) f(t):[x,x{+}k)\mapsto[x{-}k,x) f(t):[x,x+k)↦[x−k,x) bring
q c ( i ) p n − c ( i ) + 1 ⩽ q c ( f ( i ) ) + 1 p n − c ( f ( i ) ) q^{c(i)}p^{n-c(i)+1}\leqslant q^{c(f(i))+1}p^{n-c(f(i))} qc(i)pn−c(i)+1⩽qc(f(i))+1pn−c(f(i))
That is, each item is smaller . I dare not put math problems in high school like this . It is equivalent to
q c ( i ) − c ( f ( i ) ) − 1 ⩽ p c ( i ) − c ( f ( i ) ) − 1 ⇐ c ( i ) − c ( f ( i ) ) − 1 ⩽ 0 q^{c(i)-c(f(i))-1}\leqslant p^{c(i)-c(f(i))-1}\Leftarrow c(i)-c(f(i))-1\leqslant 0 qc(i)−c(f(i))−1⩽pc(i)−c(f(i))−1⇐c(i)−c(f(i))−1⩽0
because q > p q>p q>p Well . The simplest way of thinking is , Make f ( i ) f(i) f(i) by i i i The result of removing a binary bit . Can it be done ?
set up s = 2 ⌈ log 2 k ⌉ s=2^{\lceil\log_2 k\rceil} s=2⌈log2k⌉, Yes i ∈ [ x − k + s , x + k ) i\in[x{-}k{+}s,\;x{+}k) i∈[x−k+s,x+k) Regulations f ( i ) = i − s f(i)=i-s f(i)=i−s . There is one left [ x , x + s − k ) ↦ [ x + k − s , x ) [x,x{+}s{-}k)\mapsto[x{+}k{-}s,x) [x,x+s−k)↦[x+k−s,x) Need to construct . Continuous recursion can complete the construction . Therefore, the conclusion is tenable .
The other two are posted below “ prove ”, For reference only .
Proof of rain rabbit and sand duck
If you don't gamble l o w b i t \rm lowbit lowbit, Bet higher b i t \rm bit bit, After that l o w b i t \rm lowbit lowbit You can't bet , Rounding does not come up , It's useless. . If you bet lower b i t \rm bit bit, In the end, either l o w b i t \rm lowbit lowbit Carry or not carry , Better bet .
The proof of Master Zhang
Basic strategy : If the amount of money ⩽ 1 2 \leqslant\frac{1}{2} ⩽21 Just all-in \text{all-in} all-in, Or bet ( 1 − x ) (1{-}x) (1−x) . because p < 1 2 p<\frac{1}{2} p<21 So I expect that if I bet too much, I will only lose money , Better put all your eggs in one basket . We admit that it is optimal . Call it “ Basic strategy ”.
Then we prove that it is equivalent to another strategy : remember f ( x ) f(x) f(x) For the current x x x Money is the bet of choice , be
f ( x ) = { 1 2 ( x = 1 2 ) 1 4 − ∣ x − 1 4 ∣ ( x < 1 2 ) 1 4 − ∣ x − 3 4 ∣ ( x > 1 2 ) f(x)=\begin{cases} \frac{1}{2} & (x=\frac{1}{2})\\ \frac{1}{4}-|x-\frac{1}{4}| & (x<\frac{1}{2})\\ \frac{1}{4}-|x-\frac{3}{4}| & (x>\frac{1}{2}) \end{cases} f(x)=⎩⎪⎨⎪⎧2141−∣x−41∣41−∣x−43∣(x=21)(x<21)(x>21)
If you will f ( x ) f(x) f(x) Draw the image of , So it was “ peak ” The shape of the , And this change is to make two “ hillside ” Change again to “ peak ”, Only a single point on the top of the mountain .
The proof process is vigorously developed . Here is to 1 4 < x < 1 2 \frac{1}{4}<x<\frac{1}{2} 41<x<21 For example .
g ( x ) = p ⋅ g ( 1 2 ) + q ⋅ g ( 2 x − 1 2 ) = p 2 + q p ⋅ g ( 4 x − 1 ) ( 0.25 < x < 0.5 ) \begin{aligned} g(x) &=p\cdot g\left(\frac{1}{2}\right)+q\cdot g\left(2x-\frac{1}{2}\right)\\ &=p^2+qp\cdot g(4x-1)\quad(0.25<x<0.5) \end{aligned} g(x)=p⋅g(21)+q⋅g(2x−21)=p2+qp⋅g(4x−1)(0.25<x<0.5)
Note that the second line uses “ Basic strategy ” an , all-in \text{all-in} all-in Result . Press : It feels like an obscure induction , namely “ Other locations used this strategy to fit the same winning rate , Therefore, it can be directly expanded by the winning rate equation of the original strategy ”. But it's hard to generalize .
Or say , I proved “ Adjust the first step strategy to get the same winning rate ”, And each step is equivalent to the first step , So every step can be adjusted ? It's always strange to say .
The result of direct expansion is
g ( x ) = p ⋅ g ( 2 x ) = p 2 + p q ⋅ g ( 4 x − 1 ) g(x)=p\cdot g(2x)=p^2+pq\cdot g(4x-1) g(x)=p⋅g(2x)=p2+pq⋅g(4x−1)
So it works . Empathy , We can transform “ hillside ” Replace with “ peak ”.
It is not difficult to find out that in the end f ( s 2 k ) = 1 2 k ( 2 ∤ s ) f(\frac{s}{2^k})=\frac{1}{2^k}\;(2\nmid s) f(2ks)=2k1(2∤s) . This is every bet l o w b i t \rm lowbit lowbit Well .
use d p \tt dp dp Rewrite the above procedure : f i , 0 / 1 f_{i,0/1} fi,0/1 It's the second time at present i i i position , Whether there is a carry winning probability after . The transition is linear .
If at present b i t \rm bit bit by 0 0 0, Then it is transferred to
f i = ( 1 0 q p ) f i − 1 f_i= \begin{pmatrix} 1 & 0\\ q & p \end{pmatrix} f_{i-1} fi=(1q0p)fi−1
among f i = ( f i , 0 f i , 1 ) f_i=\begin{pmatrix}f_{i,0}\\f_{i,1}\end{pmatrix} fi=(fi,0fi,1) . This transfer will not be discussed in detail , Just be patient .
If at present b i t \rm bit bit by 1 1 1, Then it is transferred to
f i = ( q p 0 1 ) f i − 1 f_i= \begin{pmatrix} q & p\\ 0 & 1 \end{pmatrix} f_{i-1} fi=(q0p1)fi−1
about b i = 2 n b_i=2^n bi=2n The situation of , We have O ( n ) \mathcal O(n) O(n) It's solved . otherwise x x x It's an infinite circular decimal .
obviously x x x The length of the loop section of does not exceed b b b . Let the matrix of a single cyclic node be B B B, The matrix of the non pure cyclic part is A A A . Then we only need to solve
lim n → + ∞ B n A ( 0 1 ) \lim_{n\to+\infty}B^{n}A \begin{pmatrix} 0\\ 1 \end{pmatrix} n→+∞limBnA(01)
The general method is probably diagonalization . But in this question B B B Is a very recurrent Markov matrix , The steady state can be solved directly . Notice the line vector !
Code
#include <cstdio>
#include <algorithm> // Almighty XJX yyds!!
#include <cstring> // oracle: ZXY yydBUS!!!
#include <cctype> // Huge Egg Dog ate me!!!
using llong = long long;
# define rep(i,a,b) for(int i=(a); i<=(b); ++i)
# define drep(i,a,b) for(int i=(a); i>=(b); --i)
# define rep0(i,a,b) for(int i=(a); i!=(b); ++i)
inline int readint(){
int a = 0, c = getchar(), f = 1;
for(; !isdigit(c); c=getchar()) if(c == '-') f = -f;
for(; isdigit(c); c=getchar()) a = a*10+(c^48);
return a*f;
}
const int MOD = 1e9+7;
inline llong qkpow(llong b, int q){
llong a = 1;
for(; q; q>>=1,b=b*b%MOD) if(q&1) a = a*b%MOD;
return a;
}
struct Matrix{
int a00, a01, a10, a11;
Matrix operator * (const Matrix &b) const {
Matrix c;
c.a00 = int((llong(a00)*b.a00+llong(a01)*b.a10)%MOD);
c.a01 = int((llong(a00)*b.a01+llong(a01)*b.a11)%MOD);
c.a10 = int((llong(a10)*b.a00+llong(a11)*b.a10)%MOD);
c.a11 = int((llong(a10)*b.a01+llong(a11)*b.a11)%MOD);
return c;
}
static Matrix I(){
Matrix c; c.a00 = c.a11 = 1;
c.a01 = c.a10 = 0; return c;
}
Matrix bite(){
Matrix c;
if(a00 != 1){
// (a00-1)*x+a10*y = 0
// x+y = 1 => (a00-1-a10)*x+a10 = 0
c.a00 = c.a10 = int(qkpow(1+a10+MOD-a00,MOD-2)*a10%MOD);
c.a01 = c.a11 = 1+MOD-c.a00; // Markov
}
else{
// a01*x+(a11-1)*y = 0
// x+y = 1 => (a11-1-a01)*y+a01 = 0
c.a01 = c.a11 = int(qkpow(1+a01+MOD-a11,MOD-2)*a01%MOD);
c.a00 = c.a10 = 1+MOD-c.a11;
}
return c;
}
};
Matrix mat[2];
const int MAXB = 1000000;
int pos[MAXB]; bool bit[MAXB];
int main(){
for(int T=readint(),a,b,p; T; --T){
a = readint(), b = readint(), p = readint();
p = int(qkpow(readint(),MOD-2)*p%MOD);
mat[0].a00 = 1, mat[0].a01 = 0;
mat[0].a10 = 1+MOD-p, mat[0].a11 = p;
mat[1].a00 = 1+MOD-p, mat[1].a01 = p;
mat[1].a10 = 0, mat[1].a11 = 1;
memset(pos, -1, b<<2);
int st = 0, ed = 0;
for(int i=0; true; ++i){
if(~pos[a]){
// cycle found
st = pos[a], ed = i; break;
}
pos[a] = i; // record
if((a<<=1) >= b)
a -= b, bit[i] = true;
else bit[i] = false;
}
Matrix ddg = Matrix::I();
rep0(i,st,ed) ddg = mat[bit[i]]*ddg;
ddg = ddg.bite(); // infinite power
drep(i,st-1,0) ddg = ddg*mat[bit[i]];
printf("%d\n",ddg.a01);
}
return 0;
}
边栏推荐
- photoshop PS 查看像素坐标、像素颜色、像素HSB颜色
- svg d3. JS generate tree tree view
- P1363 phantom maze (DFS)
- 2022年烷基化工艺考题及模拟考试
- 【二叉树进阶】AVLTree - 平衡二叉搜索树
- PTA:7-67 友元很简单2016final
- [advanced binary tree] AVLTree - balanced binary search tree
- How MySQL deletes a row of data in a table
- Ideal car × Oceanbase: when new forces of car building meet new forces of database
- PTA:7-65 饮料的价格
猜你喜欢

一篇文章学会er图绘制

Particle animation background login page particles js

Ideal car × Oceanbase: when new forces of car building meet new forces of database

LabVIEW在同一表中同时显示十六进制字符和普通字符

Imitation 360 desktop suspended ball plug-in

Deploying Apache pulsar on kubesphere

x24Cxx系列EEPROM芯片C语言通用读写程序

12 excellent practices of wireless network security

Sessions and Daemons

Getting started with tensorflow
随机推荐
抖音x-bogus和_signature参数分析
X24cxx series EEPROM chip C language universal reading and writing program
静态查找表和静态查找表
一篇文章学会er图绘制
P1347 排序(topo)
【二叉树进阶】AVLTree - 平衡二叉搜索树
PTA:7-67 友元很简单2016final
Particle animation background login page particles js
京东云分布式数据库StarDB荣获中国信通院 “稳定性实践先锋”
Implementation of VGA protocol based on FPGA
3D数学基础[十六] 匀加速直线运动的公式
Tiktok x-bogus and_ Signature parameter analysis
Can MySQL be used in Linux
leetcode 91. Decode Ways 解码方法(中等)
IDEA-导入模块
PTA:6-29 虚基类的应用-人与教师学生
Zhongang Mining: the demand for fluorite in the new energy and new material industry chain has increased greatly
PTA:6-73 函数调用
会话和守护进程
PTA:7-61 师生信息管理