時間限制:10000ms
單點時限:1000ms
記憶體限制:256mb
小hi的學校大禮堂的地毯是由很多塊n × m大小的基本地毯拼接而成的。例如由2×3的基本地毯
abc
abd
拼接而成的大禮堂整片地毯如下:
...
abcabcabcabcab
abdabdabdabdab
. abcabcabcabcab .
. abdabdabdabdab .
. abcabcabcabcab .
abdabdabdabdab
abcabcabcabcab
...
由於大禮堂面積非常大,可以認為整片地毯是由基本地毯無限延伸拼接的。
現在給出k張地毯的**,請你判斷哪些**可能是小hi學校大禮堂地毯的一部分。不需要考慮旋轉**的方向。
例如
bca
bdabca
可能是上述地毯的一部分,但
bac
bad
不可能是上述地毯的一部分。
第1行包含三個整數,n,m 和 k。
第2~n+1行包含乙個n × m的矩陣,代表基本地毯的樣式。其中每乙個元素都是乙個大寫字母(a-z)。
之後是 k 張**的資料。
每張**的第一行包含兩個整數,h 和 w,代表**的大小。
以下 h 行包含乙個 h × w的矩陣,代表**中地毯的樣式。其中每乙個元素都是乙個大寫字母(a-z)。
對於80%的資料,1 ≤ n, m ≤ 10, 1 ≤ h, w ≤ 100
對於100%的資料, 1 ≤ n, m ≤ 50, 1 ≤ k ≤ 10, 1 ≤ h ≤ 100, 1 ≤ w ≤ 800。
對於每張**,輸出yes或者no代表它是否可能是大禮堂地毯的一部分。
樣例輸入
2 3 3
abc
abd
3 3
bca
bda
bca
2 3
bac
bad
7 14
abcabcabcabcab
abdabdabdabdab
abcabcabcabcab
abdabdabdabdab
abcabcabcabcab
abdabdabdabdab
abcabcabcabcab
樣例輸出
yes
noyes
wa了很久,很容易錯的模擬題。關鍵是要根據大禮堂地毯寬度來擴大調整模板寬度(strcat函式/string拼接),以及逐行地去比較大禮堂地毯是否基礎模板匹配(strstr函式/find與string::npos)1. c++string拼接find & string::npos實現:------->可以3ms實現
#include #include #include#include#include#include#includeusing namespace std;
int n, m, q, h, w;
string str[55];
string s1[105], s2[105];
bool is_right()
int k = 0;
for(; k < n; k++)
}if(k == n) return false;
for(int i = 0; i < h; i++)
return true;
}int main()
}return 0;
}
2.strcpy,strstr函式實現: ------>9ms
c裡面的幾個字串函式:char *strcpy(char* dest, const char *src):把從src位址開始且含有null結束符的字串複製到以dest開始的位址空間
strstr(str1,str2): 判斷字串str2是否是str1的子串。如果是,則該函式返回str2在str1中首次出現的位址;否則,返回null。
extern char *strcat(char *dest, const char *src):把src所指向的字串(包括「\0」)複製到dest所指向的字串後面(刪除*dest原來末尾的「\0」)。要保證*dest足夠長,以容納被複製進來的*src。*src中原有的字元不變。返回指向dest的指標。
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
typedef long long ll;
static const int max_n = 15;
char maps[55][55];
char tar_maps[105][805];
char use_maps[105][905];
int n, m, k;
bool judge(int tar_row, int tar_col)
int i = 0;
for (; i < n; ++i)
} if (i == n) return false;
++i;
if (i == n) i = 0;
for (int j = 1; j < tar_row; ++j)
return true;
}int main()
return 0;
}
1538 清點人數
nk 中學組織同學們去五雲山寨參加社會實踐活動,按慣例要乘坐火車去。由於 nk 中學的學生很多,在火車開之前必須清點好人數。初始時,火車上沒有學生。當同學們開始上火車時,年級主任從第一節車廂出發走到最後一節車廂,每節車廂隨時都有可能有同學上下。年級主任走到第 m 節車廂時,他想知道前 m 節車廂上一...
經典海盜分金問題(hdu 1538)
別人部落格講的非常詳細 題意 這是乙個經典問題,有n個海盜,分m塊金子,其中他們會按一定的順序提出自己的分配方案,如果大於等於50 的人贊成,則方案通過,開始分金子,如果不通過,則把提出方案的扔到海浬,下乙個人繼續。思路 上面那篇部落格已經講的非常詳細了 include include includ...
Hihocoder 數列問題
給定乙個長度為n數列a a1,a2,an a 1,a 2,a n a1 a2 an 由於某種原因,小ho對這個數列有些不滿意。他希望每個在數列 現的數值,其出現的次數都是唯一的。假設a 1,1,2,2 1和2都出現了2次,小ho就會不滿意。於是小ho決定從a中刪除一些數,使得每個數值出現次數都是唯一...