LOJ 534 花团(线段树+dfs栈)
题意
思路
又是复杂度错误的一题,\(O(n^2\log n)\) 能过 \(15000\) 。
虽然看起来强制在线,其实是一道假的在线题。首先按时间建立线段树,先序遍历整棵树,到叶子时进行更新并回答询问。
更新时将物品当做标记,打到线段树上 ,遍历到一个节点时,都在上面做背包,往儿子走时将背包数组拷贝下来,到另一个儿子重新拷贝一次,故背包个数和深度相同。
询问时由于已经维护好了目前的背包,可以直接询问。
这就是\(\text{dfs}\) 栈的思路,在 \(\text{dfs}\) 时维护一个栈,直接将父亲的信息拿下来使用。
代码
#include<bits/stdc++.h>
#define FOR(i,x,y) for(int i=(x),i##END=(y);i<=i##END;++i)
#define DOR(i,x,y) for(int i=(x),i##END=(y);i>=i##END;--i)
#define x first
#define y second
typedef long long LL;
using namespace std;
typedef pair<int,int> pii;
const int N=15005;
const int LOGN=18;
struct Knapsack
{
LL dp[N];int n;
LL &operator [](const int x){return dp[x];}
void reset(int _n){n=_n;memset(dp,-1,sizeof(dp));dp[0]=0;}
void Zo(int v,int w){DOR(i,n,v)if(dp[i-v]!=-1)dp[i]=max(dp[i],dp[i-v]+w);}
};
Knapsack Ks[LOGN];
vector<pii>A[N<<2];
int q,maxv,T;
LL lastans;
void update(int k,int L,int R,int v,int w,int l,int r)
{
if(L<=l&&r<=R){A[k].push_back(pii(v,w));return;}
int mid=(l+r)>>1;
if(L<=mid)update(k<<1,L,R,v,w,l,mid);
if(R>mid)update(k<<1|1,L,R,v,w,mid+1,r);
}
void solve(int k,int d,int l,int r)
{
Ks[d]=Ks[d-1];
FOR(i,0,(int)A[k].size()-1)Ks[d].Zo(A[k][i].x,A[k][i].y);
if(l==r)
{
int op,v,w,e;
scanf("%d",&op);
if(op==1)
{
scanf("%d%d%d",&v,&w,&e);
v-=T*lastans,w-=T*lastans,e-=T*lastans;
if(l+1<=e)update(1,l+1,e,v,w,1,q);
}
else
{
scanf("%d",&v);
v-=T*lastans;
if(Ks[d][v]==-1){puts("0 0");lastans=0;}
else{printf("1 %lld\n",Ks[d][v]);lastans=(Ks[d][v]^1);}
}
return;
}
int mid=(l+r)>>1;
solve(k<<1,d+1,l,mid);
solve(k<<1|1,d+1,mid+1,r);
}
int main()
{
scanf("%d%d%d",&q,&maxv,&T);
Ks[0].reset(maxv);
solve(1,1,1,q);
return 0;
}
LOJ 534 花团(线段树+dfs栈)的更多相关文章
- 【题解】【LibreOJ Round #6】花团 LOJ 534 时间线段树分治 背包
Prelude 题目链接:萌萌哒传送门(/≧▽≦)/ Solution 如果完全离线的话,可以直接用时间线段树分治来做,复杂度\(O(qv \log q)\). 现在在线了怎么办呢? 这其实是个假在线 ...
- HDU 5692 线段树+dfs序
Snacks Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- Tsinsen A1505. 树(张闻涛) 倍增LCA,可持久化线段树,DFS序
题目:http://www.tsinsen.com/A1505 A1505. 树(张闻涛) 时间限制:1.0s 内存限制:512.0MB 总提交次数:196 AC次数:65 平均分: ...
- BZOJ_3252_攻略_线段树+dfs序
BZOJ_3252_攻略_线段树+dfs序 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏< ...
- 【XSY2534】【BZOJ4817】树点涂色 LCT 倍增 线段树 dfs序
题目大意 Bob有一棵\(n\)个点的有根树,其中\(1\)号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜 ...
- Codeforces 781E Andryusha and Nervous Barriers 线段树 单调栈
原文链接https://www.cnblogs.com/zhouzhendong/p/CF781E.html 题目传送门 - CF781E 题意 有一个矩形,宽为 w ,高为 h .一开始会有 w 个 ...
- 洛谷P4425 转盘 [HNOI/AHOI2018] 线段树+单调栈
正解:线段树+单调栈 解题报告: 传送门! 1551又是一道灵巧连题意都麻油看懂的题,,,,所以先解释一下题意好了,,,, 给定一个n元环 可以从0时刻开始从任一位置出发 每次可以选择向前走一步或者在 ...
- 线段树+单调栈+前缀和--2019icpc南昌网络赛I
线段树+单调栈+前缀和--2019icpc南昌网络赛I Alice has a magic array. She suggests that the value of a interval is eq ...
- 【bzoj4817】树点涂色 LCT+线段树+dfs序
Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. ...
随机推荐
- scrapy:get cookie from response
scrapy shell fetch('your_url') response.headers.getlist("Set-Cookie")https://stackoverflow ...
- Lua语言总结
[1]要退出交互模式和解释器,只需输入“os.exit()” [2]在交互模式执行程序块可以使用函数dofile,这个函数就可以立即执行一个文件.应用示例:dofile("f:/myLua/ ...
- vim 命令学习(基础篇)
[1]三种模式 vi的三种模式:命令模式.末行模式.编辑模式. 三种模式相互切换逻辑与命令图: 1.命令模式是vi的默认模式(即每打开一个文件时的初始模式). 2.命令模式切换至末行模式,末行模式切换 ...
- spring 源码导入eclipse
使用 gradle: ..opensource\v3.: 错误: 程序包org.apache.commons.pool.impl不存在 最后发现是依赖的包commons-pool没有配置.关键是刚用 ...
- flask模板应用-javaScript和CSS中jinja2
当程序逐渐变大时,很多时候我们需要在javaScript和CSS代码中使用jinja2提供的变量值,甚至是控制语句.比如,通过传入模板的theme_color变量来为页面设置主题色彩,或是根据用户是否 ...
- python二叉树的深度遍历之先序遍历流程图
- Linux基础命令---netstat显示网络状态
netstat netstat指令可以显示当前的网络连接.路由表.接口统计信息.伪装连接和多播成员资格等信息. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.open ...
- Python之pytest 基础
pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:1.简单灵活,容易上手:2.支持参数化:3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appn ...
- Markdown使用笔记
下载地址:http://markdownpad.com/ 简明版 Markdown 语法说明(简体中文版) 完整版 Markdown 语法说明(简体中文版) 官方文档:http://www.markd ...
- 结合sklearn的可视化工具Yellowbrick:超参与行为的可视化带来更优秀的实现
https://blog.csdn.net/qq_34739497/article/details/80508262 Yellowbrick 是一套名为「Visualizers」的视觉诊断工具,它扩展 ...