公司建设网站价格多少,建设工程施工合同模板,无锡优化网站费用,网站建设好了却收不到传送门:洛谷
题目描述:
题目较长,此处省略
输入:
3 5
30 20 50
0 50 33 25 0
30 0 35 0 0
0 0 0 25 60
1
3
输出:
2 56.89
1 43.11
3 0.00读完题目,我们会发现其实题目给了我们两个事件,并且这两个事件是相互关联的.因此不难想到使用条件概率
我们将故障原因看做事件AAA,结合…传送门:洛谷
题目描述:
题目较长,此处省略
输入:
3 5
30 20 50
0 50 33 25 0
30 0 35 0 0
0 0 0 25 60
1
3
输出:
2 56.89
1 43.11
3 0.00读完题目,我们会发现其实题目给了我们两个事件,并且这两个事件是相互关联的.因此不难想到使用条件概率
我们将故障原因看做事件AAA,结合题意,我们共有A1,A2,A3...AnA1,A2,A3...AnA1,A2,A3...An 将故障现象看做事件BBB,我们共有B1,B2,B3...BMB1,B2,B3...BMB1,B2,B3...BM 此时事件A是事件B的条件,事件B是事件A的产生现象,那么此时我们就会发现这是一个条件概率.那么对于此题来说,我们知道了所有的P(Ai)P(A_{i})P(Ai),然后又知道了所有的P(Bi∣Ai)P(Bi|Ai)P(Bi∣Ai),然后此时我们知道现象去求起因的概率,此时我们需要使用贝叶斯公式
贝叶斯公式:P(A∣B)P(B∣A)∗P(A)/P(B)P(A∩B)/P(B)P(A|B)P(B|A)*P(A)/P(B)P(A∩B)/P(B)P(A∣B)P(B∣A)∗P(A)/P(B)P(A∩B)/P(B)
结合到本题来说,我们的AAA代表了每一个AiA_{i}Ai,我们的BBB代表的是所有k个故障现象的发生.那么对于我们的P(Ai∩B)P(Ai∩B)P(Ai∩B)来说,就是aiaiai发生的同时b1...bjb1...bjb1...bj也发生的概率.对于我们的P(B)P(B)P(B)来说,就是无所谓aiaiai发不发生,b1...bjb1...bjb1...bj也发生的概率.
那么显然的我们的P(Ai∩B)P[Ai]∗P[Ai][Bj]∗(1−P[Ai][Bk])P(Ai∩B)P[Ai]*P[Ai][Bj]*(1-P[Ai][Bk])P(Ai∩B)P[Ai]∗P[Ai][Bj]∗(1−P[Ai][Bk])BjBjBj表示发生的现象,BkBkBk表示没发生这个现象 我们的P(B)∑1nP(Ai∩B)P(B)\sum_{1}^n{P(Ai∩B)}P(B)∑1nP(Ai∩B)
至此,我们的这一道题也就解决了.
#include bits/stdc.h
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt1
#define rs rt1|1
#define lson l,mid,rt1
#define rson mid1,r,rt1|1
inline ll read() {ll x0,w1;char chgetchar();for(;ch9||ch0;chgetchar()) if(ch-) w-1;for(;ch0ch9;chgetchar()) xx*10ch-0;return x*w;
}
#define maxn 1000000
const double eps1e-8;
#define int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int n,m;double p2[200][200];double p1[maxn];double p3[maxn];
int check[maxn];
struct Ans{int a;double b;bool operator (const Ans rhs) const {if(brhs.b) return arhs.a;else return brhs.b;}
};
int main() {nread();mread();for(int i1;in;i) cinp1[i];for(int i1;in;i) {for(int j1;jm;j) {cinp2[i][j];}}int kread();for(int i1;ik;i) {int numread();check[num]1;}double sum0;for(int i1;in;i) {p3[i]p1[i];for(int j1;jm;j) {if(check[j]) {p3[i]p3[i]*p2[i][j]/100;}else {p3[i]p3[i]*(100-p2[i][j])/100;}}sump3[i];}vectorAnsans;for(int i1;in;i) {ans.push_back({i,p3[i]/sum});}sort(ans.begin(),ans.end());for(int i0;ians.size();i) {printf(%d %.2lf\n,ans[i].a,ans[i].b*100);}return 0;
}