pat1049时间优化

PAT练习题概览 PAT(pat.zju.edu.cn)是一个面向C/C++程序的Online Judge系统。相比ZOJ,HDOJ,POJ等ACM题库,PAT的题目非常基础,对于数据结构、算法的入门是比较有助益的。 本文按照自己的认识,给PAT advanced level做出了分类。由于很多题目实际上兼顾有多种解法和思路,我给每道题打上了tag,来应对分类的独占性局限,供大家参考。 简单题 这 阅读详情

//MarkDown编辑器不能输入空&nbsp格 - -。

给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这10个片段。

给定正整数数列,求出全部片段包含的所有的数之和。如本例中10个片段总和是0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0。

输入格式:

输入第一行给出一个不超过105的正整数N,表示数列中数的个数,第二行给出N个不超过1.0的正数,是数列中的数,其间以空格分隔。

输出格式:

在一行中输出该序列所有片段包含的数之和,精确到小数点后2位。
输入样例:

4
0.1 0.2 0.3 0.4

输出样例:

5.00

============================================
(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4)
(0.2) (0.2, 0.3) (0.2, 0.3, 0.4)
(0.3) (0.3, 0.4)
(0.4)
我们可以看到这些片段的个数是和数组的元素个数是相同的,并且片段中相同的元素很多,所以我们可以化简成
0.1×4 + 0.2×3 + 0.3*2 + 0.4*1
0.2×3 + 0.3*2 + 0.4*1
0.3*2 + 0.4*1
0.4*1
由此我们把数组元素改成
arr[0] = 0.1 * 4
arr[1] = 0.2 * 3
arr[2] = 0.3 * 2
arr[3] = 0.4 * 1
换简称公式为:
arr[i] = arr[i] * (count -i);
//count表示数组的元素个数,也就是题目中的N
这样的话数组中的每个元素就相当与题目中的Index对应的片段了,然后用两次for循环分别从1开始相加,从2开始相加……直到N-1相加的得数再相加一次就可以得到了~
但是这样会导致PAT测试系统后两个数据运行超时,所以我们可以再适当的优化一下程序
题目中说N∈(0, 1E+06],所以两次for循环的时间就是O(n^2)!我们再看一遍上面的元素三角形
0.1×4 + 0.2×3 + 0.3*2 + 0.4*1
0.2×3 + 0.3*2 + 0.4*1
0.3*2 + 0.4*1
0.4*1
我们发现每一竖列中的元素都是相同的,而他们最终还是会相加的,所以我们直接把元素的相加转化成乘法,对数组元素进行二次处理
arr[0] = 0.4 * 1
arr[1] = 0.6 * 2
arr[2] = 0.6 * 3
arr[3] = 0.4 * 4
简化为公式就是
arr[i] = arr[i] * (i+1)
之后我们直接将数组中的元素相加就完成了!
时间复杂度为O(2n).
pat1049
代码:

#include <stdio.h>
#include <stdlib.h>

double* Creat_Arr( int n )
{
    int i;
    double* arr = (double* )malloc(sizeof(double)*n);
    for (i = 0; i < n; ++i)
    {
        scanf("%lf", &arr[i]);
        arr[i] *= n-i;
    }
    return arr;
}

void calc(double* arr, int count, int startIndex)
{
    double value = 0;
    for (int i = startIndex; i < count; ++i)
    {
        arr[i] *= i+1;
    }
}

int main(int argc, char const *argv[])
{
    int n;
    double value = 0;
    double* arr = NULL;
    scanf("%d", &n);
    arr = Creat_Arr(n);
    calc(arr, n, 0);
    for (int i = 0; i < n; ++i)
    {
        value += arr[i];
    }
    printf("%.2f\n", value);
    return 0;
}
Palantir解密:从企业数字化能力构成说起,“本体”如何破解现代企业数据应用难题? 抛开技术外壳来看,Palantir“本体”的理念内核其实并不复杂:构建一个统一、可操作的数字现实,以高效驱动决策与行动。其技术实施和产品沉淀的过程诚然是高复杂性、高难度的,但这正体现了Palantir所代表的新硅谷“All in AI+”的战略决心。对于我们而言,必须深刻认识到:企业数字化能力建设既不是高精尖技术的简单堆砌,也不是局部场景的数字化改良,而是一场企业级的“数字孪生”——关乎战略、组织与业务全域的体系能力的重塑。 阅读详情

