• 2 蓝桥杯打题记录


    1. #include
    2. using namespace std;
    3. int n;
    4. int k;
    5. int const N = 1e5 + 10;
    6. int arr[N];
    7. long long s[N];
    8. int main()
    9. {
    10. cin >> n >> k;
    11. for (int i = 1;i <= n;i++)
    12. {
    13. cin >> arr[i];
    14. s[i] = s[i - 1] + arr[i];
    15. }
    16. long long ans = 0;
    17. for (int i = 1;i <= n;i++)
    18. {
    19. for (int j = i;j <= n;j++)
    20. {
    21. if ((s[j] - s[i - 1]) % k == 0)
    22. {
    23. ans++;
    24. }
    25. }
    26. }
    27. cout << ans << endl;
    28. return 0;
    29. }

     

    1. #include
    2. using namespace std;
    3. int n;
    4. int k;
    5. int const N = 1e5 + 10;
    6. int arr[N];
    7. long long s[N];
    8. int x[N];
    9. int main()
    10. {
    11. cin >> n >> k;
    12. for (int i = 1;i <= n;i++)
    13. {
    14. cin >> arr[i];
    15. s[i] = s[i - 1] + arr[i];
    16. }
    17. long long ans = 0;
    18. for (int i = 0;i <= n;i++)
    19. {
    20. ans += x[s[i] % k];
    21. x[s[i] % k]++;
    22. }
    23. cout << ans << endl;
    24. return 0;
    25. }

    1. #include
    2. using namespace std;
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. bool use[4];
    9. int arr[4];
    10. int s[4];
    11. bool dp[2200][40][40];
    12. void p(int x)
    13. {
    14. if (x < 10)
    15. {
    16. cout << 0 << x;
    17. }
    18. else
    19. {
    20. cout << x;
    21. }
    22. return;
    23. }
    24. bool run(int x)
    25. {
    26. if (x % 100 == 0)
    27. {
    28. if (x % 400 == 0)
    29. {
    30. return true;
    31. }
    32. else
    33. {
    34. return false;
    35. }
    36. }
    37. else
    38. {
    39. if (x % 4 == 0)
    40. {
    41. return true;
    42. }
    43. else
    44. {
    45. return false;
    46. }
    47. }
    48. }
    49. void f(int num1,int num2,int num3)
    50. {
    51. //月
    52. if (num2 > 12 || num2 < 1)
    53. {
    54. return;
    55. }
    56. //日
    57. {
    58. if (num2 == 1 || num2 == 3 || num2 == 5 || num2 == 7 || num2 == 8 || num2 == 10 || num2 == 12)
    59. {
    60. if (num3 <= 31)
    61. {
    62. cout << num1 << "-";
    63. p(num2);
    64. cout << "-";
    65. p(num3);
    66. cout<< endl;
    67. return;
    68. }
    69. else
    70. {
    71. return;
    72. }
    73. }
    74. else if (num2 == 2)
    75. {
    76. if (run(num1))
    77. {
    78. if (num3 <= 29)
    79. {
    80. cout << num1 << "-";
    81. p(num2);
    82. cout << "-";
    83. p(num3);
    84. cout << endl;
    85. return;
    86. }
    87. else
    88. {
    89. return;
    90. }
    91. }
    92. else
    93. {
    94. if(num3<=28)
    95. {
    96. cout << num1 << "-";
    97. p(num2);
    98. cout << "-";
    99. p(num3);
    100. cout << endl;
    101. return;
    102. }
    103. else
    104. {
    105. return;
    106. }
    107. }
    108. }
    109. else
    110. {
    111. if (num3 <= 30)
    112. {
    113. cout << num1 << "-";
    114. p(num2);
    115. cout << "-";
    116. p(num3);
    117. cout << endl;
    118. return;
    119. }
    120. else
    121. {
    122. return;
    123. }
    124. }
    125. }
    126. }
    127. //void dfs(int u)
    128. //{
    129. // if (u == 4)
    130. // {
    131. // f();
    132. // return;
    133. // }
    134. // for (int i = 1;i <= 3;i++)
    135. // {
    136. // if (use[i])
    137. // {
    138. // s[u] = arr[i];
    139. // use[i] = false;
    140. // dfs(u+1);
    141. // use[i] = true;
    142. // }
    143. // }
    144. //}
    145. int fx(int num1)
    146. {
    147. if (num1 >= 60)
    148. {
    149. num1 = num1 + 1900;
    150. }
    151. else
    152. {
    153. num1 += 2000;
    154. }
    155. return num1;
    156. }
    157. int main()
    158. {
    159. memset(use, 1, sizeof(use));
    160. string str;
    161. cin >> str;
    162. /*arr[1] = int(str[0] - 48) + int(str[1] - 48);
    163. arr[2] = int(str[3] - 48) + int(str[4] - 48);
    164. arr[3] = int(str[6] - 48) + int(str[7] - 48);*/
    165. //dfs(1);
    166. int num1, num2, num3;
    167. num1 = int(str[0] - 48) + int(str[1] - 48);
    168. num2 = int(str[3] - 48) + int(str[4] - 48);
    169. num3 = int(str[6] - 48) + int(str[7] - 48);
    170. dp[fx(num1)][num2][num3] = 1;
    171. dp[fx(num3)][num1][num2] = 1;
    172. dp[fx(num3)][num2][num1] = 1;
    173. for (int i = 1960;i <= 2059;i++)
    174. {
    175. for (int j = 1;j <=12;j++)
    176. {
    177. for (int z = 1;z <= 31;z++)
    178. {
    179. if (dp[i][j][z])
    180. {
    181. f(i, j, z);
    182. }
    183. }
    184. }
    185. }
    186. return 0;
    187. }

     

    1. #include
    2. using namespace std;
    3. int const N = 1e3 + 10;
    4. int m, n;
    5. int k;
    6. int fa[N * N];
    7. int res[N * N];
    8. int find(int x)
    9. {
    10. if (fa[x] != x)
    11. {
    12. fa[x] = find(fa[x]);
    13. }
    14. return fa[x];
    15. }
    16. void unity(int x, int y)
    17. {
    18. int f1 = find(x);
    19. int f2 = find(y);
    20. fa[f1] = f2;
    21. }
    22. int main()
    23. {
    24. cin >> m>> n;
    25. cin >> k;
    26. for (int i = 1;i <= m;i++)
    27. {
    28. for (int j = 1;j <= n;j++)
    29. {
    30. fa[(i - 1) * n + j] = (i - 1) * n + j;
    31. //cout << (i - 1) * n + j << " ";
    32. }
    33. // << endl;
    34. }
    35. for (int i = 1;i <= k;i++)
    36. {
    37. int num1;
    38. int num2;
    39. cin >> num1 >> num2;
    40. int x = find(num1);
    41. int y = find(num2);
    42. unity(x, y);
    43. }
    44. int ans = 0;
    45. //验证
    46. for (int i = 1;i <= m;i++)
    47. {
    48. for (int j = 1;j <= n;j++)
    49. {
    50. res[find((i - 1) * n + j)]++;
    51. //cout << find((i - 1) * n + j) << " ";
    52. }
    53. //cout << endl;
    54. }
    55. for (int i = 1;i <= n * m;i++)
    56. {
    57. if (res[i] >= 1)ans++;
    58. }
    59. cout << ans << endl;
    60. return 0;
    61. }

     

    1. #include
    2. using namespace std;
    3. int const N = 1e3 + 10;
    4. char arr[N][N];
    5. char cop[N][N];
    6. int n;
    7. int dx[] = { 1,-1,0,0 };
    8. int dy[] = { 0,0,1,-1 };
    9. void yuan(int x, int y)
    10. {
    11. cop[x][y] = '.';
    12. for (int i = 0;i < 4;i++)
    13. {
    14. int r1 = x + dx[i];
    15. int r2 = y + dy[i];
    16. if (r1 > 0 && r1 <= n && r2 > 0 && r2 <= n&&cop[r1][r2]=='#')
    17. {
    18. yuan(r1, r2);
    19. }
    20. }
    21. }
    22. void hou(int x,int y)
    23. {
    24. arr[x][y] = '.';
    25. for (int i = 0;i < 4;i++)
    26. {
    27. int r1 = x + dx[i];
    28. int r2 = y + dy[i];
    29. if (r1 > 0 && r1 <= n && r2 > 0 && r2 <= n && arr[r1][r2] == '#')
    30. {
    31. hou(r1, r2);
    32. }
    33. }
    34. }
    35. int main()
    36. {
    37. cin >> n;
    38. for (int i = 1;i <= n;i++)
    39. {
    40. for (int j = 1;j <= n;j++)
    41. {
    42. cin >> arr[i][j];
    43. cop[i][j] = arr[i][j];
    44. }
    45. }
    46. int ans = 0;
    47. for (int i = 1;i <= n;i++)
    48. {
    49. for (int j = 1;j <= n;j++)
    50. {
    51. if (cop[i][j] == '#')
    52. {
    53. ans++;
    54. yuan(i, j);
    55. }
    56. }
    57. }
    58. int anss = 0;
    59. for (int i = 1;i <= n;i++)
    60. {
    61. for (int j = 1;j <= n;j++)
    62. {
    63. if (arr[i][j] == '#')
    64. {
    65. int flag = 1;
    66. for (int z = 0;z < 4;z++)
    67. {
    68. int r1 = i + dx[z];
    69. int r2 = j + dy[z];
    70. if (r1 > 0 && r1 <= n && r2 > 0 && r2 <= n && arr[r1][r2] == '.')
    71. {
    72. flag = 0;
    73. }
    74. }
    75. if (flag == 1)
    76. {
    77. anss++;
    78. hou(i, j);
    79. }
    80. }
    81. }
    82. }
    83. cout << ans-anss << endl;
    84. return 0;
    85. }

     

     

     

  • 相关阅读:
    字节跳动面试——算法
    Python代码自动转成其他编程语言代码
    dreamweaver家乡主题网页设计 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业
    LeetCode·106.从中序与后序遍历序列构造二叉树·递归
    CSDN积分获取攻略:快速积累积分的小技巧
    【献给过去的自己】栈实现计算器(C语言)
    【接口测试】HTTP协议
    SpringMVC:从入门到精通,7篇系列篇带你全面掌握--三.使用SpringMVC完成增删改查
    如何实现Debian工控电脑USB接口安全管控
    代理对象上的注解获取失败总结
  • 原文地址:https://blog.csdn.net/weixin_72770922/article/details/136425017