每日一练c++题目日刊 | 第十二期

2023-05-16

文章目录

  • 第一题
    • 题目背景故事
    • 题目描述
    • 输入描述
    • 输出描述
    • 输入样例
    • 输出样例
    • 解题思路
    • C++参考程序
  • 第二题
    • 题目背景故事
    • 题目描述
    • 输入描述
    • 输出描述
    • 输入样例
    • 输出样例
    • 解题思路
    • C++参考程序
  • 第三题
    • 题目背景故事
    • 输入描述
    • 输出描述
    • 输入样例
    • 输出样例
    • 解题思路
    • C++参考程序

第一题

题目背景故事

在一个数学竞赛中,一个小学生在做题时遇到了这道题目,但是他不会等差数列求和公式,于是他请教了你,作为一个编程高手,你帮他写了一个程序来完成这道题目。

题目描述

给定一个整数 n n n,求出 ∑ i = 1 n i 3 \sum_{i=1}^{n}i^3 i=1ni3 的值。

输入描述

一个整数 n n n ( 1 ≤ n ≤ 1 0 9 ) (1≤n≤10^9) (1n109)

输出描述

一个整数,表示 ∑ i = 1 n i 3 \sum_{i=1}^{n}i^3 i=1ni3 的值。

输入样例

5

输出样例

225

解题思路

首先我们可以把题目中的公式简化一下,得到: ∑ i = 1 n i 3 = n 2 ( n + 1 ) 2 4 \sum_{i=1}^{n}i^3=\frac{n^2(n+1)^2}{4} i=1ni3=4n2(n+1)2

C++参考程序

#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    cout << (long long)n * n * (n + 1) * (n + 1) / 4 << endl;
    return 0;
}

说明:本题中使用了long long类型,来防止溢出。

第二题

题目背景故事

在这个世界上,有一种叫做“钻石”的矿物,它们排列在一个序列中,每一颗钻石都有一个价值,我们只能从这个序列中选出一些钻石,使得它们的价值是不下降的,并且要求出最多能选出多少颗钻石。

题目描述

给定一个长度为 n n n 的序列 a a a,求这个序列的最长不下降子序列的长度。

输入描述

一个整数 n n n ( 1 ≤ n ≤ 1 0 5 ) (1≤n≤10^5) (1n105),表示序列 a a a 的长度。
一个长度为 n n n 的序列 a a a

输出描述

一个整数,表示最长不下降子序列的长度。

输入样例

6
5 6 7 8 1 2

输出样例

4

解题思路

这是一道动态规划问题,我们可以建立一个 n n n 个元素的数组 d p dp dp d p i dp_i dpi 表示以第 i i i 个元素结尾的最长不下降子序列长度。

对于第 i i i 个元素,我们可以从 0 0 0 i − 1 i-1 i1 枚举所有的元素,如果 a j ≤ a i a_j \le a_i ajai,那么 d p i = m a x ( d p i , d p j + 1 ) dp_i = max(dp_i, dp_j+1) dpi=max(dpi,dpj+1)

C++参考程序

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int a[N], dp[N];
int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        dp[i] = 1;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j < i; j++) {
            if (a[j] <= a[i]) {
                dp[i] = max(dp[i], dp[j] + 1);
            }
        }
    }
    int res = 0;
    for (int i = 1; i <= n; i++) {
        res = max(res, dp[i]);
    }
    cout << res << endl;
    return 0;
}

代码说明(此部分有ChatGPT补充说明):

  1. 初始化一个长度为 n n n的序列 a a a d p dp dp数组
  2. 1 1 1 n n n遍历 a a a数组,每次读入一个数,并将 d p i dp_i dpi初始化为 1 1 1
  3. 1 1 1 n n n遍历 a a a数组,对于每个 i i i,枚举 j j j,如果 a j ≤ a i a_j \le a_i ajai,那么更新
    d p i = m a x ( d p i , d p j + 1 ) dp_i = max(dp_i, dp_j+1) dpi=max(dpi,dpj+1)
  4. 1 1 1 n n n遍历 d p dp dp数组,取 m a x max max,最后输出结果。

第三题

题目背景故事

在研究一种新型材料的性质时,科学家们发现这种材料的性质与其成分之间存在线性关系,科学家们希望通过线性方程组来求解这种材料的组成成分。

