• Codeforces Round #811 (Div. 3)A.B.C.E


    A. Everyone Loves to Sleep

    题目链接:

    Problem - A - Codeforces

    题面:

    题意:

    一个人设了n个闹钟,然后他在h:m的时候睡下去,闹钟响起来的时候起床,问能睡多久

    思路:

    我们可以把闹钟按时间从小到大排序,然后在第一个大于睡下去的闹钟响起的时候来计算差值,如果没有这个闹钟就用第一个闹钟+1440来计算差值

    代码:

    1. #include
    2. using namespace std;
    3. int arr[15];
    4. int main(){
    5. int t;
    6. cin >> t;
    7. while(t--){
    8. int n, h, m;
    9. int a;
    10. cin >> n >> h >> m;
    11. a = h * 60 + m;
    12. for(int i = 0; i < n; i++){
    13. cin >> h >> m;
    14. arr[i] = h * 60 + m;
    15. }
    16. sort(arr, arr + n);
    17. bool f = 0;
    18. for(int i = 0; i < n; i++){
    19. if(arr[i] >= a){
    20. cout << (arr[i] - a) / 60 << " ";
    21. cout << (arr[i] - a) % 60 << endl;
    22. f = 1;
    23. break;
    24. }
    25. }
    26. if(!f){
    27. cout << (arr[0] + 1440 - a) / 60 << " " << (arr[0] + 1440 - a) % 60 << endl;
    28. }
    29. }
    30. return 0;
    31. }

    B. Remove Prefix

    题目链接:

    Problem - B - Codeforces

    题面:

    题意:

    有n个数,你可以多次删除第一个数,问能否使删除后的数组中每个数只出现一次,求删除的数的数量

    思路:

    我们可以从后往前遍历,然后记录每个数字是否出现过,如果这个数已经出现过,那么这个数及前面的数都要删除

    代码:

    1. #include
    2. using namespace std;
    3. int arr[200005];
    4. bool vis[200005];
    5. int main(){
    6. int t;
    7. cin >> t;
    8. while(t--){
    9. int n;
    10. cin >> n;
    11. for(int i = 1; i <= n; i++){
    12. cin >> arr[i];
    13. vis[i]= 0;
    14. }
    15. bool f = 0;
    16. for(int i = n; i >= 1; i--){
    17. if(vis[arr[i]]){
    18. f = 1;
    19. cout << i << endl;
    20. break;
    21. }
    22. vis[arr[i]] = 1;
    23. }
    24. if(!f){
    25. cout << 0 << endl;
    26. }
    27. }
    28. return 0;
    29. }

    C. Minimum Varied Number

    题目链接:

    Problem - C - Codeforces

    题面:

    题意:

    有一个数n,求拆成字典序最小的多个数之和,每个数只能出现一次

    思路:

    如果这个数小于10,那么就是本身,否则我们就按9.8.7的顺序依次递减,直到剪不了了为止

    代码:

    1. #include
    2. using namespace std;
    3. int main(){
    4. int t;
    5. cin >> t;
    6. while(t--){
    7. int n;
    8. cin >> n;
    9. if(n < 10){
    10. cout << n << endl;
    11. }else{
    12. int a = 9;
    13. string s = "";
    14. while(n >= a && n && a){
    15. s = char(a + '0') + s;
    16. n -= a;
    17. a--;
    18. }
    19. if(n){
    20. s = char(n + '0') + s;
    21. }
    22. cout << s << endl;
    23. }
    24. }
    25. return 0;
    26. }

    E. Add Modulo 10

    题目链接:

    Problem - E - Codeforces

    题面:

    题意:

    有n个数,每个数可以多次累加取模10后的值,问能否使所有数都相同

    思路:

    0 0 0 0 0 0

    1 2 4 8 6 2

    2 4 8 6 2 4

    3 6 2 4 8 6

    4 8 6 2 4 8

    5 0 0 0 0 0

    6 2 4 8 6 2

    7 4 8 6 2 4

    8 6 2 4 8 6

    9 8 6 2 4 8

    这是每个个数数多次累加的结果

    可以得出0,5可互相转换,其他可以互相转换,而且2转换到下一个2会加20

    所以这些不能既含0,5,也含其他

    如果只含0,5,就全转换为个位为0,判断是否相同

    如果只含其他就转换为个位为2,看十位以上的奇偶性是否相同

    代码:

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

  • 相关阅读:
    SpringMvc--CRUD
    【力扣刷题】无重复字符的最长子串
    ch7视觉里程计
    小目标检测的相关挑战与问题
    CentOS 安装etcd集群 —— 筑梦之路
    (九)类特殊成员(属性和方法)
    ESP8266-Arduino网络编程实例-ESP-Now点对点双向通信(Two Way)
    MyBatis中如何动态拼接Sql字符串呢?
    C++项目案例圆和点的关系 (涉及知识点:头文件定义类,cpp文件实现类,类和作用域,linux编译运行c++项目)
    网络安全(黑客)自学
  • 原文地址:https://blog.csdn.net/m0_55682843/article/details/126787004