题解:P14593 [LNCPC 2025] 猫猫虫打 CF
I_am_kunzi · · 题解
P14593 题解
题目思路
首先题目中已经明确说了,这题的核心就是给
难度
隐藏分
如果两场比赛的四个参数
如果不满足上一段的条件,不妨分讨第一场比赛中哪个参数最大,这个参数一定大于第二场比赛中最小的参数,进一步只需要分讨这两组参数内大小关系。然后又很自然发现两组参数内大小关系确定了之后,只要再确定
那么……又绕回来了。不妨直接钦定
这样不知不觉就证明了这个贪心的正确性。
但此时漏讨论了
综上,如果
这次真的做完了,我们的思路非常流畅,没有任何跳步和猜结论的过程。
题目代码
上文讲解应该很清楚了,不需要注释大概也能看懂代码。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(pair < long long , long long > a , pair < long long , long long > b)
{
if(max(a.first , a.second) == max(b.first , b.second))
{
return a.first < b.first;
}
return max(a.first , a.second) < max(b.first , b.second);
}
pair < long long , long long > a[1000005];
int n;
signed main()
{
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
cin >> a[i].first >> a[i].second;
}
long long x = 0;
sort(a + 1 , a + n + 1 , cmp);
int ans = 0;
for(int i = 1 ; i <= n ; i++)
{
if(x <= a[i].first)
{
ans++;
x = max(x , a[i].second);
}
}
cout << ans << endl;
return 0;
}