CDZSC_2022寒假个人训练赛21级(1)

2023-11-13

A

题意:略

题解:将n个数加起来的总和除以n即可。

#include<bits/stdc++.h>

using namespace std;

signed main(){
    int n;
    scanf("%d", &n);
    int sum = 0;
    for(int i = 1; i <= n; i++){
        int x;
        scanf("%d", &x);
        sum += x;
    }
    printf("%.10f\n", sum * 1.0 / n);
    return 0;
}

B

题意:略

题解:由于要求的是最小值,所以优先使用大面额的金钱。

#include<bits/stdc++.h>

using namespace std;
int a[] = {100, 20, 10, 5, 1};

signed main(){
    int n;
    scanf("%d", &n);
    int ans = 0;
    for(int i = 0; i < 5; i++){
        ans += n / a[i];
        n %= a[i];
    }
    printf("%d\n", ans);
    return 0;
}

C

题意:略

知识点:STL的应用

题解:将字符串与自己拼接,相当于长度乘2;例如:abcd -> abcdabcd
之后取出每一个长度为len(原本字符串的长度)的字串,用map记录即可。

#include<bits/stdc++.h>

using namespace std;
map<string, int> mp;

signed main(){
    string s;
    cin >> s;
    int len = s.length();
    s += s;
    int ans = 0;
    for(int i = 0; i < len; i++){
        string t = s.substr(i, len);
        if(mp[t] == 0) ans++;
        mp[t]++;
    }
    printf("%d\n", ans);
    return 0;
}

D

题意:略

题解:由于6 = 2 * 3,所以做一次乘2除6的操作相当于除以3,所以操作变成了用一步操作将n除以6或者两步操作将n除以3,如果n不能通过这两种操作变成1则无解。

#include<bits/stdc++.h>

using namespace std;

void solve(){
    int n;
    scanf("%d", &n);
    int ans = 0;
    while(true){
        if(n % 6 == 0){
            n /= 6;
            ans++;
        }
        else if(n % 3 == 0){
            n /= 3;
            ans += 2;
        }
        else{
            break;
        }
    }
    if(n == 1) printf("%d\n", ans);
    else printf("-1\n");
}

signed main(){
    int T;
    scanf("%d", &T);
    while(T--) solve();
    return 0;
}

E

题意:略

题解:每次选出最小的数去减,相当于将数组排好序之后依次减去每一个数,而且如果一个数出现多次的话也只会减去一次。对于每一个a[i]而言,数组减去的是它与前一个的差值,即a[i] - a[i - 1]

#include<bits/stdc++.h>

using namespace std;
const int N = 1e5 + 10;
int a[N];

signed main(){
    int n, k;
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    sort(a + 1, a + 1 + n);
    n = unique(a + 1, a + 1 + n) - a - 1;
    for(int i = 1; i <= k; i++){
        if(i <= n) printf("%d\n", a[i] - a[i - 1]);
        else printf("0\n");
    }
    return 0;
}

F

题意:略

题解:如果n个数之和不为0,那么将这n个数分为一段即可。如果n个数之和为0,那么找到最后一个不为0的数(下标为pos),将(1,pos - 1)分成一段,(pos, n)分成一段即可。

#include<bits/stdc++.h>

using namespace std;
const int N = 110;
int a[N];

signed main(){
    int n;
    scanf("%d", &n);
    int sum = 0;
    for(int i = 1; i <= n; i++){
        scanf("%d", &a[i]);
        sum += a[i];
    }
    if(sum){
        printf("YES\n");
        printf("1\n");
        printf("1 %d\n", n);
    }
    else{
        int pos = -1;
        for(int i = 1; i <= n; i++)
            if(a[i]) pos = i;
        if(pos == -1) printf("NO\n");
        else{
            printf("YES\n");
            printf("2\n");
            printf("1 %d\n", pos - 1);
            printf("%d %d\n", pos, n);
        }
    }
    return 0;
}

G

题意:略

题解:由于数组最终形成一个等差数列,我们可以枚举a[1]的值即可知道整个数组的值,用得到的数组与原来的数组相比较,记录不同的数有多少个,答案取最优解即可。

