SHARE
    TWEET
    Vince14

    Untitled

    Mar 19th, 2023
    70
    0
    Never
    Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
    text 4.24 KB | None | 0 0
    1. #include <iostream>
    2. #include <string>
    3. #include <cstring>
    4. #include <algorithm>
    5. #include <cmath>
    6. #include <vector>
    7. #include <set>
    8. #include <map>
    9. #include <stack>
    10. #include <queue>
    11. #include <deque>
    12. #include <unordered_map>
    13. #include <iomanip>
    14. #include <regex>
    15. #include <numeric>
    16. using namespace std;
    17. #define pii pair<long long , long long>
    18. #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
    19. const long long dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
    20. const long long MAX = 305;
    21. const long long MOD = 1000000009;
    22. int n, m, l;
    23. string s;
    24. int arr[MAX][MAX];
    25. int hsum[MAX][MAX][26], vsum[MAX][MAX][26];
    26. int nxt[MAX][MAX][26];
    27. void init_hsum(){
    28. for(int i = 0; i < n; i++){
    29. for(int j = 0; j < m; j++){
    30. if(j == 0){
    31. int cur = arr[i][j];
    32. hsum[i][j][cur] = 1;
    33. }
    34. else {
    35. int cur = arr[i][j];
    36. for(int k = 0; k < 26; k++){
    37. if(k == cur){
    38. hsum[i][j][k] = hsum[i][j - 1][k] + 1;
    39. }
    40. else{
    41. hsum[i][j][k] = hsum[i][j - 1][k];
    42. }
    43. }
    44. }
    45. }
    46. }
    47. }
    48. void init_vsum(){
    49. for(int j = 0; j < m; j++){
    50. for(int i = 0; i < n; i++){
    51. if(i == 0){
    52. int cur = arr[i][j];
    53. for(int k = 0; k < 26; k++){
    54. if(k == cur){
    55. vsum[i][j][k] = 1;
    56. }
    57. else{
    58. vsum[i][j][k] = 0;
    59. }
    60. }
    61. }
    62. else {
    63. int cur = arr[i][j];
    64. for(int k = 0; k < 26; k++){
    65. if(k == cur){
    66. vsum[i][j][k] = vsum[i - 1][j][k] + 1;
    67. }
    68. else{
    69. vsum[i][j][k] = vsum[i - 1][j][k];
    70. }
    71. }
    72. }
    73. }
    74. }
    75. }
    76. int main() {
    77. //freopen("hayfeast.in", "r", stdin);
    78. //freopen("hayfeast.out", "w", stdout);
    79. FAST;
    80. cin >> n >> m >> l;
    81. cin >> s;
    82. for(int i = 0; i < n; i++){
    83. string tmp;
    84. cin >> tmp;
    85. for(int j = 0; j < tmp.size(); j++){
    86. arr[i][j] = tmp[j] - 'A';
    87. }
    88. }
    89. init_hsum();
    90. init_vsum();
    91. for(int i = 2; i < n; i++){
    92. if(2 >= n){
    93. break;
    94. }
    95. for(int k = 0; k < 26; k++){
    96. if(i == 2){
    97. nxt[0][0][k] += hsum[i][m - 1][k] - hsum[i][2][k];
    98. }
    99. else{
    100. nxt[0][0][k] += hsum[i][m - 1][k] - hsum[i][1][k];
    101. }
    102. }
    103. }
    104. // Add 1st line horizontal movement
    105. // vertical movement (going down array)
    106. for(int i = 1; i < n; i++){
    107. int j = 0;
    108. for(int k = 0; k < 26; k++){
    109. nxt[i][j][k] = nxt[i - 1][j][k];
    110. if(i - 3 >= 0){
    111. if(j - 2 >= 0){
    112. nxt[i][j][k] += (arr[i - 3][j - 2] == k) ? 1 : 0;
    113. }
    114. if(j + 2 < m){
    115. nxt[i][j][k] += (arr[i - 3][j + 2] == k) ? 1 : 0;
    116. }
    117. }
    118. if(i - 2 >= 0){
    119. if(j - 3 >= 0){
    120. nxt[i][j][k] += hsum[i - 2][j - 3][k];
    121. }
    122. if(j + 3 < m){
    123. nxt[i][j][k] += hsum[i - 2][m - 1][k] - hsum[i - 2][j + 2][k];
    124. }
    125. }
    126. if(i + 1 < n){
    127. if(j - 3 >= 0){
    128. nxt[i][j][k] -= hsum[i + 1][j - 3][k];
    129. }
    130. if(j + 3 < m){
    131. nxt[i][j][k] -= hsum[i + 1][m - 1][k] - hsum[i + 1][j + 2][k];
    132. }
    133. }
    134. if(i + 2 < n){
    135. if(j - 2 >= 0){
    136. nxt[i][j][k] -= (arr[i + 2][j - 2] == k) ? 1 : 0;
    137. }
    138. if(j + 2 < m){
    139. nxt[i][j][k] -= (arr[i + 2][j + 2] == k) ? 1 : 0;
    140. }
    141. }
    142. }
    143. }
    144. for(int i = 0; i < n; i++){
    145. cout << nxt[i][0][0] << "\n";
    146. }
    147. }
    148. // 5 10
    149. //4 10
    150. //6 15
    151. //3 5
    152. //4 9
    153. //3 6
    Advertisement
    Add Comment
    Please, Sign In to add comment
    Public Pastes
    We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
    Not a member of Pastebin yet?
    Sign Up, it unlocks many cool features!

    AltStyle によって変換されたページ (->オリジナル) /