对顶堆80pt 求调qaq

P3871 [TJOI2010] 中位数

看到楼主在这俩月了没人回复很是心痛, 给你一个hack样例(doge) ```cpp 6 1 2 3 4 5 6 1 mid ``` 可以发现,应该是输出3的,但是你的代码输出的是4,问题大概在下面这部分代码 ```cpp else{ for(i=1;i<=(n/2)+1;i++) d.push(a[i]); for(i=i;i<=n;i++) x.push(a[i]); } ``` 这里如果是偶数的话,应该大根堆和小根堆的元素个数一样多,因为题目要求如果长度为偶数输出中间那两个当中较小的一个。改成下面的应该就行了。 ```cpp else { for (i = 1; i <= (n / 2); i++) d.push(a[i]); for (i = i; i <= n; i++) x.push(a[i]); } ```
by Acid_8arium_ @ 2024-01-18 11:19:14


@[Acid_8arium_](/user/1105092) %%%感谢犇犇qaq
by wase_sen @ 2024-01-18 15:33:48


|