捞一把(
by JinBridge @ 2020-10-28 22:10:58
@[JinBridge](/user/72764) 先离散化,分别找出a,b数组第几个数是第几大,然后对应着输出来
是这个意思么
by Mcggvc @ 2020-10-29 18:44:40
@[Mcggvc](/user/84066) 发现zzh大佬
是的(
可是怎么写啊
by JinBridge @ 2020-10-29 19:50:52
@[JinBridge](/user/72764) 用树状数组,如果一个数离散化之后是i,就在i的位置+1,然后再遍历一遍,对于一个数j,树状数组中j的前缀和+1就是j在这一串数中的排名
我菜菜
by Mcggvc @ 2020-10-29 20:20:49
@[Mcggvc](/user/84066) 啊这
怎么个离散法(
求个代码
另外你们啥时候集训(
by JinBridge @ 2020-10-29 20:41:23
@[JinBridge](/user/72764) 没消息,不知道
by Mcggvc @ 2020-10-29 23:41:38
@[JinBridge](/user/72764)
应该是这样吧,不知道有没有问题
```cpp
const int N = 1000;
int a[N], b[N], n, fa[N], fb[N];
int main() {
scanf("%d", &n);
vector<int> tmp;
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
tmp.push_back(a[i]);
}
sort(tmp.begin(), tmp.end());
unique(tmp.begin(), tmp.end());
for(int i = 1; i <= n; i++) {
int p = a[i];
a[i] = lower_bound(tmp.begin(), tmp.end(), a[i]) - tmp.begin() + 1;
fa[a[i]] = p;
}
tmp.clear();
for(int i = 1; i <= n; i++) {
scanf("%d", &b[i]);
tmp.push_back(b[i]);
}
sort(tmp.begin(), tmp.end());
unique(tmp.begin(), tmp.end());
for(int i = 1; i <= n; i++) {
int p = b[i];
b[i] = lower_bound(tmp.begin(), tmp.end(), b[i]) - tmp.begin() + 1;
fb[b[i]] = p;
}
for(int i = 1; i <= n; i++) {
printf("%d ", fb[a[i]]);
}
return 0;
}
```
by Mcggvc @ 2020-10-29 23:42:18