2018 10 20 校內模擬賽

2022-07-15 18:51:11 字數 1948 閱讀 3454

比賽鏈結

比較麻煩的一道模擬題。

我寫的比較麻煩,應該有更簡潔的寫法

#include#define rep(i, a, b) for(register int i = (a); i < (b); i++)

#define _for(i, a, b) for(register int i = (a); i <= (b); i++)

using

namespace

std;

const

int maxn = 15

;int

a[maxn][maxn], n, m, id;

char

s[maxn][maxn], str[maxn];

inline

bool judge(char x)

intmain()

;

if(!judge(s[i-1][j]) || !judge(s[i][j-1])) a[i][j] = ++id;

}puts(

"across");

_for(i,

1, n)

else str[id++] =s[i][j];

if(j == m &&id)}}

string

word;

vector

int, string> >words;

puts(

"down");

_for(j,

1, m)

else word += s[i][j], id++;

if(i == n &&id)}}

sort(words.begin(), words.end());

rep(i,

0, words.size())

}return0;

}

一開始直接暴搜

然後突然看到方案數模1000000009,突然醒悟(沒認真看題浪費了好多時間)

那麼再想想了想,這不就是很裸的動規嗎,類似數字三角形

只不過加了個對稱,統計方案而已

唯一也要想的地方就是推一下對稱的公式

然後我粗心大意推反了……

下標從1開始的話

(i, j)的對稱點是(n - j + 1, n - i + 1)

然而我推成了(n - i + 1, n - j + 1)

卡了好久好久,一直wa,就因為這個……

還是太弱。

#include#define add(a, b) a = (a + b) % mod

#define rep(i, a, b) for(register int i = (a); i < (b); i++)

#define _for(i, a, b) for(register int i = (a); i <= (b); i++)

using

namespace

std;

const

int maxn = 100 + 10

;const

int mod = 1000000009

;int

a[maxn][maxn], n;

int f[maxn][maxn][2

];inline

int val(int i, int

j) int

main()

int mint = 1e9, ans = 0

; _for(i,

1, n)

else

if(mint == f[i][j][0

]) add(ans, f[i][j][

1]);

}printf(

"%d\n

", mint, ans);

}return0;

}

待補……

2018 10 12 校內模擬賽

分析 題一 一道模擬題 但模擬也是有很多坑的 寫出一道題後,一定要自己試很多很多很多組不同的資料 比如這道題,幾乎我試的每一組資料都找出了我程式的bug,好險 分析 題二 好題!應該是和松鼠聚會這道題本質一樣的 首先我們需要推導出任意兩個點 x,y a,b 之間能夠到達彼此所需要走的最短步數,由於可...

1105 校內模擬賽

題一 差分約束or帶權並查集?不啊,zz了,簡單模擬即可 我簡直服了我自己了,想複雜了 直接對每乙個聯通塊隨便找乙個點賦位置,然後dfs繼續找下去,給每乙個點賦值,如果在搜尋的過程中,發現了有衝突,就是impossible了 注意加邊的時候加雙向邊,因為你是從隨便乙個點開始搜尋的 然後這麼簡單的乙個...

2018 9 27 校內模擬賽

a dna 題目大意 給定乙個長度為n,每項值為1或2的數列。有q次詢問,對於每次詢問回答乙個區間 l,r 使得區間內的和等於xi。時間限制 1000ms 空間限制 256mb 編譯指令 開啟o2和c 11 solution 容易發現,若存在乙個權值和為 x x 2 的串,必然存在乙個權值和 為 x...