這個是可以處理重複元素的離散化方式(所以才可以用來解這道題)
#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每行乙個...