There is a very simple and interesting one-person game. You have 3 dice, namelyDie1,Die2 and Die3. Die1 hasK1 faces.Die2 has K2 faces.Die3 has K3 faces. All the dice are fair dice, so the probability of rolling each value, 1 toK1,K2, K3 is exactly 1 /K1, 1 /K2 and 1 / K3. You have a counter, and the game is played as follow:
- Set the counter to 0 at first.
- Roll the 3 dice simultaneously. If the up-facing number of Die1 isa, the up-facing number ofDie2 is b and the up-facing number ofDie3 isc, set the counter to 0. Otherwise, add the counter by the total value of the 3 up-facing numbers.
- If the counter's number is still not greater than n, go to step 2. Otherwise the game is ended.
Calculate the expectation of the number of times that you cast dice before the end of the game.
Input
There are multiple test cases. The first line of input is an integer T (0 <T <= 300) indicating the number of test cases. ThenT test cases follow. Each test case is a line contains 7 non-negative integersn,K1, K2, K3,a,b, c (0 <= n <= 500, 1 < K1,K2,K3 <= 6, 1 <= a <= K1, 1 <=b <=K2, 1 <= c <= K3).
Output
For each test case, output the answer in a single line. A relative error of 1e-8 will be accepted.
Sample Input
2 0 2 2 2 1 1 1 0 6 6 6 1 1 1
Sample Output
1.142857142857143 1.004651162790698
参考bin神的代码,分离系数,不需高斯消元
/** Author: ☆·aosaki(*’(OO)’*) niconiconi★ **/
//#pragma comment(linker, "/STACK:1024000000,1024000000")
//#include<bits/stdc++.h>
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <functional>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <list>
#include <stack>
//#include <tuple>
#define mem(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define lp(k,a) for(int k=1;k<=a;k++)
#define lp0(k,a) for(int k=0;k<a;k++)
#define lpn(k,n,a) for(int k=n;k<=a;k++)
#define lpd(k,n,a) for(int k=n;k>=a;k--)
#define sc(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define lowbit(x) (x&(-x))
#define ll long long
#define pi pair<int,int>
#define vi vector<int>
#define PI acos(-1.0)
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define TT cout<<"*****"<<endl;
#define TTT cout<<"********"<<endl;
inline int gcd(int a,int b)
{
return a==0?b:gcd(b%a,a);
}
#define INF 1e9
#define eps 1e-8
#define mod 10007
#define MAX 10010
using namespace std;
double A[800],B[800];
double p0,ha[100];
int main()
{
//freopen("in.txt","r",stdin);
int t,n,k1,k2,k3,a,b,c;
cin>>t;
while(t--)
{
scanf("%d %d %d %d %d %d %d",&n,&k1,&k2,&k3,&a,&b,&c);
p0=1.0/k1/k2/k3;
mem(A);
mem(B);
mem(ha);
lp(i,k1)
lp(j,k2)
lp(k,k3)
{
if(i==a && j==b && k==c) continue;
ha[i+j+k]+=p0;
}
lpd(i,n,0)
{
A[i]=p0;
B[i]=1;
lp(j,k1+k2+k3)
{
A[i]+=A[i+j]*ha[j];
B[i]+=B[i+j]*ha[j];
}
}
printf("%.15f\n",B[0]/(1.0-A[0]));
}
return 0;
}
本文深入探讨了游戏开发中涉及的AI音视频处理技术,包括语义识别、物体检测、语音识别和AR特效等应用,以及如何通过AI优化游戏体验。同时,文章也介绍了AI在音视频领域的最新进展,如FFmpeg音视频编解码、OpenCV图像处理等技术,旨在为开发者提供全面的技术指导。
1527

被折叠的 条评论
为什么被折叠?



