牛客练习赛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 地、颜色、魔法(搜索+二维数组一维表示)
红色来源于山脉,象征着狂躁.愤怒.混乱,血雨腥风,电光火石. 蓝色来源于海岛,象征着控制.幻觉.诡计,运筹帷幄,谋定后动. 绿色来源于树林,象征着生命.蛮力.成长,横冲直撞,生生不息. 黑色来源于沼泽 ...
随机推荐
- webpack4基础配置
网页中常见的静态资源: js: .js .jsx .coffee .ts(TypeScript 类 C# 语言) css: .css .less .sass .scss Images: .jpg .p ...
- [每日一讲] Python系列:字典
#! /usr/bin/python # coding:utf-8 """ DATA STRUCTURE Container: Mapping (Another cont ...
- 通过页面名字调用页面并添加到tab控件中
/// <summary> /// 动态 显示 tab /// </summary> /// <param name="sFromName">类 ...
- python-套接字编程之tcp
服务端和客户端. 服务端脚本: # Auther:AlphaPanda # Description:server # Version:1 # Date:Mon Dec 2 09:02:01 EST 2 ...
- CF191C Fools and Roads - 树剖解法
Codeforces Round #121 (Div. 1) C. Fools and Roads time limit per test :2 seconds memory limit per te ...
- jQuery file upload callback options
autoUpload By default, files added to the widget are uploaded as soon as the user clicks on the star ...
- 使用HeapAnalyzer分析内存泄漏
从IBM网站下载ha433包,释放,执行ha433.jar文件 https://www.ibm.com/developerworks/mydeveloperworks/groups/service/h ...
- 【Win32 API】远程工具调用
前言 有时候,影城报障需要远程过去重现和处理,如果电脑没有安装远程工具的话,还需要营业员下载和安装,然后将账号密码发送过来,这样一来一回操作繁琐也浪费时间,所以我们可以设想一下这种场景,售票员点击在p ...
- 数据结构和算法(Java版)快速学习(交换、选择、插入排序)
基本排序算法:交换.选择.插入排序 常用的交换排序又称之为:冒泡排序 一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,冒泡排序由此物理规律得来. 冒泡算法的运作规律如下: ...
- MAC安装navcat
安装及破解,参照此文: https://blog.csdn.net/marswill/article/details/79808416