51nod1485 字母排序

2021-08-15 15:40:53 字數 1494 閱讀 6435

題目看這裡

也是非常簡單的線段樹合併模板題了,雖然實際上最好的做法因該是開陣列合併(這樣是均攤o(1)的)

不過還算跑的快,第四

#pragma gcc opitmize("o3")

#pragma g++ opitmize("o3")

#include#include#include#define mid (l+r>>1)

#define n 100010

using namespace std;

struct tree s[

1700010

];int rt[n],n,m,cnt=

0,rev[n];

char c[n];

struct set

inline

void remove(

int x)

inline

void insert(

int x)

inline

int gpre(

int x)

return-1

; }

inline

int gsuc(

int x)

return n+1;

}} t;

inline

void ps(

int x)

void insert(

int l,

int r,

int& x,

int k)

int merge(

int l,

int r,

int r1,

int r2)

s[r1].l=merge(l,mid,s[r1].l,s[r2].l);

s[r1].r=merge(mid+

1,r,s[r1].r,s[r2].r);

ps(r1);

return r1;

}else return r1+r2;

}void split(

int l,

int r,

int x,

int k,

int& r1,

int& r2)

if(l==r)

if(s[s[x].l].s>=k)

else

}void join(

int l,

int r,

int o)

rev[l]=o;

}void cut(

int p)

void print(

int l,

int r,

int x,

int o)

if(o)

else

}int

main

()for

(int x=

1;x<=n;x=t.gsuc(x+1))

print(0,

25,rt[x],rev[x]);

}

51 字母統計 上交複試 c

輸入一行字串,計算其中a z大寫字母出現的次數 案例可能有多組,每個案例輸入為一行字串。對每個案例按a z的順序輸出其中大寫字母出現的次數。輸入dfjeiwfnqlef0395823048 jdlsfjdlsjfkk 輸出a 0 b 0c 0 d 3e 2 f 5g 0 h 0i 1 j 4k 2 ...

sdnu 1031 字母排序(拓撲排序的利用)

很明顯是拓撲排序的利用。注意事項 1.記錄下輸入到第幾個條件,產生矛盾或者已經排好序。2.在有矛盾且m n 1的情況下,不能輸出無法確定順序。如下 感覺寫的不夠簡練,暫且這樣了 include include include include includeusing namespace std ve...

分類按照拼音第一字母排序顯示實現

首先寫乙個提取品牌第一字母的函式 其實 這是最重要的 dict array a 0xb0c4,b 0xb2c0,c 0xb4ed,d 0xb6e9,e 0xb7a1,f 0xb8c0,g 0xb9fd,h 0xbbf6,j 0xbfa5,k 0xc0ab,l 0xc2e7,m 0xc4c2,n 0x...