博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2828 线段树
阅读量:6087 次
发布时间:2019-06-20

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

   

     对方法不理解透彻!照搬是没有用的,要彻底理解。一些特殊情况没出什么问题。但一当到大量数据的测试时,WA了!哎,幸亏慢慢找还能找出来,不然我今晚就耗在这睡觉都睡不好了。嘿嘿!

    好了,最近这段时间对并查集,线段树,树状数组的学习就先告一段落了。总的来说这段时间的成效还是不错的哦。明天开始我要进入关于搜索的学习,加油吧,孩子。继续学习,继续刷分去吧!呼呼~

 

#include 
#include
#include
#define MAXN 200200 using namespace std; struct seg_tre{
int l,r; int cnt; }Node[3*MAXN]; struct person{
int pos,val; }P[MAXN]; int N,i; int ans[MAXN]; int Mid(int step){
return (Node[step].l+Node[step].r)/2; } void Build(int step,int l,int r){
Node[step].l=l; Node[step].r=r; Node[step].cnt=r-l+1; if(l==r) return; Build(2*step,l,Mid(step)); Build(2*step+1,Mid(step)+1,r); } void Insert(int index,int pos){
Node[index].cnt--; if(Node[index].l==Node[index].r) {
ans[Node[index].l]=P[i].val; return; } if(pos<=Node[2*index].cnt) Insert(2*index,pos); else Insert(2*index+1,pos-Node[2*index].cnt); //因为这里WA了N次,呜呜。。。是减去Node[2*index].cnt,不是减去左边的。 //说明思路还不是很清晰!!不理解彻透! } int main() {
freopen("acm.in","r",stdin); while(scanf("%d",&N)!=EOF){
Build(1,1,N); for(i=1 ;i<=N ;i++){
scanf("%d%d",&P[i].pos,&P[i].val); } for(i=N ;i >0 ;i--){
Insert(1,P[i].pos+1); } for(i=1 ;i

 

转载地址:http://snvwa.baihongyu.com/

你可能感兴趣的文章
什么是区块链?超级账本 Brian Behlendorf 从五个方面教你认识
查看>>
Linux中的帮助功能
查看>>
针对Android的Pegasus恶意软件版本和针对iOS的有什么不同?
查看>>
全局探色器
查看>>
Hive Export和Import介绍及操作示例
查看>>
http://mongoexplorer.com/ 一个不错的 mongodb 客户端工具。。。
查看>>
上传jar包到nexus私服
查看>>
Why Namespace? - 每天5分钟玩转 OpenStack(102)
查看>>
Project:如何分析项目中的资源分配情况
查看>>
HDU 4803 Poor Warehouse Keeper (贪心+避开精度)
查看>>
小错误汇总
查看>>
Spring源码系列 — Envoriment组件
查看>>
java正则表达式去除html标签,Java中正则表达式去除html标签
查看>>
使用Cobbler批量部署Linux操作系统
查看>>
zabbix企业应用之服务端与客户端的安装
查看>>
实例讲解遗传算法——基于遗传算法的自动组卷系统【理论篇】
查看>>
无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证
查看>>
Bat相关的项目应用
查看>>
Django为数据库的ORM写测试例(TestCase)
查看>>
web.xml中的contextConfigLocation在spring中的作用
查看>>