题目描述:给出一个n元线性方程组 A × X = B A \times X=B A×X=B,其中 A A A是n*n的矩阵, X X X是n维的未知向量, B B B是n维的常数向量。求解此线性方程组的解 X X X

输入描述

第一行一个整数n,表示方程组的元数。
接下来n行,每行n个浮点数,表示矩阵A的元素。
接下来n行,每行1个浮点数,表示向量B的元素。

输出描述

n个浮点数,表示向量X的元素。

输入样例

3
1 2 3
4 5 6
7 8 9
1
2
3

输出样例

-0.2857142857142857
0.8571428571428571
-0.2857142857142857

解题思路

高斯消元法

C++参考程序

#include <iostream>
#include <cmath>
using namespace std;
const int N = 110;
double a[N][N], b[N], x[N];
int n;

void Gauss()
{
    for(int i = 0; i < n; i ++)
    {
        int k = i;
        for(int j = i + 1; j < n; j ++)
            if(fabs(a[j][i]) > fabs(a[k][i])) k = j;
        if(k != i)
            for(int j = 0; j <= n; j ++)
                swap(a[i][j], a[k][j]);
        for(int j = i + 1; j < n; j ++)
        {
            double t = a[j][i] / a[i][i];
            for(int k = i; k <= n; k ++)
                a[j][k] -= t * a[i][k];
        }
    }
    for(int i = n - 1; i >= 0; i --)
    {
        for(int j = i + 1; j < n; j ++)
            a[i][n] -= a[i][j] * x[j];
        x[i] = a[i][n] / a[i][i];
    }
}

int main()
{
    cin >> n;
    for(int i = 0; i < n; i ++)
        for(int j = 0; j < n; j ++)
            cin >> a[i][j];
    for(int i = 0; i < n; i ++)
        cin >> b[i];
    for(int i = 0; i < n; i ++)
        a[i][n] = b[i];
    Gauss();
    for(int i = 0; i < n; i ++)
        cout << x[i] << endl;
    return 0;
}

上面的参考程序中的C++代码并没有考虑矩阵的特殊情况,如行列式为0,所以在实际应用中需要判断。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日一练c++题目日刊 | 第十二期 的相关文章

