牛客练习赛46 E 华华和奕奕学物理 (树状数组)
https://ac.nowcoder.com/acm/contest/894/E
一开始写了一个简单的模拟 通过率只有5%......
看题解真的理解了好久!!肥宅大哭orz
题解如下

最后一句:“维护6个树状数组即可”.....喵喵喵??
先学一下树状数组吧:
链接在这
https://blog.csdn.net/Small_Orange_glory/article/details/81290634
结合代码讲比较容易理解
#include<bits/stdc++.h>
using namespace std;
const int maxn=4e6+;
const int T=3e5+;
const int mod=1e9+;
const int g=;
#define ll long long
ll bit[][maxn];
void add(ll b[],int i,ll C) //更新树状数组
{
while(i<maxn)
{
b[i]=(b[i]+C)%mod;
i+=i&-i;
}
}
ll sum(ll b[],int i) //求和 前i个元素的和
{
ll ans=;
while(i>)
{
ans+=b[i];
i-=i&-i;
}
return ans%mod;
}
int main()
{
int Q;scanf("%d",&Q);
while(Q--)
{
int op,v,t,m;scanf("%d%d%d",&op,&v,&t);
if(op==)
{
int V=v+g*(T-t);
scanf("%d",&m);
add(bit[],V,1LL*m*v%mod*v%mod);
add(bit[],V,1LL*m*g*g%mod);
add(bit[],V,1LL*m*g*g%mod*t%mod*t%mod);
add(bit[],V,1LL**m*g*g%mod*t%mod);
add(bit[],V,1LL**m*v%mod*g%mod);
add(bit[],V,1LL**m*v%mod*g*t%mod);
}
else
{
int V=min(v+g*(T-t),maxn-);
ll ans=;
ans+=sum(bit[],V);
ans+=sum(bit[],V)*t%mod*t%mod;
ans+=sum(bit[],V);
ans-=sum(bit[],V)*t%mod;
ans+=sum(bit[],V)*t%mod;
ans-=sum(bit[],V);
ans%=mod;
if(ans<)
ans+=mod;
printf("%lld\n",ans);
}
}
return ;
}
先讲为什么维护6个数组:
因为将公式

拆开就会变成含有6项的多项式:

我们将符合条件的小球的分别记录到6个数组中 这样方便求和
那么什么是符合条件的小球呢?
仔细看题解里说:
若某一时刻a球比b球速度快,则a球始终比b球速度快。
所以如果末尾时间a球比b球快 那么a球始终比b球快
所以判断某一时刻速度比v小的小球有哪些 假设在这一时刻扔下一个初速度为v的小球 只需要看哪些小球在最后的时刻速度比这个初速度为v的小球速度慢就好了
那么对于每一次op==1 我们就更新一次数组 把v+g*(T-t)之后的树状数组全部更新
对于每一次op==2 我们就把前v+g*(T-t)项求和
照着模拟几遍就理解了(而我想了一晚上)
牛客练习赛46 E 华华和奕奕学物理 (树状数组)的更多相关文章
- 牛客练习赛7 E 珂朵莉的数列(树状数组+爆long long解决方法)
https://www.nowcoder.com/acm/contest/38/E 题意: 思路: 树状数组维护.从大佬那里学习了如何处理爆long long的方法. #include<iost ...
- 牛客练习赛22-E.简单数据结构1(扩展欧拉定理降幂 +树状数组)
链接:E.简单数据结构1 题意: 给一个长为n的序列,m次操作,每次操作: 1.区间加 2.对于区间,查询 ,一直到- 请注意每次的模数不同. 题解:扩展欧拉定理降幂 对一个数p取log(p)次的 ...
- 牛客网多校第5场 H subseq 【树状数组+离散化】
题目:戳这里 学习博客:戳这里 题意:给n个数为a1~an,找到字典序第k小的序列,输出该序列所有数所在位置. 解题思路:先把所有序列预处理出来,方法是设一个数组为dp,dp[i]表示以i为开头的序列 ...
- 牛客网多校第5场 I vcd 【树状数组+离散化处理】【非原创】
题目:戳这里 学习博客:戳这里 作者:阿狸是狐狸啦 n个点,一个点集S是好的,当且仅当对于他的每个子集T,存在一个右边无限延长的矩形,使的这个矩形包含了T,但是和S-T没有交集. 求有多少个这种集合. ...
- 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)
链接:https://ac.nowcoder.com/acm/contest/894/C 来源:牛客网 华华跟奕奕玩游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...
- 牛客练习赛46 B 华华送奕奕小礼物 (预处理前缀和,二分)
链接:https://ac.nowcoder.com/acm/contest/894/B?&headNav=acm 来源:牛客网 华华送奕奕小礼物 时间限制:C/C++ 1秒,其他语言2秒 空 ...
- 牛客练习赛46 A 华华教奕奕写几何 (简单数学)
链接:https://ac.nowcoder.com/acm/contest/894/A 来源:牛客网 华华教奕奕写几何 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...
- 牛客练习赛53 E-老瞎眼pk小鲜肉(思维+线段树+离线)
前言 听说是线段树离线查询?? 做题做着做着慢慢对离线操作有点感觉了,不过也还没参透,等再做些题目再来讨论离线.在线操作. 这题赛后看代码发现有人用的树状数组,$tql$.当然能用树状数组写的线段树也 ...
- 牛客练习赛31A 地、颜色、魔法(搜索+二维数组一维表示)
红色来源于山脉,象征着狂躁.愤怒.混乱,血雨腥风,电光火石. 蓝色来源于海岛,象征着控制.幻觉.诡计,运筹帷幄,谋定后动. 绿色来源于树林,象征着生命.蛮力.成长,横冲直撞,生生不息. 黑色来源于沼泽 ...
随机推荐
- UI控件Telerik UI for ASP.NET MVC全新发布R2 2019 SP1
Telerik UI for ASP.NET MVC拥有使用JavaScript和HTML5构建网站和移动应用所需的70+UI部件,来满足开发者的各种需求,提供无语伦比的开发性能和用户体验.它主要是针 ...
- ZROI 19.08.07模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 ...
- Hive 中的 LEFT SEMI JOIN 与 JOIN ON
hive 的 join 类型有好几种,其实都是把 MR 中的几种方式都封装实现了,其中 join on.left semi join 算是里边具有代表性,且使用频率较高的 join 方式. 1.联系 ...
- SpringBoot + kaptcha 生成、校对 验证码
1.引入 kaptcha 的 Maven 依赖 <dependency> <groupId>com.github.penggle</groupId> <art ...
- python+selenium封装UI自动化框架
seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的 ...
- maven项目解决pom.xml头部 http://maven.apache.org/xsd/maven-4.0.0.xsd报错的问题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_36611526/article/d ...
- node中controller的get和post方法获取参数
1.get: const body = ctx.query; // get请求 2.post: const body = ctx.request.body; // post请求
- z-tree的使用
1.参考资料 1)官网:http://www.treejs.cn/v3/api.php 2)z-tree码云:https://gitee.com/zTree/zTree_v3 2.下载解压 案例演示: ...
- node.js入门学习(四)--Demo图书的增删改查
需求:图书的增删改查,图书数据保存在data.json文件中. 1.Demo结构: 2.首先下载安装node.js,配置环境变量:参考博客 3.项目初始化 1)创建项目根目录node-hello,进入 ...
- tensorflow版本介绍
软件的生命周期中一般分4个版本,RC 和 Beta分别是其中2种.如下是4种的解释: alpha版:内部测试版.α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本包含很多BUG, ...