博客
关于我
PAT1104 Sum of Number Segments
阅读量:337 次
发布时间:2019-03-04

本文共 1308 字,大约阅读时间需要 4 分钟。

PAT1104

原题

在这里插入图片描述

题目大意及思路

题中给定了一个正数序列,但这里我有两个疑惑点:

  • 只说是0~1的正数,应该是个小数
  • 序列本身是按照大小排列吗?
    由于不认识consecutive这个单词,模拟现场考试环境,我并没有去查它的意思,是连续的、邻近的意思吗? 应该和序列元素大小无关。
    题目要求分片后把每一个片里的总和求出再求总和。
    那是否可以不强行把每一个片求出呢?因为暴力求出的话感觉会爆。
    每一个元素出现的次数是否有数据规律或逻辑呢?
    是的,在经过一些时间后,我找到了这个题里数据出现次数的规律,以题中给的数据为例在这里插入图片描述

这里为什么这么算呢?我们观察题目,每个数出现在什么地方呢?以它为首的子序列以在它之前的数为首且包括它在内的子序列中。我们以0.3为例,首先以0.3为首的子序列有(0.3) (0.3, 0.4),这个的数量计算方式很简单:n-i,也就是上图里提到的ai;以在0.3之前的数为首且包括0.3在内的子序列有 (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2, 0.3) (0.2, 0.3, 0.4),而这个的计算方式为:ak-(i-k),k=0,1...i-1(我们可以用一个循环来实现)

原先想在得到每一个值之后再算出现次数和总和,后来想想其实可以直接在输入的时候就把ai算出来,后面的数在输入的时候可以直接用ak,用动态数组实现是再好不过的了(好吧最后也没有用动态数组,因为发现不需要用到数据,直接初始化就OK了),感觉有点动态规划的意思了。
(哦豁!后来发现这个循环被嵌套在大循环里,运行超时了...)
于是我又发现了这个出现次数是对称的,如果我只求一半的话,运行会不会不超时呢?
好吧,还是会超时。
刚刚去看了看其他的解,我的问题是出在了二重循环上,那如果把二重循环化为一重,就一定能解决,而它的出现次数其实就是:
在这里插入图片描述

代码

#include
#include
using namespace std;int main(){ int n; cin>>n; double ans=0; for(int i=0;i
>data; ans+=data*(i+1)*(n-i); cout<
<<" "<<(n*i-i*i+n-i)<

运行截图

在这里插入图片描述

  • 这里其实不知道为什么会答案错误,但将其他博主的正确答案放上去同样出现了该类错误,在该题结尾处也附加了一句thanks for correcting test data. 不清楚是不是这个原因,还望各位给以解答和指正!

收获

  • 这个题是PAT里四个题的第一个题,但花费了我很多时间。主要是去找寻这个题里数据的规律去了,但后来参考完别的优秀的解后,发现确实要加强利用计算机“自动”找寻规律的思想(当然这里的自动没那么智能,而是说利用计算机本身来化解我们找寻规律的过程,像我一直在参考的博主她使用的方法就是通过片段首尾指针的可摆放的位置种数来得到的数学方程,确实厉害,希望自己也再接再厉)
  • consecutive 连贯的,连续不断的

转载地址:http://ddhh.baihongyu.com/

你可能感兴趣的文章
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>