USACO44 TimeTravel 时间旅行(链表)
2024-08-27 22:49:49
第一眼看到这题,woc,这不是主席树!?旁边HZ也表示同意,然后cGh队长就慢悠悠的过来:“想什么,USACO会有主席树!?”
↓打脸不解释,大家可以去%ta的博客(这样ta就不会D飞我了~)http://blog.csdn.net/cgh_andy/article/details/53012348
既然师兄都说链表了,如果用主席树(就是可持久化线段树啦)水,不是很不给面子......
所以就学了一发,果然又快又短~其实代码很好理解的(强行引用)
我们设c[i]为i位置最近买的牛 f[i]表示上一个状态是哪个位置
对于三个操作 买:c[i]=x f[i]=i-1
卖:c[i]=c[ f[i-1] ] f[i]=f[ f[i-1] ]
跳:c[i]=c[k-1] f[i]=f[k-1]
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int f[],c[];
char ss[];
int main()
{
freopen("ttravel.in","r",stdin);
freopen("ttravel.out","w",stdout);
int n,x;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",ss+);
if(ss[]=='a')
scanf("%d",&x), f[i]=i-, c[i]=x;
else if(ss[]=='s')
f[i]=f[f[i-]], c[i]=c[f[i-]];
else
scanf("%d",&x), f[i]=f[x-], c[i]=c[x-];
if(c[i]!=)printf("%d\n",c[i]);
else printf("-1\n");
}
return ;
}
最新文章
- WPF&#39;s Style BasedOn
- 去年做了什么?OA。
- 20145218&;20145240 《信息安全系统设计基础》实验三 实时系统的移植
- jquery插件-表单验证插件-validator对象
- 电话连线(codevs 1003)
- ECS 安装redis 及安装PHPredis的扩展
- 如何配置DNS服务器(局域网——域名指向某个IP地址)
- [html5] 学习笔记-bootstrap介绍
- C# Async/await 异步多线程编程
- typeof关键字的作用
- 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结
- SQL Server中将多行数据拼接为一行数据(一个字符串)
- uCos-II中任务的同步与通信
- 【.NET Core项目实战-统一认证平台】第十章 授权篇-客户端授权
- Git错误merge怎么办?
- eventproxy 介绍这款好用的工具,前端事件式编程的思维
- 创建servlet程序知识点详解---servlet-day03
- c++中运算符重载
- C#7.2——编写安全高效的C#代码
- Java之使用HttpClient发送GET请求