題意:
有n+1個僧侶,然後1號已經在塔里了,能力值是1e9,現在依次給你兩個數,
第乙個代表標號,第二個代表能力值,每次挑乙個在塔里的能力最接近的跟她打,如果能力相同的取小,然後把它扔進塔里
每次輸出兩個標號,乙個舊的,乙個新的。
思路:
當時就感覺很水,所以做著做著就…
變成了,離散化能力值,然後利用樹狀陣列維護,然後二分查詢值的最近點…【確實麻煩了】
++:
1. 字首和尋找比 x 小的 1 位置,其實就是找sum(x) - 1的最左.
然後查了一下果然還是stl強勢,直接set維護能力值就行了,然後用map對映一下能力值。
然後bin神說map也是排序的…
map< pair< int,int>,int>mp樹狀陣列維護**按照第一關鍵字排序。
it = mp.lower_bound(v);
#include
using
namespace
std;
typedef
long
long ll;
const
int n=1e5+10;
int node_id[n];
int node_w[n];
int ww[n];
int node[n];
int n;
vector
xs;int c[n];
int lowbit(int x)
void add(int x,int val)
}int sum(int x)
return ans;
}int solve1(int w)
return left;
}int solve2(int w)
return left;
}int main()
sort(xs.begin(),xs.end());
for(int i=0;i<=n;i++)
memset(c,0,sizeof(c));
add(node_w[0],1);
int i2,i1;
for(int i=1;i<=n;i++)
else}}
return
0;}
stl**
#include
using
namespace
std;
typedef
long
long ll;
int n;
mapmp;
sets;
set::iterator it;
int main()
else
s.insert(w);}}
return
0;}
hdu4585 平衡樹解法
平衡樹板子 找出前驅後繼節點比較一下 include include include include include include include include include include includeusing namespace std define ll long long cons...
HDU 4585 感受一下 set 的用法
這是第一次參加邀請賽的時候遇到的題目啊。當時全場過啊。自己就是不會啊。當時我還記得自己手寫一二叉堆。淚奔。這就是一平衡樹的題目,找前繼和後繼的。set足夠了。在 set 的 it 的時候要注意是不是是開頭 include include include include include include...
hdu 3887 樹狀陣列
給你一棵樹,每個節點都有個編號。讓你求乙個節點他的子樹中編號比他小的節點有幾個。編號唯一,從1 n,已給出根節點 解 樹狀陣列統計。轉化為線性序列。可以想到的是,若要統計乙個節點,那麼比它小的孩子必須先插完,然後統計就行了。對於乙個節點i來說,只要把所有x那麼對於所有節點來說也是這樣的,從一開始插,...