相关推荐

不止于算力:深入鲲鹏920的片上网络(NoC)与一致性协议HCCS,看华为如何优化数据流转

本文深入解析了鲲鹏920处理器的片上网络(NoC)架构和一致性协议HCCS,揭示了华为如何通过创新的环总线设计和私有协议优化数据流转效率。文章详细介绍了鲲鹏920在多die、多芯片环境下的高效协同机制,包括环总线架构、HCCS协议精妙设计及物理实现创新,为云服务场景提供了高性能解决方案。

weixin_30681121的博客 251

PAT乙级测试题1049(C语言实现)

1049 数列的片段和 (20分) 给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。 给定正整数数列,求出全部片段包含的所有的数之和。如本例中 10 个片段总和是 0.1 + 0.3 +

weixin_45947840的博客 571

英特尔® NUC迷你电脑实现无人值守自动开机配置指南

本文详细介绍了如何配置英特尔® NUC迷你电脑实现无人值守自动开机功能。从BIOS设置到操作系统级配置,涵盖硬件兼容性确认、电源恢复功能设置及常见问题解决,帮助用户轻松实现设备断电后自动恢复运行,适用于家庭服务器、企业终端等多种场景。

weixin_42638178的博客 472

PAT-1049(乙级)

给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。 给定正整数数列,求出全部...

0110_ 202

自学篇--使用keil5.23创建一个stm32工程并编译(固件包自带版本)

之前在本科学习阶段学习过一点51单片机的知识,可是因为基本没有实践过几次现在已经完全忘记了。。前几天老师突然丢给我几个板子说让我把程序编译、烧写环境装好,当时我就震惊了,不过经过三四天的自我摸索,之后参考他人的学习经验,现在已经基本能处理这个问题了,所以为了方便后面的学者,主要也是为了把自己这几天的学习成果记录一下,我在这里把这个过程写下来。(因为刚刚接触,很多原理性的东西都还不懂,只是一个操作步

yang_csdnForOBTS的博客 8659

C#实现不占用串口的串口监听与侦听技术:高效监控串口数据的最佳实践

本文详细介绍了如何实现不占用串口的串口监听与侦听技术,解决了传统串口监听可能带来的串口占用问题。通过使用虚拟串口、外部监听工具或第三方库,我们可以高效地实现串口数据的捕获与处理,适用于各种工业控制、物联网和嵌入式开发的应用场景。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1666

PAT甲级 1049

属于转载 自己琢磨不出来这么巧妙的解法 算法笔记上应该也有 #include<bits/stdc++.h> using namespace std; const int MAXN = 100010; int happen[MAXN]; int a[MAXN]; int main(void) { freopen("pat0314/in.txt","r",stdin); int n; int total; cin>>n>>total;

zmh657628320的博客 123

生成式引擎优化(GEO)全流程解析

生成式引擎优化(GEO)已成为AI时代数字营销新趋势,通过优化企业内容以提升在AI生成答案中的引用率。本文系统梳理了GEO优化的完整流程,包括:1)前期准备与市场调研;2)数据治理与知识库构建;3)模型适配与算法优化;4)内容权威性建设;5)本地化营销;6)效果监测与优化。研究显示,实施GEO的企业AI曝光率提升62%,转化率增长2.3倍。未来GEO将向多模态内容、实时个性化、垂直场景深化方向发展。企业需建立动态知识图谱,采用结构化数据标记,持续优化内容策略,以在AI搜索时代获取流量优势。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 3242

[PAT乙级]1049 数列的片段和 (思路+精简代码)

1049 数列的片段和 给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。 给定正整数数列,求出全部片段包含的所有的数之和。如本例中 10 个片段总和是 0.1 + 0.3 + 0.6 +

分享XCPC常用算法和相关技巧 723

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 519

HFSS实战项目——微带带通滤波器设计

本文详细介绍并设计了一款微带带通滤波器,通过HFSS三位电磁仿真软件对其进行仿真设计及优化,仿真结果表明,本文设计的滤波器表现出优良的滤波性能,符合设计要求。

2401_87464239的博客 5391

PAT乙级 1049 数列的片段和

给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。 给定正整数数列,求出全部片...

爱吃西瓜的博客 598

基于STM32的六足机器人控制系统设计(项目资料ID:27)

