题目: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 ;
}

bzoj 1034 [ ZJOI 2008 ] 泡泡堂BNB —— 贪心的更多相关文章

  1. [ZJOI 2008]泡泡堂BNB

    Description 题库链接 双方 \(n\) 人,给出每人的战斗力,赢一场加 \(2\) 分,平局 \(1\) 分,失败不得分.求最大和最小的得分. \(1\leq n\leq 100000\) ...

  2. 【BZOJ 1034】[ZJOI2008]泡泡堂BNB

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1034 [题意] [题解] 如果己方最小的大于对方最小的(严格大于) 或己方最大的大于对 ...

  3. 【题解】BZOJ1034 [ZJOI2008]泡泡堂BNB(贪心)

    [题解]BZOJ1034 [ZJOI2008]泡泡堂BNB(贪心) 考虑直接模拟田忌赛马... 我的最小比你的大,直接上 我的最大比你的大,直接上 otherwise,我小换你大 考虑最劣,由于每次比 ...

  4. BZOJ 1034 泡泡堂BNB 贪心+简单博弈

    同样是今天做bzoj时做到的,感觉能力范围之内的就做了,也是蛮简单的 1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MB Su ...

  5. BZOJ 1034: [ZJOI2008]泡泡堂BNB( 贪心 )

    贪心...用最弱的赢最弱的,用最强的赢最强的,否则用最弱的和最强的比... (贴个官方题解:将双方的选手均按从强到弱排序,然后第一次扫描尽可能用当前剩下的选手中能赢对手当前最强选手中最弱的一个去赢得胜 ...

  6. BZOJ [ZJOI2008]泡泡堂BNB 贪心

    [ZJOI2008]泡泡堂BNB Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/proble ...

  7. [BZOJ1034][ZJOI2008]泡泡堂BNB 贪心

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3414  Solved: 1739 [Submit][ ...

  8. 【BZOJ1034】[ZJOI2008]泡泡堂BNB 贪心

    Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵 ...

  9. BZOJ 1034: [ZJOI2008]泡泡堂BNB 贪心+排序

    比较神奇的贪心 有点类似于田忌赛马. 如果我方最弱强于对面最弱,则直接最弱pk最弱. 如果我方最强强于对面最强,那么直接最强间pk. 否则,试着用我方最弱 pk 对方最强,看是否能打成平手. code ...

随机推荐

  1. 基于openstack平台的几种Cloud DB解决方案

    方案一.openstack 官方 trove解决方案 此方案进行过镜像的打包,由于网络问题,还未能成功实现 方案二.salt 或者ansible+ docker 由于 docker部署数据库,在数据库 ...

  2. 【译】x86程序员手册11- 4.1系统寄存器

    4.1 Systems Registers 系统寄存器 The registers designed for use by systems programmers fall into these cl ...

  3. python mongodb压力测试脚本

    $ pip install pymongo #!/usr/bin/env python #coding=utf-8 #Author: Ca0Gu0 from pymongo import MongoC ...

  4. 扩增子图表解读1箱线图:Alpha多样性

    箱线图 箱形图(Box-plot)又称为盒须图.盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图.因形状如箱子而得名.在宏基因组领域,常用于展示样品组中各样品Alpha多样性的分布 第一种情 ...

  5. table案例一

    实现效果: html <style> #mform{ margin: 10px; } #mtable{ border-collapse: collapse; } #mtable thead ...

  6. Sprinboot优雅配置监听,并记录所有启动事件

    在阅读Springboot启动源码的时候,发现Springboot自动启动listeners是通过uopeizhi文件配置的,本文就是采用Springboot方式自动装入listeners. 项目依赖 ...

  7. 云计算时代,你为什么一定要学Linux?

    云计算早已不是什么稀奇的概念,它的火爆让Linux运维工程师这个职业越来越重要.在当今各类云平台提供的系统中,Linux系统几乎毫无争议的独占鳌头,市场份额进一步扩张. 这也让Linux运维工程师职位 ...

  8. 在Excel表格中打字为何会被覆盖掉

    修改证件图片背景:https://www.cnblogs.com/liyanbin/p/9466746.html Insert键是插入和改写(覆盖)的开关如果当前处于改写(覆盖)模式,再按一下Inse ...

  9. html 报告页面 v1.2 批量数据生成表格

    html 报告页面 v1.2 批量数据生成表格 上代码: <!DOCTYPE html> <html lang="en"> <head> < ...

  10. Bullet:Python的函数中参数是引用吗?

    别的语言中关于函数有传值和传引用的区分. 关于此,流传很广的一个说法是 他们在现象的区别之一就是值传递后的变化,受到影响的就是引用,未受到影响的就是传值.   在学习中,也曾碰到过这个问题,网上关于这 ...