徐州賽區網路預賽 C Cacti Lottery

2021-08-28 02:06:28 字數 1519 閱讀 9244

題目大意 

給乙個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 這樣才會保證不會出現包含的情況 解析...