当前位置:   article > 正文

寒假2 蓝桥杯-二分

寒假2 蓝桥杯-二分

  1. #include<iostream>
  2. using namespace std;
  3. #include<algorithm>
  4. int n;
  5. int arr[100010];
  6. int f_left(int q)
  7. {
  8. int a = -1;
  9. int left = 1, right = n;
  10. int mid;
  11. while (left < right)
  12. {
  13. mid = (left + right) / 2;
  14. if (arr[mid] == q)
  15. {
  16. right = mid - 1;
  17. //cout << "1";
  18. }
  19. else if (arr[mid] < q)
  20. {
  21. left = mid+1;
  22. //cout << "2";
  23. }
  24. else
  25. {
  26. right = mid - 1;
  27. //cout << "3";
  28. }
  29. }
  30. return left;
  31. }
  32. int f_right(int q)
  33. {
  34. int a = -1;
  35. int left = 1, right = n;
  36. int mid;
  37. while (left < right)
  38. {
  39. mid = (left + right) / 2;
  40. if (arr[mid] == q)
  41. {
  42. left = mid + 1;
  43. //cout << "4";
  44. }
  45. else if (arr[mid] > q)
  46. {
  47. right = mid - 1;
  48. //cout << "5";
  49. }
  50. else
  51. {
  52. left = mid + 1;
  53. //cout << "6";
  54. }
  55. }
  56. return right;
  57. }
  58. int main()
  59. {
  60. int q;
  61. cin >> n >> q;
  62. for (int i = 1;i <= n;i++)
  63. {
  64. cin >> arr[i];
  65. }
  66. int left = f_left(q);
  67. int right = f_right(q);
  68. if (left ==-1&&right==-1)
  69. {
  70. cout << "-1 -1" << endl;
  71. }
  72. else
  73. {
  74. cout << left << " " << right << endl;
  75. cout << right - left << endl;
  76. }
  77. return 0;
  78. }

 

 

 

  1. #include<iostream>
  2. using namespace std;
  3. int n;
  4. int arr[60];
  5. void f(int q)
  6. {
  7. int left = 1;
  8. int right = n;
  9. int mid;
  10. int ans;
  11. while (left < right)
  12. {
  13. mid = (left + right) / 2;
  14. if (arr[mid] < q)
  15. {
  16. if (arr[mid + 1] > q)
  17. {
  18. cout << mid+1 << endl;
  19. return;
  20. }
  21. left = mid + 1;
  22. }
  23. else
  24. {
  25. if (arr[mid - 1] < q)
  26. {
  27. cout << mid << endl;
  28. return;
  29. }
  30. right = mid - 1;
  31. }
  32. }
  33. }
  34. int main()
  35. {
  36. cin >> n;
  37. for (int i = 1;i <= n;i++)
  38. {
  39. cin >> arr[i];
  40. }
  41. int q;
  42. cin >> q;
  43. if (q < arr[1])
  44. {
  45. cout << 1 << endl;
  46. }
  47. else if (q > arr[n])
  48. {
  49. cout << n + 1 << endl;
  50. }
  51. else
  52. {
  53. f(q);
  54. }
  55. return 0;
  56. }

 

  1. #include<iostream>
  2. using namespace std;
  3. #include<algorithm>
  4. int n, k;
  5. int arr[100010];
  6. int main()
  7. {
  8. cin >> n >> k;
  9. for (int i = 1;i <= n;i++)
  10. {
  11. cin >> arr[i];
  12. }
  13. int left = 1;
  14. int right = 100000000;
  15. int mid;
  16. int ans = 0;
  17. while (left <= right)
  18. {
  19. int res = 0;
  20. mid = (left + right) / 2;
  21. for (int i = 1;i <= n;i++)
  22. {
  23. res += (arr[i] / mid);
  24. if (res > k)break;
  25. }
  26. if (res == k)
  27. {
  28. if (mid > ans)ans = mid;
  29. left = mid + 1;
  30. }
  31. else if (res > k)
  32. {
  33. if (mid > ans)ans = mid;
  34. left = mid + 1;
  35. }
  36. else
  37. {
  38. right = mid - 1;
  39. }
  40. }
  41. cout << ans << endl;
  42. return 0;
  43. }

 

  1. #include<iostream>
  2. using namespace std;
  3. int arr[27];
  4. int main()
  5. {
  6. int n;
  7. cin >> n;
  8. char ch;
  9. for (int i = 0;i < n;i++)
  10. {
  11. cin >> ch;
  12. if (int(ch) >= 65 && int(ch) <= 90)
  13. {
  14. arr[int(ch) - 64] = 1;
  15. }
  16. else
  17. {
  18. arr[int(ch) - 96] = 1;
  19. }
  20. }
  21. for (int i = 1;i <= 26;i++)
  22. {
  23. if (arr[i] != 1)
  24. {
  25. cout << "NO" << endl;
  26. return 0;
  27. }
  28. }
  29. cout << "YES" << endl;
  30. return 0;
  31. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48188
推荐阅读
相关标签
  

闽ICP备14008679号