Wow! Such Sequence! (线段树) hdu4893
http://acm.hdu.edu.cn/showproblem.php?pid=4893
先贴上一份还没过的代码,不知道拿出错了 1 // by caonima
2 // hehe
3 #include <cstring>
4 #include <algorithm>
5 #include <cstdio>
6 #include <queue>
7 #include <stack>
8 #include <vector>
9 #include <map>
10 #include <cmath>
11 #include <set>
12 #include <iostream>
13 #include <string>
14 using namespace std;
15 #define LL __int64
16 const int MAX = 1e6+;
17 const LL inf = 1LL<<;
18 LL sum[MAX<<],col[MAX<<],fib_sum[MAX<<],fib[MAX];
19 int cur=;
20 void init() {
21 fib[]=fib[]=;
22 for(int i=;i<MAX;i++) {
23 if(fib[i-]+fib[i-]>inf) break;
24 fib[i]=fib[i-]+fib[i-];
25 cur++;
26 }
27 return ;
28 }
29 void push_up(int o) {
30 fib_sum[o]=fib_sum[o<<]+fib_sum[o<<|];
31 sum[o]=sum[o<<]+sum[o<<|];
32 }
33 void push_down(int o) {
34 if(col[o]!=-) {
35 col[o<<]=col[o<<|]=col[o];
36 sum[o<<]=fib_sum[o<<];
37 sum[o<<|]=fib_sum[o<<|];
38 col[o]=-;
39 }
40 return;
41 }
42 void build(int L,int R,int o) {
43 if(L==R) {
44 sum[o]=;
45 fib_sum[o]=; col[o]=-;
46 return ;
47 }
48 int mid=(L+R)>>;
49 build(L,mid,o<<);
50 build(mid+,R,o<<|);
51 push_up(o);
52 }
53 void add(int L,int R,int o,int k,int val) {
54 if(L==R) {
55 sum[o]+=(LL)val;
56 int x=(int)(lower_bound(fib,fib+cur,sum[o])-fib);
57 // printf("%I64d %I64d\n",fib[x],fib[x-1]);
58 // printf("%I64d\n",sum[o]);
59
60 if(x==) fib_sum[o]=fib[x];
61 else if((-fib[x]+sum[o])>=(-fib[x-]+sum[o])) fib_sum[o]=fib[x-];
62 else fib_sum[o]=fib[x];
63 // printf("%I64d\n",fib_sum[o]);
64 return ;
65 }
66 push_down(o);
67 int mid=(L+R)>>;
68 if(k<=mid) add(L,mid,o<<,k,val);
69 else add(mid+,R,o<<|,k,val);
70 push_up(o);
71 }
72
73 void Update(int L,int R,int o,int ls,int rs) {
74 if(ls<=L&&rs>=R) {
75 sum[o]=fib_sum[o];
76 col[o]=;
77 return ;
78 }
79 push_down(o);
80 int mid=(L+R)>>;
81 if(ls<=mid) Update(L,mid,o<<,ls,rs);
82 if(rs>mid) Update(mid+,R,o<<|,ls,rs);
83 push_up(o);
84 }
85 LL Query(int L,int R,int o,int ls,int rs) {
86 if(ls<=L&&rs>=R) {
87 return sum[o];
88 }
89 push_down(o);
90 int mid=(L+R)>>;
91 LL res=;
92 if(ls<=mid) res+=Query(L,mid,o<<,ls,rs);
93 if(rs>mid) res+=Query(mid+,R,o<<|,ls,rs);
94 return res;
95
96 }
97 int main() {
98 int n,m,op,ls,rs;
99 init();
while(scanf("%d %d",&n,&m)==) {
build(,n,);
for(int i=;i<m;i++) {
scanf("%d %d %d",&op,&ls,&rs);
if(op==) {
add(,n,,ls,rs);
}
else if(op==) {
printf("%I64d\n",Query(,n,,ls,rs));
}
else {
Update(,n,,ls,rs);
}
}
}
return ;
116 }
Wow! Such Sequence! (线段树) hdu4893的更多相关文章
- Wow! Such Sequence!(线段树4893)
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 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区间上的所以数变成 ...
- 2016暑假多校联合---Rikka with Sequence (线段树)
2016暑假多校联合---Rikka with Sequence (线段树) Problem Description As we know, Rikka is poor at math. Yuta i ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸
D. The Child and Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...
- hdu4893Wow! Such Sequence! (线段树)
Problem Description Recently, Doge got a funny birthday present from his new friend, Protein Tiger f ...
- HDU 6047 Maximum Sequence(线段树)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...
- Codeforces 438D The Child and Sequence - 线段树
At the children's day, the child came to Picks's house, and messed his house up. Picks was angry at ...
- hdu 5828 Rikka with Sequence 线段树
Rikka with Sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5828 Description As we know, Rik ...
- hdu-5805 NanoApe Loves Sequence(线段树+概率期望)
题目链接: NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 ...
- Codeforces 486E LIS of Sequence(线段树+LIS)
题目链接:Codeforces 486E LIS of Sequence 题目大意:给定一个数组.如今要确定每一个位置上的数属于哪一种类型. 解题思路:先求出每一个位置选的情况下的最长LIS,由于開始 ...
随机推荐
- 【杂文】C++头文件加速
[杂文]C++头文件加速 骚年,冲钱送开挂哦,可以助你超神于OI战场 如果你发现你的暴力超时了的话,可以尝试用一下头文件加速,说不定就过了呢! #pragma once//只编译一次 #pragma ...
- Java多线程(一) Thread和 Runnable
http://www.cnblogs.com/lwbqqyumidi/p/3804883.html 1.继承Thread 2.实现Runnable接口 public class MyRunnable ...
- [APIO2007]动物园
题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 你是动物园的公共主管.你要做的是,让每个来动物园的人都尽可能高兴.今天有一群小朋 ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Train Seats Reservation
You are given a list of train stations, say from the station 11 to the station 100100. The passenger ...
- ASP.NET MVC应用程序中支持用户使用腾讯QQ和微信以及新浪微博的第三方登录
什么是第三方授权登录,就是一些大家都会有的帐号如QQ.微信.淘宝.微博等账户.通过那些巨头公司提供的api直接实现登录. 当然,我们是不可能得到你的用户名和密码的.不了解的人,可能会存在这个疑虑.我们 ...
- log4net 简易封装
using log4net; using log4net.Appender; using log4net.Config; using log4net.Core; using log4net.Layou ...
- C#基础 特殊集合
//stack 干草堆 //先进后出 进 push 出 pop //初始化 //Stack ss = new Stack(); //ss.Push(1); //ss.Push(2); //ss.Pus ...
- Quartz.Net学习笔记(1)-完整的例子
一.开发环境 系统:Win10 编译器:VS2013 .Net版本:4.5 Quartz版本:2.3.3 二.涉及程序集 Common.Logging.Core.dll Common.Logging. ...
- 6.13---shiro
- 第八届蓝桥杯省赛C/C++ A组第4题 方格分割
参考了http://blog.csdn.net/y1196645376/article/details/69718192,这个大哥的思路很巧妙. 思路: dfs. 实现: #include <i ...