主题链接:http://acm.hdu.edu.cn/showproblem.php?

pid=4893

这个问题还真是纠结啊……好久不写线段树的题了。由于这几天学伸展树。然后认为线段树小case了。没想到栽在这题上了。尼玛……

自己把自己给搞晕了……想复杂了。都不懂得预处理一下,唉……还得怒刷几十道啊!

!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <cstdlib>
#include <queue>
#include <stack>
#include <vector>
#include <ctype.h>
#include <algorithm>
#include <string>
#include <set>
#define PI acos(-1.0)
#define MM 500015
#define INF 0x7fffffff
#define mem(a,b) memset(a,b,sizeof(a))
#define eps 1e-8
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
typedef long long ll;
typedef unsigned long long ULL;
using namespace std;
long long Fib[91],sum[MM],fib[MM];
int val[MM];
int n;
void init()
{
Fib[0]=1;
Fib[1]=1;
for(int i=2; i<92; i++)
Fib[i]=Fib[i-1]+Fib[i-2];
}
void pushUp(int i)
{
sum[i]=sum[i<<1]+sum[i<<1|1];
fib[i]=fib[i<<1]+fib[i<<1|1];
}
void pushDown(int i)
{
if(val[i])
{
val[i<<1]=1,val[i<<1|1]=1;
sum[i<<1]=fib[i<<1],sum[i<<1|1]=fib[i<<1|1];
val[i]=0;
}
}
void update(int i,int l,int r,int L,int v)
{
if(l==r&&l==L)
{
sum[i]+=v;
if(sum[i]<=1) {fib[i]=1;return;}
int ii=lower_bound(Fib,Fib+92,sum[i])-Fib;
if(Fib[ii]-sum[i]>=sum[i]-Fib[ii-1])
fib[i]=Fib[ii-1];
else fib[i]=Fib[ii];
return ;
}
int mid=(l+r)>>1;
pushDown(i);
if(L>mid) update(rson,L,v);
else update(lson,L,v);
pushUp(i);
}
void update1(int i,int l,int r,int L,int R)
{
if(L<=l&&r<=R)
{
sum[i]=fib[i];
val[i]=1;
return ;
}
int mid=(l+r)>>1;
pushDown(i);
if(R>mid) update1(rson,L,R);
if(L<=mid) update1(lson,L,R);
pushUp(i);
}
ll query(int i,int l,int r,int L,int R)
{
if(L<=l&&r<=R) return sum[i];
ll ans=0;
int mid=(l+r)>>1;
pushDown(i);
if(R>mid) ans+=query(rson,L,R);
if(L<=mid) ans+=query(lson,L,R);
return ans;
}
void build(int i,int l,int r)
{
if(l==r)
{
sum[i]=val[i]=0;
fib[i]=1;
return ;
}
int mid=(l+r)>>1;
build(lson);build(rson);
pushUp(i);
val[i]=0;
}
int main()
{
int m;
init();
while(~scanf("%d%d",&n,&m))
{
build(1,1,n);
while(m--)
{
int a,l,r;
scanf("%d%d%d",&a,&l,&r);
if(a==1) update(1,1,n,l,r);
else if(a==2) printf("%I64d\n",query(1,1,n,l,r));
else if(a==3) update1(1,1,n,l,r);
}
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

2014多校3 Wow! Such Sequence!段树的更多相关文章

  1. HDU4893:Wow! Such Sequence!(段树lazy)

    Problem Description Recently, Doge got a funny birthday present from his new friend, Protein Tiger f ...

  2. 2016暑假多校联合---Rikka with Sequence (线段树)

    2016暑假多校联合---Rikka with Sequence (线段树) Problem Description As we know, Rikka is poor at math. Yuta i ...

  3. Wow! Such Sequence!(线段树4893)

    Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...

  4. hdu 4893 Wow! Such Sequence!(线段树)

    题目链接:hdu 4983 Wow! Such Sequence! 题目大意:就是三种操作 1 k d, 改动k的为值添加d 2 l r, 查询l到r的区间和 3 l r. 间l到r区间上的所以数变成 ...

  5. 线段树 + 区间更新: HDU 4893 Wow! Such Sequence!

    Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  6. HDU 4893 Wow! Such Sequence! (线段树)

    Wow! Such Sequence! 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4893 Description Recently, Doge ...

  7. 牛客多校第四场sequence C (线段树+单调栈)

    牛客多校第四场sequence C (线段树+单调栈) 传送门:https://ac.nowcoder.com/acm/contest/884/C 题意: 求一个$\max {1 \leq l \le ...

  8. 计蒜客 28315.Excellent Engineers-线段树(单点更新、区间最值) (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 E)

    先写这几道题,比赛的时候有事就只签了个到. 题目传送门 E. Excellent Engineers 传送门 这个题的意思就是如果一个人的r1,r2,r3中的某一个比已存在的人中的小,就把这个人添加到 ...

  9. HDU 1394 Minimum Inversion Number (数据结构-段树)

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

随机推荐

  1. 四轴飞行器1.3 MPU6050(大端)和M4的FPU开启方法

    四轴飞行器1.3 MPU6050(大端)和M4的FPU开启方法  原创文章,欢迎转载,转载请注明出处      最近时间花在最多的地方就是STM32的I2C上了.之前就知道STM32的I2C并不好用, ...

  2. 【原创】JPEG图像密写研究(二) 哈夫曼树的建立

    [原创]记录自己研究的过程,仅供参考,欢迎讨论... 在根据JPEG图像文件结构读取完文件后,提取出其中DHT段,利用其中内容建立哈夫曼树,便于之后译码工作.这里需要注意的是文件中的哈夫曼表数量不固定 ...

  3. grunt api 文档

    Grunt docs Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. 安装 grunt-cli npm install grunt-cli -g 注 ...

  4. U盘中的闪存白片与黑片

    简单的说,黑片的概念主要用于芯片,白片的概念既用于芯片也用于闪存卡.黑片就是指芯片工厂选出的淘汰的次品,没有打上工厂标和芯片型号的芯片,这样的芯片都经过个种渠道流通到市场上来,现在很多U盘大厂大量的采 ...

  5. Android 流媒体系列(二)

    import java.io.IOException; import android.app.Activity; import android.content.ContentResolver; imp ...

  6. iPhone 6 为何坚持1GB内存?

    原文地址:http://digi.ifeng.com/expert/special/96/#6467378-qzone-1-9015-46cf52f061fd6e814686a918cedcb024 ...

  7. ZOJ 1698 (最大流入门)

    Power NetworkTime Limit:5000MS    Memory Limit:32768KB    64bit IO Format:%lld & %llu SubmitStat ...

  8. 四核网络机顶盒芯片局势分析(开放市场):rk3128将会成为四核主流

    开放市场:不包含小米.乐视等大品牌闭环生态系统的市场. 今年四核网络播放器以全志的a31s独领风骚.英菲克以绝对优势率先各大白牌品牌公司.只是随着时间的推移,全志的a31s不适应市场主流.因为芯片没有 ...

  9. Android应用开发基础篇(13)-----GestureDetector(手势识别)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/05/2381025.html 一.概述 GestureDetector是一个用于识别手势的类,这 ...

  10. BZOJ 1452: [JSOI2009]Count(二维BIT)

    为每一个权值开一个二维树状数组. ------------------------------------------------------------------------- #include& ...