• Educational Codeforces Round 154 (Rated for Div. 2)A~C


    A. Prime Deletion

    题意:给定一个包含1到9的字符串,要求删除最多7个字符,是否可以表示为一个质数。

    思路暴力枚举所有的两位数即可。

    AC代码

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #define int long long
    10. using namespace std;
    11. const int N = 100010;
    12. typedef pair<int, int> pll;
    13. int prime[N], cnt;
    14. bool st[N];
    15. int get_prime(int n)
    16. {
    17. for (int i = 2; i <= n; i++)
    18. {
    19. if (!st[i])prime[cnt++] = i;
    20. for (int j = 0; prime[j] <= n / i; j++)
    21. {
    22. st[prime[j] * i] = true;
    23. if (i % prime[j] == 0)break;
    24. }
    25. }
    26. return cnt;
    27. }
    28. void solve()
    29. {
    30. string arr;
    31. cin >> arr;
    32. for(int i = 0; i < arr.size(); i++)
    33. for (int j = i + 1; j < arr.size(); j++)
    34. {
    35. int num = (arr[i] - '0') * 10 + arr[j] - '0';
    36. if (!st[num])
    37. {
    38. cout << num << endl;
    39. return;
    40. }
    41. }
    42. }
    43. signed main()
    44. {
    45. int t;
    46. cin >> t;
    47. get_prime(100);
    48. //t = 1;
    49. while (t--)
    50. {
    51. solve();
    52. }
    53. }

    B. Two Binary Strings

    题意:给定两个0开头,1结尾,只包含01的字符串,可以对两个字符串进行任意次如下操作:选定两个相同的字符,将两者之间的所有字符都变为这个字符。问是否可以使两个字符串相同。

    思路:如果能找到一个位置使得在这个位置上,两个字符串都为1,且左边为0,那么就可以做到。

    AC代码

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #define int long long
    10. using namespace std;
    11. const int N = 100010;
    12. typedef pair<int, int> pll;
    13. int prime[N], cnt;
    14. bool st[N];
    15. void solve()
    16. {
    17. string a, b;
    18. cin >> a >> b;
    19. for (int i = 1; i < a.size(); i++)
    20. {
    21. if (a[i] == b[i] && a[i] == '1' && (a[i - 1] == b[i - 1] && a[i - 1] == '0'))
    22. {
    23. cout << "YES" << endl;
    24. return;
    25. }
    26. }
    27. cout << "NO" << endl;
    28. }
    29. signed main()
    30. {
    31. int t;
    32. cin >> t;
    33. //get_prime(100);
    34. //t = 1;
    35. while (t--)
    36. {
    37. solve();
    38. }
    39. }

    C. Queries for the Array

    题意:给定一个字符串,”+“代表向空数组中加入一个数,”-“代表删除空数组最后一个数,”1“表示查询数组此时为一个非递减序列(有序),”0“表示数组此时不为一个非递减序列(无序)。问给出的字符串是否合法。

    思路:记录三种状态,总长度n,初始为0;最小min_s,初始为1;最小无序长度min_ns,初始为0;一共四种情况:

    a[i] == "+":只会影响len,len++,min_s和min_ns都不会变化。

    a[i] == "-":首先len要减一,如果min_s >= len的话,min_s需要更新,min_s = min(min_s, len);如果min_ns此时大于len的话,在len的范围里无法判断是否无序,则min_ns = 0。

    a[i] == "1":如果此时min_ns != 0,说明序列此时一定不是有序,输出NO;如果min_ns == 0,则更新min_s,min_s = len。

    a[i] == "0":如果此时len < 2或min_s == len,则序列一定有序,输出NO;否则可能成立,更新min_ns,如果min_ns此时为0,则min_ns = len,否则min_ns = min(min_ns, len)。

    AC代码

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #define int long long
    10. using namespace std;
    11. typedef pair<int, int> pll;
    12. void solve()
    13. {
    14. string arr;
    15. cin >> arr;
    16. int len = 0, min_s = 1, min_ns = 0;
    17. for (int i = 0; i <= arr.size(); i++)
    18. {
    19. len += (arr[i] == '+');
    20. if (arr[i] == '-')
    21. {
    22. len--;
    23. min_s = min(min_s, len);
    24. if (min_ns > len)min_ns = 0;
    25. }
    26. else if (arr[i] == '1')
    27. {
    28. if (min_ns != 0)
    29. {
    30. cout << "NO" << endl;
    31. return;
    32. }
    33. min_s = len;
    34. }
    35. else if (arr[i] == '0')
    36. {
    37. if (len < 2 || min_s == len)
    38. {
    39. cout << "NO" << endl;
    40. return;
    41. }
    42. if (min_ns == 0)
    43. {
    44. min_ns = len;
    45. }
    46. else min_ns = min(min_ns, len);
    47. }
    48. }
    49. cout << "YES" << endl;
    50. }
    51. signed main()
    52. {
    53. int t;
    54. cin >> t;
    55. //get_prime(100);
    56. //t = 1;
    57. while (t--)
    58. {
    59. solve();
    60. }
    61. }

     

     

  • 相关阅读:
    【Hack The Box】linux练习-- time
    目标检测-SSD算法从零实现
    Springboot 使用装饰器模式,快看,它装起来了
    LeetCode——动态规划篇(六)
    【Leetcode】【每日一题】【简单】2609. 最长平衡子字符串
    StarRocks 支持 Apache Hudi 原理解
    【Mysql实现递归树查询】
    Python 语言如日中天,详细介绍 Python 语言的发展历程和特点
    ssm+vue的疫情高校师生外出请假管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
    持久层框架设计实现及MyBatis源码分析 ---- MyBatis基础回顾及高级应用
  • 原文地址:https://blog.csdn.net/IH_LZH/article/details/132629716