A - Cut

  • 题意:

    将数组的后k个字符移到前面
  • 思路:
    1. 可以用rotate()函数让数组中的元素滚动旋转
      rotate(v.begin(), v.begin() + n - k, v.end());
    2. 直接输出后k个元素,再输出前n-k个元素
      for(int i=n-k;i<n;i++) write(v[i]);
      for(int i=0;i<n-k;i++) write(v[i]);

B - Decrease 2 max elements

  • 题意:

    每次令数组中最大的两个数-1,求多少次操作后只剩下一个数
  • 思路:

    注意到 2≤N≤1001<=A[i]<=100

    两眼一闭就是写,直接就上priority_queue,不带半点智慧和思考,题干怎么说就怎么写,怎么简单怎么来
    void solve()
    {
    priority_queue<int> q;
    int n = read();
    for(int i=0;i<n;i++) q.push(read()); int cnt = 0;
    while(q.size()>1){
    int t1 = q.top();
    q.pop();
    int t2 = 1;
    if(q.size()) t2 = q.top();
    q.pop();
    if(t1 - 1) q.push(t1-1);
    if(t2 - 1) q.push(t2-1);
    cnt++;
    }
    cout<<cnt<<endl;
    }

C - Triple Attack

  • 题意:

    从前往后遍历数组A, 每次操作 T+=1, T%3!=0 的时候 A[i]-=1, T%3==0 的时候 A[i]-=3;
  • 思路:

    每轮 T += 3, A[i] -= 5 , 所以当 T%3==0 的时候直接将 A[i] 减到5以下,再逐次操作

    code:
      int n = read();
    vector<int> v;
    for(int i = 0; i < n; i++) v.push_back(read()); int t = 1;
    for(int i=0; i < n; i++){
    while(v[i]>0){
    if(t%3==0 && v[i]>0) v[i]-=3,t++;
    else if(t%3!=0 && v[i]>0) v[i]-=1,t++;
    if(t%3==0 && t>=3 && v[i]>=5) t+=v[i]/5*3,v[i]%=5;
    }
    } cout<<t-1<<endl;

D - Minimum Steiner Tree

  • 题意:

    给一个树,再给一些关键节点,求如果要保留这些关键节点则至少应该保留哪些节点
  • 思路:

    显然给出的关键节点必须保留,考虑到是树可以用dfs,而因为关键节点必须保留所以可以任意选一个关键节点当作根

    从根往深处搜索,如果该节点为关键节点则该节点必然需要保留,标记此节点;

    如果该节点往下的任一 一节点为关键节点,该节点同样不可或缺,标记节点;

    可以根据dfs的返回值知道该节点往下的分支是否包含关键节点。
    int n, k;
    vector<vector<int>> e;
    unordered_map<int,int> mp,st,vis;
    int dfs(int x){
    int ret = 0;
    vis[x] = 1; //记忆化搜索,搜过的就不再搜了
    for(auto it:e[x]){
    if(!vis[it]){
    ret |= dfs(it); //按位或,如果返回值有1则ret为1
    }
    }
    if(mp[x]) ret = 1;
    if(ret) st[x] = 1;
    return ret;
    }
    void solve()
    {
    n = read(), k = read();
    e.resize(n+1);
    for(int i=1;i<n;i++){
    int u = read(), v = read();
    e[u].push_back(v);
    e[v].push_back(u);
    }
    int ed = 0;
    for(int i=0;i<k;i++){
    ed = read();
    mp[ed] = 1; //记录该节点为关键节点
    } dfs(ed);
    int ans = 0;
    for(auto it:st){
    if(it.se) ans++;
    }
    cout<<ans<<endl;
    }

Hitachi Vantara Programming Contest 2024(AtCoder Beginner Contest 368)题解A~D的更多相关文章

  1. M-SOLUTIONS Programming Contest 2021(AtCoder Beginner Contest 232) 题解

    目录 G - Modulo Shortest Path H - King's Tour 因为偷懒就只写G和H的题解了. G - Modulo Shortest Path 首先可以观察到对于一条从点\( ...

  2. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  3. atcoder beginner contest 251(D-E)

    Tasks - Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)\ D - At Most 3 (Contestant ...

  4. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  5. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  6. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  7. AtCoder Beginner Contest 255(E-F)

    Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...

  8. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  9. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  10. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

随机推荐

  1. mybatis - [07] 模糊查询

    题记部分 (1)mapper类 List<User> getUserLike(String value); (2)mapper.xml <!-- 写法1 --> <sel ...

  2. 大数据之路Week10_day05 (JavaAPI 操作Redis 第一阶段)

    刚开始学习JavaAPI的时候,主要是对redis中的字符串,字节位图,列表,集合,有序集合进行操作,并能够完成简单的需求. package com.wyh.redis; import org.jun ...

  3. sql 周岁计算

    select  FLOOR(DATEDIFF(DY, substring(身份证字段,7,4), GETDATE()) / 365.25)  age  from [表名]

  4. script 标签中 defer 和 async 的区别

    https://www.cnblogs.com/huangtq/p/18422775 在 <script> 标签中,defer 和 async 是两个用于控制 JavaScript 脚本加 ...

  5. 【数值计算方法】蒙特卡洛方法积分的Python实现

    原理不做赘述,参见[数值计算方法]数值积分&微分-python实现 - FE-有限元鹰 - 博客园,直接上代码,只实现1d,2d积分,N维积分的蒙特卡洛方法也类似. 代码 from typin ...

  6. Win系统重装备忘

    蒙德,致态的盘坏块激增,似乎损坏到了系统文件:屏幕截屏会卡,关机后直接该块硬盘内的文件内容回滚,出现驱动报错要求重启... 然后尝试了DiskGenuis迁移系统,PE模式不能用,热迁移后似乎正常分区 ...

  7. glib-2.60在win64,msys2下编译

    前阵子,工作原因,需要在win7 64下的msys2来编译glib,下面是一些踩过的坑: 事先声明一下,这些个解决方式及纯粹是为了编译通过,可能有些做法不太适合一些需要正常使用的场合,烦请各位注意下. ...

  8. 部署sing-box代理服务器绕过付费校园网上网

    解决的问题 学校一般会有2个网络,一个是教学区的免费校园网,一个是寝室楼的付费校园网.如何不交钱也能在寝室楼上网是一个问题. 以及,如果校园网在12点之后断网,如果解决断网问题 sing-box Gi ...

  9. 【前端动画】—— 再看tweenJS

    16开始接触前端,一直对一个问题特别感兴趣,那就是js动画,也就是从那时起开始探究动画的各种表现形式,也是那个时候开始意识到编程这块东西最终考验的就是抽象和逻辑,而这一切完全是数学里边的东西. 最早接 ...

  10. mac 源码编译安装php8.3.9

    前提条件 确保你已经安装了 Homebrew 和 Xcode Command Line Tools.你可以通过以下命令安装它们: /bin/zsh -c "$(curl -fsSL http ...