投票問題
如果一個選舉有p 個人投A 的票,q 個人投B 的票,p > q,那麼,在整個投票過程中A 的票累計數一直嚴格多於B 的票累計數的概率? (p-q)/(p+q)
分析
一個投票次序如果A 的選票累計數從頭到尾都一直嚴格領先於B 的選票累計數,
我們就把它叫做有利次序,否則叫無利次序。顯然,凡是以B 票開始的次序都是無利
次序。在以A 票開始的次序中,也有一些是無利次序。怎麼來數這些無利次序呢?我
們知道有利次序永遠不能有A 票數與B 票數相等的時候。換句話說,任何無利次序都
必須要在某一個時間出現兩個選票數相等的時候。我們把第一次A,B 票數相等的點叫
E 點。現在把從第一票到E 點的所有票都反轉,也就是說A 票換成B 票,B 票換成A 票。
這個次序就變成了一個以B 票開始的次序。這樣,我們建立了一個以A 開始的無利次
序到以B 開始的次序的對應。反過來,因爲A 的總票數大於B 的總票數,所以,以B
票開始的次序必須出現A 票數與B 票數相等的時候。通過上面的反轉變化,我們可以
把任意以B 開始的次序換成一個以A 開始的無利次序。也就是說,我們在以A 開始的
無利次序與所有以B 開始的次序中建立了一個1-1 對應。所以,所有無利次序等於兩
倍於以B 開始的所有次序。那麼,以B 開始的次序有多少呢?由於A 有p 票,B 有q 票,
以B 票開始的次序佔總次序數的q/(p + q)。所以,有利次序的概率是1 - 2*q/(p + q)
= (p - q)/(p + q)。證畢。
java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.DecimalFormat;
public class B {
public void solve()
{
try {
BufferedReader br = new BufferedReader(new FileReader("D:/IIT Hyd Sem-4/CJdata/B-small-attempt0.in"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/IIT Hyd Sem-4/CJdata/B_out.txt"));
//BufferedWriter bw = new BufferedWriter(new FileWriter("D:/IIT Hyd Sem-4/CJdata/B_out_Large.txt"));
int T = Integer.parseInt(br.readLine());
for(int t=0;t<T;t++)
{
//int M = Integer.parseInt(br.readLine());
double ans=0;
String[] s = br.readLine().split(" ");
int N = Integer.parseInt(s[0]);
int M = Integer.parseInt(s[1]);
ans = (double)(N-M)/(N+M);
//double x = 22/7;
String str = new DecimalFormat("0.00000000").format(ans);
bw.write("Case #"+(t+1)+": "+str+"\n");
}
br.close();
bw.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
B a = new B();
a.solve();
}
}