【POJ 2828】Buy Tickets
2024-08-26 07:49:05
【题目链接】
http://poj.org/problem?id=2828
【算法】
离线用线段树维护序列即可
【代码】
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXN 200010 int i,n;
int pos[MAXN],val[MAXN]; struct SegmentTree
{
struct Node
{
int l,r;
int cnt,val;
} Tree[MAXN<<];
inline void build(int index,int l,int r)
{
int mid;
Tree[index].l = l;
Tree[index].r = r;
Tree[index].cnt = r - l + ;
if (l == r) return;
mid = (l + r) >> ;
build(index<<,l,mid);
build(index<<|,mid+,r);
}
inline void update(int index)
{
Tree[index].cnt = Tree[index<<].cnt + Tree[index<<|].cnt;
}
inline void insert(int index,int pos,int val)
{
int mid;
if (Tree[index].l == Tree[index].r)
{
Tree[index].cnt = ;
Tree[index].val = val;
return;
}
mid = (Tree[index].l + Tree[index].r) >> ;
if (Tree[index<<].cnt >= pos) insert(index<<,pos,val);
else insert(index<<|,pos - Tree[index<<].cnt,val);
update(index);
}
inline void output(int index)
{
int mid;
if (Tree[index].l == Tree[index].r) printf("%d ",Tree[index].val);
else
{
output(index<<);
output(index<<|);
}
}
} T; int main()
{ while (scanf("%d",&n) != EOF)
{
for (i = ; i <= n; i++) scanf("%d%d",&pos[i],&val[i]);
T.build(,,n);
for (i = n; i >= ; i--) T.insert(,pos[i]+,val[i]);
T.output();
printf("\n");
} return ;
}
最新文章
- 怎样设置Word下次打开时跳转到上次阅读的位置
- php几个常用的概率算法(抽奖、广告首选)
- 用c++builder读取一个一行有多行变量的文件
- Java学习日记-2 零零碎碎
- [Javascript] Array methods in depth - some
- 在AcGIS随着大数据的生成DEM
- 自学Zabbix3.6.3-触发器triggers expression表达式
- 获取标准shell 命令的输出内容
- vue好用的图片查看器(v-viewer插件)
- SqlServer 案例:已有汽车每日行驶里程数据,计算其每日增量
- Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】
- python的map/reduce区别
- inline-block元素间隙问题原因及解决方法
- Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
- Java Maven项目的一些补充
- React 初识
- exe4j生成的exe反编译成java代码
- luigi操作hive表
- 把http网站改为Https网站
- spark介绍4(sparksql)ODBC(Windows)gc
热门文章
- [XJOI]noip43 T2多人背包
- Codeforces Round #447
- html中<;frameset>;标签,框架结构各窗口的父级菜单子级菜单关系
- 关于出现Failed to instantiate SLF4J LoggerFactory问题原因,解决办法
- SQL Server-语句类别、数据库范式、系统数据库组成
- MongoDB(二)创建更新删除文档
- 8 Python+Selenium操作测试对象
- HashMap以及ConcurrentHashMap
- JeeSite 4.0 规划(二)
- Ad_hoc_polymorphism 备份