遇到位運算,還是一位一位來。假設考慮二進位制第k位,那麼
令f[i]表示以到達i時,第i位存在的期望,那麼對於所有與i相連的j,如果(i,j)的第k位為1,那麼f[i]+=(1-f[j])/i的入度,否則f[i]+=f[j]/i的入度。
這樣看起來有n個方程,但是有乙個是沒用的,隨便去掉乙個。然後實際上令從n到1是等價的,只需要讓f[n]=0即可。
ac**如下:
#include#include#include#include#define eps 1e-10
#define n 105
#define m 20005
using namespace std;
int n,m,tot,bin[35],etr[n],fst[n],pnt[m],len[m],nxt[m];
double a[n][n];
void add(int x,int y,int z)
void gas()
} for (i=n; i; i--)
}int main()
bin[0]=1; for (i=1; i<=30; i++) bin[i]=bin[i-1]<<1;
double ans=0;
for (i=0; bin[i]<=mx; i++)
else a[x][y]-=1.0/etr[x];
}} for (x=1; x<=n+1; x++) a[n][x]=0; a[n][n]=1;
gas(); ans+=a[1][n+1]*bin[i];
} printf("%.3f\n",ans);
return 0;
}
by lych
2016.3.7
bzoj2337 XOR和路徑 高斯消元
題目 異或就一位一位考慮 x為到n的概率,解方程組即可 考慮了n就各種蜜汁錯誤,所以索性不管n了,這樣的題好像不管n比較方便。如下 include include include include using namespace std intconst m 10005 int n,m,d 105 h...
BZOJ2337 期望 高斯消元
很久沒有寫過高斯消元了,看著別人的 yy了一會。一遍敲出來感覺成就感 而且gauss這個單詞感覺特別帥有沒有!bzoj2337傳送門 突然發現一張圖就把所有題目資訊包含完了,不用手打還有點不習慣 因為原題是要求異或期望,位與位之間沒有影響,所以拆開處理。以下的分析均是針對某一二進位制位上的值 定義f...
BZOJ4269 再見Xor 高斯消元
給定n個數,你可以在這些數中任意選一些數出來,每個數可以選任意多次,試求出你能選出的數的異或和的最大值和嚴格次大值。第一行乙個正整數n。接下來一行n個非負整數。一行,包含兩個數,最大值和次大值。33 5 6 6 5 100 n 100000,保證n個數不全是0,而且在int範圍內 題解 大水 inc...