博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2828 线段树 逆序插入
阅读量:5302 次
发布时间:2019-06-14

本文共 1022 字,大约阅读时间需要 3 分钟。

思路:

1.线段树 逆着插入就OK了
2.块状链表 (可是我并不会写)

//By SiriusRen#include 
#include
#include
using namespace std;int n,xx,tree[1000050],cnt[1000050];struct Node{
int num,wei;}node[1000050];void build(int l,int r,int pos,int id){ if(l==r){tree[pos]=1;if(id)printf("%d ",cnt[pos]);return;} int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1; build(l,mid,lson,id),build(mid+1,r,rson,id); tree[pos]=tree[lson]+tree[rson];}void insert(int l,int r,int pos){ if(l==r){tree[pos]=0,cnt[pos]=node[xx].wei;return;} int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1; if(tree[lson]<=node[xx].num)node[xx].num-=tree[lson],insert(mid+1,r,rson); else insert(l,mid,lson); tree[pos]=tree[lson]+tree[rson];}int main(){ while(~scanf("%d",&n)){ for(int i=1;i<=n;i++) scanf("%d%d",&node[i].num,&node[i].wei); build(1,n,1,0); for(xx=n;xx;xx--)insert(1,n,1); build(1,n,1,1),putchar('\n'); }}

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532276.html

你可能感兴趣的文章
关于easyUI实现自定义网格视图
查看>>
JAVA小知识点-Finally和Return的执行关系
查看>>
基站转经纬度
查看>>
构建ASP.NET网站十大必备工具
查看>>
a*寻路分析
查看>>
Android Activity的任务栈和四大启动模式
查看>>
table左边固定-底部横向滚动条-demo
查看>>
MySQL事件异常记录
查看>>
Redis 发布订阅
查看>>
Redis 事务
查看>>
中国创新教育交流会杂感
查看>>
逍遥笔记
查看>>
JSON 命令行工具
查看>>
博士生传给硕士生的经验
查看>>
ubuntu 查看软件包中的内容 (已经安装)
查看>>
iperf 一个测试网络吞吐的工具
查看>>
IOR and mdtest - measure parallel file system I/O performance at both the POSIX and MPI-IO level.
查看>>
文件系统测试工具整理
查看>>
好用的性能检测工具 - Glances
查看>>
tcp滑动窗口和读写缓冲区
查看>>