離散化 洛谷 P1097 統計數字

2021-10-01 15:45:49 字數 2236 閱讀 3386

這個是可以處理重複元素的離散化方式(所以才可以用來解這道題)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

typedef

long

long ll;

const

int maxn =

2e5+5;

const

int maxm =

1e8+1;

int a[maxn]

, t[maxn]

;int disc[maxn]

;int num[maxn]

;int n;

intmain()

sort

(t, t + n)

;int len =

unique

(t, t + n)

- t;

for(

int i =

0; i < n; i ++

)for

(int i =

0; i < len; i ++

)//其實0-len就是t[i]離散化後的值了

printf

("%d %d\n"

, t[i]

, num[i]);

}return0;

}

最近發現乙個別的寫法,差也差不多,不過比以前的好看一些(個人覺得)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define char char

using

namespace std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

int maxn =

2e5+5;

int n;

int a[maxn]

;vector<

int>vt;

int num[maxn]

;int

main()

sort

(vt.

begin()

, vt.

end())

; vt.

erase

(unique

(vt.

begin()

, vt.

end())

, vt.

end())

;for

(int i =

0; i )int len = vt.

size()

;for

(int i =

0; i < len; i ++

)//這裡的i就是離散化後的值,肯定是和去重後排好序的vt是一一對應的

return0;

}

下面這個是不處理重複元素的離散化方式(不能用於本題)

int n;

struct node

friend

bool

operator

<

(node n1, node n2)

}a[maxn]

;int disc[maxn]

;int

main()

sort

(a, a + n)

;for

(int i =

0; i < n; i ++

) disc[a[i]

.id]

= i;

return0;

}

洛谷 P1097 統計數字

某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 10 9 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。輸入格式 輸入檔案count.in包含n 1行 第一行是整數n,表示自然數的個數 第2 n 1每行乙個...

洛谷 P1097 統計數字

題目鏈結 ac 1 include 2 include 3 include 4using namespace std 5 mapct number 6int main 716 for map iterator it ct number.begin it ct number.end it 1720 r...

模擬 洛谷 P1097 統計數字

某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 10 9 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。輸入格式 輸入檔案count.in包含n 1行 第一行是整數n,表示自然數的個數 第2 n 1每行乙個...