E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
poj2182
POJ 2182/暴力/BIT/线段树
POJ2182
暴力/*题意:一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列。
weixin_30894389
·
2020-08-18 09:58
poj2182
线段树/线段数组+二分搜索
/***
poj2182
线段树*我在这里先做了一个n^2的算法,就是比较直观的,从后往前*最开始是最后一个数,比它小的数有k个,那最后一个数就是k+1*那推广,第i个数,它前面比它小的个数为kk,再加上之前后面已经出现的比它小的个数
northsnow_bupt
·
2020-08-09 22:25
poj
poj2182
Lost Cows(树状数组,二分)
LostCowsDescriptionN(2#defineN100005usingnamespacestd;intc[N],a[N],b[N],n;voidadd(intx,intval){while(x0){s+=c[x];x-=x&-x;}returns;}intfind(intx){intl=1,r=n;intp;while(l=x){p=mid;r=mid-1;}elsel=mid+1;}
zhanghaoxian1
·
2020-07-06 12:27
二分
树状数组
poj2182
之二分+树状数组
LostCowsTimeLimit:1000MSMemoryLimit:65536KTotalSubmissions:8712Accepted:5572DescriptionN(2=a[k]则right=mid,表示s[k]可以继续变小否则left=mid+1,表示s[k]必须变大才可能满足注意到这里的s[k]-1-num>=a[k]则right=mid,为什么不直接s[k]-1-num==a[k
星天93
·
2020-07-06 09:10
树状数组
POJ2182
题解——线段树
POJ2182
题解——线段树2019-12-20byjuruoOIer1.线段树简介(来源:百度百科)线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点
Warframe-Gauss
·
2019-12-20 19:00
poj2182
(树状数组+二分)
题意:给一个数n,然后n-1行,每行一个数q,第i个数qi代表第i+1头牛前面有qi头牛编号比它小,求所有牛的编号。因为只有最后一头牛编号是确定的,所有从后往前,每次用二分找到数字,并用树状数组确定和存储。#include#include#include#includeusingnamespacestd;constintsz=8005;inta[sz],c[sz],ans[sz],n;intlow
dukig
·
2019-04-11 00:25
二分法
树状数组
POJ2182
(Lost Cows)
最近在写遗传算法求TSP时看到了grefenstette编码,于是想起了这个题目,这题我原来是用线段树写的C语言提交的,用时157ms,刚用树状数组+二分写用C++提交只跑了47ms,感觉快了不少。 这题数学模型是:现有一个1到n的一个被打乱的排列,告诉你每个数的左边有多少个数比它小,显然第一个数左边没有比它小的数,求每个位置上的数。 grefenstette编码差不多,只是把左边改成了右边再
·
2015-11-12 22:40
poj
poj2182
Lost Cows
1 #include<stdio.h> 2 #define N 8010 3 struct node{ 4 int l,r; 5 int len;//len用来存放某一段数据的个数 6 }tree[N<<1]; 7 int s[N],result[N]; 8 void build(int l,int r,int i) 9
·
2015-11-07 13:11
poj
poj2182
题意:1~n,乱序排列,告诉每个位置的前面的数字中比它小的数的个数,求每个位置的数字是多少 分析:用树状数组来做,第i位如果是1,表示i在数列中的位置已经确定。全部读入到f[]后,从最后向前依次求出是几,因为每次对于未确定的最后一个数来说是可以根据它前面有多少数字比它小以及之前确定的数字(在它后面的数字)而确定它是几的。二分查找当前位置填几,设这个数字为a,应满足树状数组求和结果sum(a),即
·
2015-11-07 12:20
poj
POJ2182
Lost Cows 树状数组
一群牛,编号为1到n,但是编号乱了,已知每只牛的前面有多少只编号比其小,求出牛的编号。 插点问段。 这道题要从后面反推回来,比如最后的一只牛,知道有a只编号比它小,则它的编号为a+1。 update 更新已经确定的编号, sum(i) 查询已经确定的编号中(后面的牛的编号都确定了),有多少个比i小。 1 #include<cstdio&
·
2015-10-28 08:49
树状数组
POJ2182
Lost Cows 线段树单点更新
题目链接:http://poj.org/problem?id=2182题目大意:有编号为1到n的n头牛按照某一编号排列,现在他们的顺序打乱了,FJ只记得每头牛前面有多少个牛的编号比它大,让还原出n头牛的原始队列。分析:对于最后一头牛来说,他前面编号比他大的牛的数目+1,就是它本身的编号,然后我们把它的编号移除,这样,对于倒数第二只牛,我们仍然可以这样做来得到它的编号,至于实现上,我们用线段是来纪录
AC_Gibson
·
2015-10-20 11:00
poj2182
(单点更新)
len[rt]表示当前树中有多少个空位;还有就是在网右子树走的时候一定要减掉左子树的空位数目。/***************************************** Author:Crazy_AC(JamesQi) Time:2015 FileName: *****************************************/ //#pragmacomment(linke
KIJamesQi
·
2015-09-30 16:00
线段树
单点更新
Lost Cows(线段树
POJ2182
)
LostCowsTimeLimit:1000MSMemoryLimit:65536KTotalSubmissions:10354Accepted:6631DescriptionN(2 #include #include #include #include #include #include #include usingnamespacestd; typedeflonglongLL; intT
huayunhualuo
·
2015-09-06 15:00
poj2182
题目大意:有n头牛,给出从第二头牛开始每头牛前面有多少头牛编号比自己小。求牛的编号。分析:每次最后一头牛的编号为当前可用编号中排在第a[i]+1的数。-------->线段树O(nlogn)维护一个区间内还有多少个数可以用(因为要求可以用的第k个数)。#include #include #include #include usingnamespacestd; structnode{ intl,r,
zz_ylolita
·
2015-09-01 23:00
线段树
poj2182
Lost Cows (线段树)
传送门大意:有一个1-n的排列,数据给出从第二个到第n个数中的每一个数前面有几个数比这个数小,要求还原这个1-n的排列思路:最近做这种题好像有点感觉了,很自然的想到,我们可以从最后一个数来倒推,一直推出第一个过后就可以完事了。这样的话,我们很容易写出一个N²的算法。但作为一名OIer,我们要求上进,所以我们就会想,可不可以优化一下呢。其实我们发现,在找前面出现了几个比目标值小的操作很冗余,我们可以
geng4512
·
2015-08-16 14:00
poj2182
之二分+树状数组
LostCowsTimeLimit: 1000MS MemoryLimit: 65536KTotalSubmissions: 8712 Accepted: 5572DescriptionN(2=a[k]则right=mid,表示s[k]可以继续变小 否则left=mid+1,表示s[k]必须变大才可能满足 注意到这里的s[k]-1-num>=a[k]则right=mid,为什么不直接s[k]-1-
xingyeyongheng
·
2014-03-10 19:00
POJ2182
:Lost Cows(单点)
DescriptionN(2 #include #include usingnamespacestd; intn,ans[1000000],s[1000000]; structnode { intl,r,n; }a[1000000]; voidinit(intl,intr,inti) { a[i].l=l; a[i].r=r; a[i].n=r-l+1;//该
libin56842
·
2013-10-25 15:00
线段树
poj
poj2182
(二分+树状数组)
LostCowsTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:8341 Accepted:5320DescriptionN(2 #include #include usingnamespacestd; constintMAXN=8000+100; intn; intC[MAXN],Lowbit[MAXN],data[MAXN],ans[M
xj2419174554
·
2013-08-27 17:00
数据结构
线段树
树状数组
Lost Cows
poj2182
线段树
本题若按正序思考,则没什么头绪,但如果我们倒着看会发现,从后向前每一个数字可以找出一头牛。另外定位一头牛的编号后,为了确定下一头牛,我们需要删除这头牛的编号,即需要区间动态查询,所以可以选择线段树。思路:可以用每个节点记录该区间中母牛的数目,然后在这棵树中,已知一个节点前面比它小的节点数,我们就可以同过线段树二分快速查找了。 #include #include #include using
HELLO_THERE
·
2013-01-02 19:00
poj2182
Lost Cows
题意:对于样例5 1 2 1 0意思是有5个数,然后第一个0省略,实质的序列是01210要求输出的序列为res[1]res[2]res[3]res[4]res[5]那么,对于res[2]来说,他前面有1个比他小的,对于res[3]来说,他前面有2个比他小的,对于res[4]来说,他前面有1个比他小的,对于res[5]来说,他前面有0个比他小的,这5个数为12345要求输出res序列我的做法:对于1
zhangwei1120112119
·
2012-11-01 19:00
POJ2182
Lost Cows
原题链接:http://poj.org/problem?id=2182线段树。从后往前寻找,首先是找第a[n]大的数,找到后记录到答案数组里并删除改叶子节点,然后在剩下的数字中再找a[n-1]大的数,直到n次寻找完成。ViewCode1#include 2#include 3#definelson(cur=cnt) 31query(lson,cnt,loc); 32else 33quer
·
2012-10-11 10:00
poj
POJ2182
HDU2711 Lost Cows
用线段树来做,我们来看看实例数据01210 (关于第一个0请看题目要求)从后面往前插. 0,在1,2,3,4,5中第0个,即11,在2,3,4,5中第1个,即32,在2,4,5中第2个,即51,在2,4中第1个,即40,在2中第0个,即2故可以用线段树来做.NODE中的val指的是节点中[l,r)空余的位置./********************************************
neofung
·
2012-01-30 21:00
POJ2182
Lost Cows(线段树)
线段树找第K大数,每个结点记录下面还没有找过的数的数目len,当查找第K大数的时候,看它左子树的len值是否大于K,如果大于说明左子树能够容纳K个数,否则在它的右子树上找K-左子树的len大数。#includestructnode{ intl,r; intlen;}tree[4*8080];intd1[8080];intans[8080];voidbuild_tree(
chenqiangjsj
·
2010-11-05 09:42
职场
休闲
poj2182
第K大数
线段数
POJ2182
Lost Cows(线段树)
线段树找第K大数,每个结点记录下面还没有找过的数的数目len,当查找第K大数的时候,看它左子树的len值是否大于K,如果大于说明左子树能够容纳K个数,否则在它的右子树上找K-左子树的len大数。#includestructnode{ intl,r; intlen;}tree[4*8080];intd1[8080];intans[8080];voidbuild_tree(
chenqiangjsj
·
2010-11-05 09:42
职场
休闲
第K大数
poj2182
线段数
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他