map就行了啊/kk
by AlbrecRoon @ 2021-11-16 19:29:04
想开点,也许别人的10行是只放了核心代码呢
by sslwyd @ 2021-11-16 19:33:07
@[我系人间](/user/459829) 数组开大点试试
by wangbinfeng @ 2021-11-16 19:33:21
@[AlbrecRoon](/user/174436) 感谢
by 我系人间 @ 2021-11-16 19:34:32
@[我系人间](/user/459829) ~~输中量,参解改~~
by wangbinfeng @ 2021-11-16 19:39:06
刚才稍微试了一下,打了45行。
思路:先对所有进行位置发球排序,要带着位置,然后对于每个询问,都进行一次二分查找,看能否找到准确打掉x个的位置。
核心代码:
inline bool cmp(pz q, pz p)
{
if (q.sl == p.sl) return q.wz < p.wz;
return q.sl < p.sl;
}
inline int lb(int x)
{
int l = 1, r = n;
while (l < r)
{
int mid = l + r >> 1;
if (a[mid].sl >= x) r = mid;
else l = mid + 1;
}
return r;
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i ++)
{
cin >> a[i].sl;
a[i].wz = i;
}
sort(a + 1, a + 1 + n, cmp);
cin >> q;
for (int i = 1, x; i <= q; i ++)
{
cin >> x;
int ans = lb(x);
if (a[ans].sl != x) ans = 0;
else ans = a[ans].wz;
cout << ans << endl;
}
return 0;
}
```
by sslwyd @ 2021-11-16 19:48:51
@[末日之光—战](/user/374701) 感谢,已经会了,但还是非常感激
by 我系人间 @ 2021-11-16 19:52:22
@[末日之光—战](/user/374701) 没事了,线下辅导他过了。
by wangbinfeng @ 2021-11-16 19:54:24
@[我系人间](/user/459829) flag会超数据大小
by a2021031403 @ 2022-07-01 22:25:32