Codeforces Round 905 (Div. 2) D1. Dances (Easy version)(贪心+二分)

Codeforces Round 905 (Div. 2) D1. Dances (Easy version)

思路:

对于 a,它的头默认为 1,则 a0 = 1

对于排完序的 ab 数组

最优为从 a 的结尾删除,从 b 的开头删除

二分保留位数,删去 nmid 位,即 a0 开始,bkk=nmid)开始

a0 ~ amid1bk ~ bn1 比较大小

若满足则右移mid,更新最大的满足保留位数

则最小删去数为 nl

#define int long long
#define ld long double
using namespace std;
const int N = 1e5 + 10;
int t, n, m;
int a[N],b[N];
bool check(int x)
{
int k = n - x;
for (int i = 0; i < x; i++)
{
if (a[i] >= b[i + k])
{
return false;
}
}
return true;
}
void solve()
{
cin >> n >> m;
for (int i = 1; i < n; i++)
{
cin >> a[i];
}
a[0] = 1;
for (int i = 0; i < n; i++)cin >> b[i];
sort(a, a + n);
sort(b, b + n);
int l = 0, r = n, mid=0;
while (l<r)
{
mid = (l + r+1) >> 1;//mid为a保留mid位,即删去n-mid位
if (check(mid))
{
l = mid;
}
else r = mid - 1;
}
cout << n - l << endl;
}
signed main()
{
//t = 1;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
posted @   ikunhuaji  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示