SPOJ-TTM To the moon】的更多相关文章

spoj传送门 vjudge传送门 主席树板子题. 支持历史版本的区间和,区间和,区间修改和时光倒流. 其中新奇一点的也只有区间修改了,这个东西直接标记永久化就行了. 如果想下传标记的话也行,需要在pushdown的时候新建一波节点. 代码: #include<cstdio> #include<cctype> #define ll long long #define N 100005 using namespace std; inline ll read(){ ll ans=0,w…
To the moon Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 8372    Accepted Submission(s): 1986 Problem Description BackgroundTo The Moon is a independent game released in November 2011, it is…
SP11470 TTM - To the moon C l r d:区间 \([L,R]\) 中的数都加 d ,同时当前的时间戳加 1. Q l r:查询当前时间戳区间 \([L,R]\) 中所有数的和 . H l r t:查询时间戳 \(t\) 区间 \([L,R]\) 的和 . B t:将当前时间戳置为 \(t\) 每次记下版本 \(times\) 保留标记-每次标记的时候直接加上\(tag_p\) 即可 #include <bits/stdc++.h> #define ls(x) ch[…
题意 概括为主席树区间加区间询问 题解 记录一下标记永久化的方法.每个点存add和sum两个标记,表示这个区间整个加多少,区间和是多少(这个区间和不包括祖先结点区间加) 然后区间加的时候,给路上每结点的sum更新,然后到达完整区间后更新add.询问的时候把路径上所有结点(不包括自己)的add加起来乘以区间长度,再加上sum 大概思想就是:区间内的加法用sum维护,区间外的加法询问的时候再考虑贡献 #include <algorithm> #include <cstdio> usin…
Vjudge题面 Time limit 2000 ms Memory limit 65536 kB OS Windows Source 2012 Multi-University Training Contest 5 SPOJ原版题面 Background To The Moon is a independent game released in November 2011, it is a role-playing adventure game powered by RPG Maker. Th…
给你一个系列\(a[1...n]\),要求可以区间求和,区间更新,也可以回溯过去 经典的主席树板子题,很久以前做的题了,代码太丑回炉重写 PS.题目标题To The Moon也是我最喜欢的游戏之一 这回纯手写(美化)了一遍,意外踩坑了orz 1.不考虑空间开销可使用确实可以pushdown而不使用标记永久化,具体可以pushdown的时候另开左右儿子新节点 2.一个简易可行的节点回收方案是每一个时间戳记录最后一个更新到的节点id 3.可持久化标记是某节点的lazy表示该节点以下的懒惰标记,注意不…
题面 vjudge Sol 主席树模板 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(1e5 + 5); const int __(5e6); IL int Input(){ RG int x = 0, z = 1…
嘟嘟嘟 主席树+区间修改. 以为是水题,写着写着发现区间修改标记下传会出问题,然后想了想发现以前做的只是单点修改. 那怎么办咧? 然后题解交了我标记永久化这个神奇的东西. 特别好理解,就是修改的时候直接把多的就加到这个区间上,直到找到区间满足l == L && r == R,这时候再打个标记.然后查询的时候每一次应该在加上lzy[now] * (R - L + 1)就吼了! 这么看来还是一个水题 #include<cstdio> #include<iostream>…
题目描述 给定一段长度为 \(N\) 的序列 \(a\) 以及 \(M\) 次操作,操作有以下几种: C l r d :将区间 \([l,r]\) 中的数都加上 \(d\) Q l r :查询当前时间戳区间 \([l,r]\) 中所有数的和 H l r t :查询时间戳为 \(t\) 时,区间 \([l,r]\) 中所有数的和 B t :将当前时间戳重置为 \(t\) 对于每一次询问操作,输出一行对应的答案. 时间戳初始值为 \(0\) 数据范围: \(1\leq N,M\leq 10^5\)…
P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集) 题目描述 如题,你需要维护这样的一个长度为 $N$ 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对于操作2,即为生成一个完全一样的版本,不作任何改动),就会生成一个新的版本.版本编号即为当前操作的编号(从1开始编号,版本…