#include<bits/stdc++.h>

using namespace std;
const int N = 1010;
int a[N], b[N], t[N];

signed main(){
    int n, k;
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    int ans = n;
    for(int i = 1; i <= 1000; i++){
        b[1] = i;
        int cnt = 0;
        for(int j = 1; j <= n; j++){
            b[j] = b[1] + (j - 1) * k;
            if(b[j] != a[j]) cnt++;
        }
        if(cnt < ans){
            memcpy(t, b, sizeof(b));
            ans = cnt;
        }
    }
    printf("%d\n", ans);
    for(int i = 1; i <= n; i++){
        if(t[i] > a[i]) printf("+ %d %d\n", i, t[i] - a[i]);
        else if(t[i] < a[i]) printf("- %d %d\n", i, a[i] - t[i]);
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CDZSC_2022寒假个人训练赛21级(1) 的相关文章

  • 01背包(c++版)

    dp i j 表示从下标为 0 i 的物品里任意取 放进容量为j的背包 价值总和最大是多少 void test 2 wei bag problem1 vector
  • 【LeetCode75】第五十九题 第N个泰波那契数

    目录 题目 示例 分析 代码 题目 示例 分析 题目顾名思义 让我们求出第N个泰波那契数 也就是除了开头三个数之外 第四个数开始就是等于前三个数之和 不要和斐波那契数弄混了 斐波那契是前两个数的和 泰波那契是前三个数的和 也就是说当前数 我
  • 797. 所有可能的路径

    class Solution public vector
  • 模拟实现 队列 - JAVA(使用链表,数组)

    以链表实现 以数组实现 以链表实现 class Node public int val public Node next public Node int val this val val public class MyQueue publi
  • 关于uthash 的初步源码阅读

    背景 在偶然的mqtt mosquitto 中的源码中查看的关于topic的处理 知道了哈希表这种的数据结构 最近花了一点时间将这个部分的源码看了一部分 不知道后面还有没有时间继续查看所以就写一篇文档作为笔记吧 uthash 使用 utha
  • 华为OD机试真题- 日志首次上报最多积分【2023Q1】

    题目描述 日志采集是运维系统的的核心组件 日志是按行生成 每行记做一条 由采集系统分批上报 如果上报太频繁 会对服务端造成压力 如果上报太晚 会降低用户的体验 如果一次上报的条数太多 会导致超时失败 为此 项目组设计了如下的上报策略 1 每
  • LeetCode题目笔记——24. 两两交换链表中的节点

    文章目录 题目描述 题目链接 题目难度 中等 方法一 迭代 代码 C 代码 python 方法二 递归 代码 C 总结 题目描述 或许这也是个经典的面试题 记录一手 给你一个链表 两两交换其中相邻的节点 并返回交换后链表的头节点 你必须在不
  • 第14届蓝桥杯C++B组省赛

    文章目录 A 日期统计 B 01 串的熵 C 冶炼金属 D 飞机降落 E 接龙数列 F 岛屿个数 G 子串简写 H 整数删除 I 景区导游 J 砍树 今年比去年难好多 Update 2023 4 10 反转了 炼金二分没写错 可以AC了 U
  • 背包九讲-01背包

    动态规划核心思维能力 动态规划是求最优解问题的重要解法 也是信息学奥赛中每年必考的内容之一 学习动态规划更应该注重此类问题思维能力的锻炼 多多做题 一般 gt 50题后方可入门 注意理解以下概念 1 状态 2 状态属性 3 状态的计算 也就
  • Python之动态规划

    序言 最近在学习python语言 语言有通用性 此文记录复习动态规划并练习python语言 动态规划 Dynamic Programming 动态规划是运筹学的一个分支 是求解决策过程最优化的过程 20世纪50年代初 美国数学家贝尔曼 R
  • 链表【2】

    文章目录 24 两两交换链表中的节点 题目 算法原理 代码实现 143 重排链表
  • 算法题-简单系列-07-判断一个链表是否为回文结构

    文章目录 1 题目 1 1 使用list集合判断 1 题目 给定一个链表 请判断该链表是否为回文结构 回文是指该字符串正序逆序完全一致 1 1 使用list集合判断 因为需要判断是否为回文结构 所以要比较头尾的数据 而链表无法随机查询数据
  • 力扣543. 二叉树的直径(java DFS解法)

    Problem 543 二叉树的直径 文章目录 题目描述 思路 解题方法 复杂度 Code 题目描述 给你一棵二叉树的根节点 返回该树的 直径 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 这条路径可能经过也可能不经过根节点 r
  • C/C++---------------LeetCode第509. 斐波那契数

    斐波那契数列 题目及要求 暴力递归 备忘录的递归 动态规划 题目及要求 斐波那契数 通常用 F n 表示 形成的序列称为 斐波那契数列 该数列由 0 和 1 开始 后面的每一项数字都是前面两项数字的和 也就是 F 0 0 F 1 1 F n
  • 【算法】【动规】最长递增子序列

    跳转汇总链接 动态规划算法汇总链接 2 1 最长递增子序列 题目链接 给你一个整数数组 nums 找到其中最长严格递增子序列的长度 子序列是由数组派生而来的序列 删除 或不删除 数组中的元素而 不改变其余元素的顺序 例如 3 6 2 7 是
  • 剑指 Offer(第2版)面试题 35:复杂链表的复制

    剑指 Offer 第2版 面试题 35 复杂链表的复制 剑指 Offer 第2版 面试题 35 复杂链表的复制 解法1 模拟 剑指 Offer 第2版 面试题 35 复杂链表的复制 题目来源 48 复杂链表的复刻 解法1 模拟 算法 复制原
  • 冒泡排序/选择排序/插入排序/快速排序/归并排序/桶排序/堆排序/希尔排序/计数排序/基数排序/二分查找/广度优先搜索/深度优先搜索

    排序算法 冒泡排序 Bubble Sort 通过重复地比较相邻的元素并交换它们 使得最大 或最小 的元素逐渐移动到列表的一端 从而实现排序 选择排序 Selection Sort 在未排序的部分中 选择最小 或最大 的元素 并将其放置在已排
  • 冒泡排序/选择排序/插入排序/快速排序/归并排序/桶排序/堆排序/希尔排序/计数排序/基数排序/二分查找/广度优先搜索/深度优先搜索

    排序算法 冒泡排序 Bubble Sort 通过重复地比较相邻的元素并交换它们 使得最大 或最小 的元素逐渐移动到列表的一端 从而实现排序 选择排序 Selection Sort 在未排序的部分中 选择最小 或最大 的元素 并将其放置在已排
  • 206.翻转链表

    翻转链表 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 备战技术面试 力扣提供海量技术面试资源 帮助你高效提升编程技能 轻松拿下世界 IT 名企 Dream Offer https leetcode cn problems re
  • 带头双向循环链表基础

    带头双向循环链表基础 销毁 销毁 void ListDestory ListNode phead void ListDestory ListNode phead assert phead ListNode cur phead gt next

随机推荐

  • Oracle复制行记录到同一个表(两种写法)

    Oracle复制行记录到同一个表 两种写法 通过循环 判断记录是否存在 不存在时插入数据 插入数据时 可以更新插入数据指定字段的值 请根据实际项目需要改写SQL DECLARE CURSOR dept cursor IS SELECT FR
  • C++杨辉三角(初学)

    01 C 的 杨辉三角之 第一个版本 就是最基础的 输入行数 输出打印的图形 话不多说 代码如下 include
  • Latex 特殊章节符号 (§)

    latex 的 tex 文件中 要引用的部分 S ref l 其中 S 大写 对应 l为要引用的章节对应的标签 即要引用的章节 section XXXX label l
  • java的 violate 和 synchronize

    volatile 意思是说这个变量 不必用本地副本优化 保证所有线程直接操作主存中的变量 是真正共享的 volatile讲的是可见性 跟原子操作 线程安全无关 synchronized 常常被强调的意思是互斥 保证只有一个线程进入 其实它还
  • Flutter videoplayer

    视频播放项目地址 效果图 从pub dev搜索视频播放库 但都不能满足要求 最后下载flick video项目代码 做了功能简化和修改 实现功能 列表播放时 不支持拖动修改进度亮度声音 避免滑动冲突 全屏和单一视频播放时支持 1 屏幕左侧上
  • org.apache.ibatis.exceptions.PersistenceException:

    org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist in com map UserMapper xm
  • 自己的第一个DS18B20温度传感器驱动程序(简单)

    基于msp430F149系列单片机 DQ连接到PORT6 5引脚 释放总线 即 空闲状态 因为连接上拉电阻 所以单总线在空闲状态时 一直处于高电平 include 430IO h I O口定义 define DS DIR P6DIR bit
  • Python 2.打开摄像头,保存图片 OpenCV Linux

    import numpy as np import cv2 调用笔记本内置摄像头 所以参数为0 如果有其他的摄像头可以调整参数为1 2 cap cv2 VideoCapture 0 while True 从摄像头读取图片 sucess im
  • 基于用户的协同过滤推荐算法原理和实现

    在推荐系统众多方法中 基于用户的协同过滤推荐算法是最早诞生的 原理也较为简单 该算法1992年提出并用于邮件过滤系统 两年后1994年被 GroupLens 用于新闻过滤 一直到2000年 该算法都是推荐系统领域最著名的算法 本文简单介绍基
  • 空字符 空格字符(字符) 空字符串 NULL的区别

    1 空字符 空格字符 字符 2 空字符串 3 NULL的区别 1 1 字符 1 首先必须明确字符型 char 是整数类型 其在内存单元是以整数形式存放 2 其次 char类型的产生是为了用于 存储字母 数字 标点字符 非打印字符 3 为方便
  • redis学习:redis五大数据类型的之String(字符串)

    String作为redis使用最多的最广泛的数据类型 一些String的基础方法 命令 描述 示例 APPEND key value 向指定的key的value后追加字符串 127 0 0 1 6379 gt set msg hello O
  • java 登录注册课题设计_JavaWeb笔记——注册登录系统项目思路

    功能 gt 注册 gt 登录 JSP login jsp gt 登录表单 regist jsp gt 注册表单 index jsp gt 主页 只有登录成功才能看到 Servlet LoginServlet RegistServlet Se
  • jupyter notebook打不开无反应 浏览器未启动的问题

    解决办法一 将http localhost 8888 tree复制到浏览器打开 此种方法每次需要重新输入 或复制链接 略显麻烦 解决办法二 1 win r 然后输入cmd 回车打开命令窗口 2 在命令窗口中输入jupyter noteboo
  • 【Java学习笔记】API:线程

    线程API 线程的生命周期图 线程方法 run方法用于定义线程任务 interrupt方法用于中断线程 yield用于让出CPU时间 start方法用于启动线程 创建线程有两种方式 常见线程有两种方式 方式一 继承Thread并重写run方
  • WPF--关于Action事件小结

    WPF 关于Action事件小结 1 需要类实例去调用事件建立订阅关系 public event Action
  • 欧拉函数

    在数论中 对于一整数n来说 欧拉函数是指 1 n 1中与n互质的数的个数 又称 函数 欧拉商数等 例如 8 4 因为1 3 5 7均和8互质 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明 函数的值 1 1 唯一和1互
  • 串口的单线半双工模式(stm32f10x系列)

    关注 星标公众号 及时获取更多技术分享 作者 冰茶奥利奥 微信公众号 嵌入式电子创客街 这两天折腾CTS RTS硬件流控 看到说232协议的CTS RTS只是用来做半双工换向使用的 正好手头上有块stm32的板子 看了看stm32的Usar
  • 6、IOC操作Bean管理[外部Bean、内部Bean、级联Bean、注入集合类型属性]

    a 注入属性 外部bean 外部bean就是将外部的bean注入到我们需要创建的bean中 1 创建两个类 Service类和dao类 2 在Service调用dao里面的方法 public interface UserDao public
  • html与python后端交互,python后端中取表单

    参考 http www manongjc com detail 13 owqqwhqvsqworkh html 前端
  • CDZSC_2022寒假个人训练赛21级(1)

    A 题意 略 题解 将n个数加起来的总和除以n即可 include