题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1034

一开始想了个很麻烦的贪心做法,对于每个 a[i],找第一个大于它的 b 匹配……

然后WA...因为这样好像没有利用不能第一次匹配的值使答案更优;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int const maxn=1e5+;
int n,a[maxn],b[maxn],mx,mn;
bool vis1[maxn];
priority_queue<int>q;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&b[i]);
sort(a+,a+n+); sort(b+,b+n+);
int t=;
for(int i=;i<=n;i++)
{
while(b[t]<=a[i]&&t<=n)q.push(b[t]),t++;
if(t>n)break;
vis1[i]=; t++;
}
for(int i=;i<=n;i++)
{
if(vis1[i])continue;
int x=q.top(); q.pop();
if(a[i]==x)mn++;
else mn+=;
}
memset(vis1,,sizeof vis1);
while(q.size())q.pop();
t=n;
for(int i=n;i;i--)
{
while(b[t]>=a[i]&&t)q.push(-b[t]),t--;
if(!t)break;
vis1[i]=; t--; mx+=;
}
for(int i=n;i;i--)
{
if(vis1[i])continue;
int x=-q.top(); q.pop();
if(a[i]==x)mx++;
}
printf("%d %d",mx,mn);
return ;
}

优美的正解贪心不是全局考虑,而是每次考虑最大值和最小值;

如果最小值能盖过对方的最小值或最大值能盖过对方的最大值,就直接进行;

不行就用自己的最小值匹配对方的最大值,让答案最优。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const maxn=1e5+;
int n,a[maxn],b[maxn];
int solve(int a[],int b[])
{
int ans=,l1=,l2=,r1=n,r2=n;
while(l1<=r1&&l2<=r2)
{
if(a[l1]>b[l2])ans+=,l1++,l2++;
else if(a[r1]>b[r2])ans+=,r1--,r2--;
else ans+=(a[l1]==b[r2]),l1++,r2--;//
}
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&b[i]);
sort(a+,a+n+); sort(b+,b+n+);
printf("%d %d",solve(a,b),*n-solve(b,a));
return ;
}

最新文章

  1. WebService 学习之路(一):了解并使用webService
  2. Android 一些基本组件的使用
  3. linux挂载数据盘
  4. wamp的配置
  5. .net mvc Bundle 问题解决方案
  6. MyEclipse8.5集成Tomcat7
  7. 一致性hash应用到redis
  8. C C++实现创建目录
  9. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)5-----Assembly.Unload
  10. android 62 手机存储目录的划分
  11. JDFS:一款分布式文件管理实用程序第二篇(更新升级、解决一些bug)
  12. 为什么内部类访问的外部变量需要使用final修饰
  13. java泛型基础、子类泛型不能转换成父类泛型
  14. 用weexplus从0到1写一个app
  15. 开源WHMCS支付宝当面付和即时到账插件
  16. 手把手教你用 Git(转)
  17. Epoll为我们带来了什么
  18. 使用div实现progress进度条
  19. Fidder详解之抓包
  20. web特点

热门文章

  1. java攻城师之路--复习java web之servlet
  2. css图片高清适配
  3. 用Grunt进行CSS文件压缩
  4. JavaScript面试题链接汇总
  5. cocos creator游戏适配这事
  6. Luogu P1041 [2003NOIP提高组]传染病控制
  7. -------------Django-----URLS路由
  8. bytes类型和python中编码的转换方法
  9. 小白神器 - 一篇博客学会CSS
  10. 《hello-world》第八次团队作业:Alpha冲刺-Scrum Meeting 1