随机推荐

  • 嵌入式实时操作系统uC/os-II(十六)-信号量集

    信号量定义 uC OS II 提供了可处理多个信号量的信号量集 其实意图如图 7 1 所示 图 7 1 信号量集的示意图 从图中可以看到 xff0c 信号量实质上就是一个多输入 多输出的组合逻辑 其输入为其他任务发出的多个信号 xff0c
  • 基于深度学习的图像识别,实现APP自动打麻将

    互联网改变了我们的生活 xff0c 现在连打麻将都在网上打了 进几年发现身边的很多朋友都在网上玩一款四川麻将APP 平时没事的时候我也玩玩 xff0c 我是一个写了几年程序的码龙 xff0c 突然有一天我有个想法我能不能用我的专业来解放我的
  • PHP常用设计模式

    单例模式 单例模式顾名思义 xff0c 就是只有一个实例 作为对象的创建模式 xff0c 单例模式确保某一个类只有一个实例 xff0c 而且自行实例化并向整个系统提供这个实例 单例模式的特点 xff1a 三私一共 xff1a 1 私有的静态
  • 飞行控制器固件项目-对比介绍(Ardupilot、PX4、LibrePilot、OpenPilot)

    ArduPilot与Pixhawk什么关系 https zhuanlan zhihu com p 109639638 无人机开源项目 8个开源无人机项目 https blog csdn net cuml0912 article detail
  • 各种控制方法在抗干扰方面的区别

    一 由来 自适应控制 AdaptiveControl AC xff1a AC旨在处理由结构参数扰动引起的不良影响 AC的思想是首先在线识别受控系统的模型参数 xff0c 然后根据识别的模型参数调整控制参数以获得良好的性能 AC在处理模型参数
  • 【深入理解】export和module.export的区别

    内部原理 exports 61 module exports 61 exports 是module exports的引用 xff0c 怎么理解这句话呢 xff1f 大概就是 var a 61 var b 61 a a 和 b 之间的区别吧
  • 如何保证Service在后台不被杀死?

    一 前期基础知识储备 xff08 1 xff09 为什么要保证后台Service不被杀死 xff1f 提高应用存在感 对于大厂的应用来说 xff0c 其程序 活着 不是问题 xff0c 但是为了带来更好的用户体验 xff0c 提高用户粘性
  • mybatis generator时碰到的错误及解决办法

    这篇博客简单记录下自己使用mybatis generator时碰到的错误及解决办法 本人是在macOS下进行的下列操作 问题1 mybatis generator Cannot connect to database 解决办法 xff1a
  • C# 编写 WinForm 窗体应用程序(第一期)

    C 编写 WinForm 窗体应用程序 第一期 文章目录 C 编写 WinForm 窗体应用程序 第一期 WinForm窗体应用程序简述C 创建WinForm窗体应用程序C 窗体属性 1 创建一个名为 TestForm 的窗体 2 设置 T
  • npm删除项目所有依赖和清缓存

    清缓存的办法 xff0c 一个是 npm cache verify 还有一个方法npm cache clean force 删除项目所有依赖 npm uninstall 转载于 https www cnblogs com jimaww p
  • 【我的前端】CSS在Windows下实现Mac浏览器滚动条

    Windows实现Mac浏览器滚动条 文章目录 Windows实现Mac浏览器滚动条一 自定义滚动条外观二 滑块与滚动容器之间的间距三 将滚动条悬浮在内容之上四 滚动时才出现五 完整代码六 总结说明 x1f496 x1f496 x1f496
  • python经典案例:抓交通肇事者

    抓交通肇事者 x1f496 x1f496 x1f496 x1f495 x1f495 x1f495 欢迎来到本博客 x1f495 x1f495 x1f495 x1f496 x1f496 x1f496 x1f381 支持 xff1a 如果觉得博
  • 【Python初级人工智能精讲】用Paddlehub给一段没有标点符号的文字加上合适的标点符号

    Python初级人工智能精讲 文章目录 Python初级人工智能精讲一 写在前面二 七步精讲三 模型介绍四 进入实战1 源代码2 运行效果 1 cmd方面 2 txt文件运行前后对比 五 休吃霸王餐六 每日一句 一 写在前面 今天给分享的程
  • 深度解读互联网新时代:Web3.0

    文章目录 深度解读互联网新时代 Web3 0一 Web3 中心化网络的新兴名词二 Web3 全家福 三 Web3 是互联网的货币层四 Web3 是互联网的身份层五 Web3 通过售卖数据来牟利的反击六 Web3 还拥有平台本身的一种方式七
  • 《疫情下的编程岁月》第二章:选择学习语言

    文章目录 第二章 选择学习语言 2 1 常见的编程语言介绍 C语言 C Java Python JavaScript 2 2 选择适合自己的语言 考虑自己的兴趣和目标 了解各种语言的特点 尝试不同的语言 2 3 学习路线的规划 找到适合自己
  • 每日一练c++题目日刊 | 第十期

    文章目录 第一题 xff1a 二维矩阵中的最短路径题目描述输入格式输出格式数据范围输入样例输出样例解题思路 amp C 43 43 题解算法状态转移方程 第二题 xff1a 01 串的满足条件的个数题目描述输入格式输出格式数据范围输入样例输
  • 每日一练c++题目日刊 | 第八期

    文章目录 第一题 xff1a 夏洛克侦案题目描述输入格式输出格式输入样例输出样例解题思路 amp C 43 43 题解 第一题 xff1a 夏洛克侦案 题目描述 福尔摩斯接到了一个任务 xff0c 需要帮助一位富有的英国贵族解决一件谋杀案
  • 00后少年的心力之作(已开源) | heartt(心力算法)

    00后少年的心力之作 已开源 综合性极强的文本摘要算法 heartt 大家好 xff0c 我是 heartt 算法的作者 xff0c 一名热爱编程的学习者 今天 xff0c 我要向大家介绍我的新算法 xff1a heartt 文章目录 一
  • 初读《编程之美》就想秀一下,结果还翻车了

    文章目录 一 前言 二 我的思路 三 Code 四 翻车现场 五 后续问题 一 前言 如何写一个短小的程序 xff0c 让 Windows 的任务管理器显示CPU的占用率为50 这道有趣的面试题我是这两天从 编程之美 电子版中看到的 xff
  • 每日一练c++题目日刊 | 第十二期

    文章目录 第一题题目背景故事题目描述输入描述输出描述输入样例输出样例解题思路C 43 43 参考程序 第二题题目背景故事题目描述输入描述输出描述输入样例输出样例解题思路C 43 43 参考程序 第三题题目背景故事输入描述输出描述输入样例输出