題目大意
給乙個3*3的方格填入 1-9 九個數 ,有些數是已知的,有些數是對方已知但我未知的(*),有些數是大家都未知的(#) ,每次只能求三個數,它取的是一行或者一列或者乙個對角線,我要計算取得最大的對應值的期望
由於#和*是兩個部分,所以要兩次dfs;
總之,暴力打表;
#include#include#include#include#include#include#pragma warning(disable:4996)
using namespace std;
int getscore(int s)
}char mp[10][10];
int a[3][3];
double sum, num;
double r[3], c[3];
double dd[2];
long long cnt = 0;
void dfs2(bool used, int x, int y)
r[i] += getscore(temp);
} for (int i = 0; i < 3; i++)
c[i] += getscore(temp);
} dd[0] += getscore(a[0][0] + a[1][1] + a[2][2]);
dd[1] += getscore(a[2][0] + a[1][1] + a[0][2]);
cnt++;
return;
} int nx = x;
int ny = y + 1;
if (ny >= 3)
if (mp[x][y] != '#')
else
} }}void dfs(bool used, int x, int y)
dd[0] = 0;
dd[1] = 0;
dfs2(used, 0, 0);
double temp = 0;
for (int i = 0; i < 3; i++)
temp = max(temp, dd[0]);
temp = max(temp, dd[1]);
sum += temp / cnt;
num += 1;
return;
} int nx = x;
int ny = y + 1;
if (ny >= 3)
if (mp[x][y] != '*')
else
} }}int main()
sum = 0, num = 0;
bool used[100];
memset(used, false, sizeof(used));
memset(a, 0, sizeof(a));
for (int i = 0; i < 3; i++)
}} dfs(used, 0, 0);
printf("%.6f\n", sum / num);
}}
ACM ICPC 2018 徐州賽區網路預賽
a hard to prepare 推公式 矩陣快速冪 但是推公式失敗了,推了很久,但是還是感覺能做。賽後看他人題解,推錯了,m 2 k,假設從第1個排到第n 1個,第n個位置有 m 2 情況數有m m 1 n 2 m 2 其中當第1個位置和第n 1個位置數不同時,第n個確實時 m 2 但是若這兩個...
ACM ICPC 2018 徐州賽區網路預賽
每一輪有三種操作,加上a 減去b 或者 取負 當且僅當 a,b,c 不為0時,對應的操作有效 給出乙個上界和乙個下界 大於等於上界就是 good ending 小於等於下界 就是 bad ending 否則就是 normal ending 兩個人輪流操作,第乙個人想要good ending 第二個人...
Trace 2018徐州賽區網路預賽
題意 每次給出乙個點,然後就會形成兩條線,如果後面的矩形覆蓋了前面的邊,那麼這條邊就消失了,最後求剩下的邊是多少 題目確保不會完全覆蓋 也沒有乙個矩形在另乙個矩形裡面 即對於 x1,y1 x2,y2 如果x1 x2 則 y1 y2 如果x1 x2 則 y1 y2 這樣才會保證不會出現包含的情況 解析...