题目描述   https://www.nowcoder.net/acm/contest/78/E

已知有一个n+1个数的数列,对于给定的A0和An ,当i满足当1<=i<=n-1时有 
 
 
 
现在小星想知道对于这个数列一段区间的和。
 

输入描述:

第一行输入四个数 n,A0,An,Q
接下来Q行 每行输入两个数l,r
0=< n,A0,An<=1e9,Q<=100000
0<=l<=r<=n

输出描述:

对于每组查询输出Al到Ar的和
示例1

输入

3 0 3 2
1 1
1 3

输出

1
6

备注:

为了对萌新表现出友好,数据保证了对于Ai的每一项都是整数

今天比赛遇上这个题,开始以为要用到组合数,而且数据比较大,可能会超时,一时间没有思路。
比赛快结束时发现

可以化简为 Ai=(a0*(n-i)+an*j)/n  把组合数消掉了,极大加快运算速度,将每项依次算出来再相加,
于是匆匆写好了代码,提交后发现过了百分之20,后面的超时了,比赛结束了我还没找到原因

翻看别人的代码,发现他没用用到累加,看样子有通式,突然我想到了等差数列的求和公式,Ai确实满足等差数列的通项,写好代码又发现没过
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <cstring>
using namespace std;
int main()
{
int n,a0,an,q,m,n2;
while(cin>>n>>a0>>an>>q)
{
for(int i=;i<q;i++)
{
cin>>m>>n2;
long long ans=((a0*(n-m)+an*m)/n+(a0*(n-n2)+an*n2)/n)*(n2-m+)/;
cout<<ans<<endl;
}
}
return ;
}

想了很久想到可能会爆掉数据,把那些an m l r不超过int范围的数据改成long long后就ac了,做个题真不容易

虽然那些数据不会爆,但是它们在计算过程中会爆掉,比如 m和n都是int类型  m+n超过int范围的话会使m+n的结果出错

做这道题真是不容易啊


这是一个数学题牛客训练赛E的更多相关文章

  1. 牛客训练赛25-A-最长区间

    https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5 ...

  2. 牛客训练赛25-A-因数个数

    题目链接https://www.nowcoder.com/acm/contest/158/A 无语...这题很迷啊,原谅我的菜,刚开始想用预处理欧拉筛和前缀和,可是这题太血崩了,这样一样要遍历,1-e ...

  3. 牛客训练赛55 E 树

    很妙的一个树形DP问题,简单考虑了一下就过了 https://ac.nowcoder.com/acm/contest/2927/E 主要就是推公式(公式有点长呀) 大概就是这样,其实挺简单的. #in ...

  4. 2019牛客训练赛第七场 C Governing sand 权值线段树+贪心

    Governing sand 题意 森林里有m种树木,每种树木有一定高度,并且砍掉他要消耗一定的代价,问消耗最少多少代价可以使得森林中最高的树木大于所有树的一半 分析 复杂度分析:n 1e5种树木,并 ...

  5. 寻找下一个结点 牛客网 程序员面试金典 C++ java Python

    寻找下一个结点 牛客网 程序员面试金典 C++ java Python 题目描述 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继). 给定树的根结点指针TreeNode* root ...

  6. 牛客巅峰赛S2第6场题解

    牛客编程巅峰赛S2第6场 A-StringⅡ 题目 题目描述 给出一个仅包含小写字母的字符串s,你最多可以操作k次,使得任意一个小写字母变为与其相邻的小写字母(ASCII码差值的绝对值为1),请你求出 ...

  7. 牛客小白赛1 F题三视图

    链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...

  8. 牛客小白赛4J——强迫症

    链接:https://www.nowcoder.com/acm/contest/134/J 来源:牛客网 思路:把数列排序,把每一个重复的元素和最后一个数想加得到新数,在删掉这一元素即为去重的最少步骤 ...

  9. 牛客小白赛4 A 三角形 数学

    链接:https://www.nowcoder.com/acm/contest/134/A来源:牛客网 题目描述 铁子从森林里收集了n根木棍,她开始将它们按顺序的排成一排,从左到右依次为1到n,她回想 ...

随机推荐

  1. table表格(笔记)

    <table class="table table-hover2 pick_carTable"> <thead> <tr class="bl ...

  2. lamp/lnmp下添加PHP扩展

    在linux下安装好基本的PHP运行环境后有时候添加了新的功能,就得增加新的扩展,比如之前没有安装redis扩展,可以手动编译安装相关的扩展可以找下下载的php源码包中,ext目录下是否有相关的扩展源 ...

  3. BSOJ 4591 -- 【JLOI2015】城池攻占

    Description 小铭铭最近获得了一副新的桌游,游戏中需要用m个骑士攻占n个城池. 这n个城池用1到n的整数表示.除1号城池外,城池i会受到另一座城池fi的管辖,其中fi 每个城池有一个防御值h ...

  4. C#的list和arry相互转化

    ,从System.String[]转到List<System.String> System.String[] str={"str","string" ...

  5. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  6. String.valueOf()方法注意

    String.valueOf();可以将 int char long float double boolean char[] 转化为字符串输出,但不是这几个类型时候,则会使用Object类型接收,底层 ...

  7. QT pro文件详细写法+实例

    很多的初学者都没有注意pro 文件的内容 今天简单的介绍一下 这个文件主要内容 TEMPLATE:这个变量是用来定义你的工程将被编译成什么模式.如果没有这个设置,系统将默认编译为application ...

  8. Android对接微信支付体验

    在写正文之前我不得不吐槽一下:微信支付所提供的参考文档以及技术支持真心太烂了. 微信的坑: 1.在生成prepay_id向微信服务器传递参数时<body>不支持中文.需要对其进行转码,否则 ...

  9. ESP8266使用详解(AT,LUA,SDK)

    https://www.cnblogs.com/yangfengwu/p/10100152.html             8266综合开发教程(LUA) https://www.cnblogs.c ...

  10. Luogu4640 BJWC2008 王之财宝 容斥、Lucas

    传送门 题意:有$N$种物品,其中$T$个物品有限定数量$B_i$,其他则没有限定.问从中取出不超过$M$个物品的方案数,对质数$P$取模.$N,M \leq 10^9 , T \leq 15 , P ...