六足机器人控制系统综合分析其结构、步态与控制算法,融合云端服务、Wi-Fi、蓝牙、语音识别及手势识别等多种技术,设计了多元化控制模式,并针对不同应用场景提出了差异化的构建方案。系统硬件采用分层设计,分为主控板与舵机控制板:主控板以 STM32F103VET6 为核心,负责各类控制模式的数据处理与状态显示;舵机控制板采用 STM32F103R8T6,专注于舵机角度的精确控制,两板通过串口实现数据交互。

以培养嵌入式工程师为己任 1万+

PAT1049_乙级 数列的片段和

两个知识点: long double问题 与 c++中保留小数点后位数 #include<iomanip> 暴力解测试点2和3会超时 #include<iostream> #include <iomanip> using namespace std; int main() { int n = 0; cin >> n; double* num = new double[n]; for (int i = 0; i < n; i++) { c

qq_45949701的博客 353

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PAT 1049 数列的片段和(满分题解Python)

给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。给定正整数数列,求出全部片段包含的所有的数之和。

2401_83134679的博客 272

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PAT-ADVANCED1049——Counting Ones

我的PAT-ADVANCED代码仓:https://github.com/617076674/PAT-ADVANCED 原题链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805430595731456 题目描述: 题目翻译: 1049 计算1的个数 任务很简单:给定任何正整数N,你应该计算从1到N的整...

清风阁 322

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PAT A1049题解

1049 Counting Ones (30 分) The task is simple: given any positive integer N, you are supposed to count the total number of 1’s in the decimal form of the integers from 1 to N. For example, given N bei...

geek_jerome的博客 391

PAT B1049

被这一题薄纱

一条漂流鱼 727

PAT 1049 数列的片段和 (20分) C++实现

1049 数列的片段和 (20分) 给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 ...

ganlanA的博客 419

PAT乙级——Java合集

简介添加链接描述   刷PAT完全是闲的时候打发时间的,感觉还蛮有意思,有空了就写几道,基本都是Java实现的,目前为止才刷了五十多道题目,等刷完继续LeetCode,这里也会持续更新的。 合集 PAT 1001 害死人不偿命的(3n+1)猜想(15分) PAT 1002 写出这个数 (20分)(Java) PAT 1003 我要通过! (20分)(Java) PAT 1004 成绩排名 (20 分)(Java实现) PAT 1005 继续(3n+1)猜想 (25分)(Java)

HenryLei的博客 6万+

PAT.1049. Counting Ones (30)

原题地址:https://www.patest.cn/contests/pat-a-practise/1049 题目原文: Counting Ones (30) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task is simple: given any positive integer

Mloza的博客 401

ZJU PAT 1049 Counting Ones

给定正整数n<2^30,求出从0到n所有整数中1的个数。傻傻地一个个去数肯定是不行的,这种方法去哪里面试人家都不会要你。关键在于找到数字每一位上出现1的规律。这题好像编程之美上有讲,具体就不详述了。比较讨厌的是pat限制的运行时间是80ms,用python写无论如何都是运行超时,翻译成c++的代码就直接ac了 1 d = input() 2 x = 1 3 total ...

weixin_30279751的博客 113

1049 数列的片段和(附详细注释,逻辑分析,运行超时)

写在前面 考察数据计算(公式抽象) 题目较难(个人角度) 合理的逻辑思路,耗费时间点 运行超时问题,耗费时间 a题失败,失去5分值 accumulate 函数,numeric 库 测试用例 input : 4 0.1 0.2 0.3 0.4 output : 5.00 运行超时代码 优化后(15分,超时) #include <vector> #include...

kngines 596

[PAT A1049]Counting Ones

[PAT A1049]Counting Ones 题目描述 1049 Counting Ones (30 分)The task is simple: given any positive integer N, you are supposed to count the total number of 1’s in the decimal form of the integers from 1 to...

欢迎来到我的编程小屋 786

PAT A1049 Counting Ones (30分)

PAT甲级1049 原题 The task is simple: given any positive integer N, you are supposed to count the total number of 1’s in the decimal form of the integers from 1 to N. For example, given N being 12, there a...

kyln1039的博客 435

A1049 PAT甲级JAVA题解 Counting Ones

题意:输入一个数,输出1~n中的数包含1的个数。

qq_49695680的博客 204
上一篇: 插入排序(InsertSort)
下一篇: ASP.net入门第一章
MerGoing
博客等级 码龄11年 8粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值