想贪心就是反复\(hack\)自己的过程

首先这很田忌赛马,但是又不完全一样

田忌赛马保证了所有马的实力不同,因此没有平局

田忌赛马的策略是当自己最强的马比不过对方最强的马的时候,就用自己最弱的马来自爆,在没有平局的情况下确实是最优的,因为我们总是要保证自己最强的马获得了胜利

但是这里有了平局

情况就变得不一样起来

还是从最弱的马开始考虑

如果这匹最弱的马能战胜对方当前最弱的马,那么就去战胜对方啊,绝对不亏

如果是平局或者是失败,那么我们就去考虑一下最强的两匹马,如果此时我方最强的马可以战胜对方最强的马,那么我们还用不到这匹最弱的马来自爆,所以先让我方最强战胜对方最强

如果最强的马不能赢,那么我们就只能用最弱的马来当炮灰了,我方最弱对对方最强,无非就是一场输或者平局,而这匹最弱的马本身也不能战胜其他马了(就算那匹可以战平对方最弱的马,为什么不让我方更强一些的马来获得一场胜利呢),所以就自爆为以后的马创造更好的机会好了

一个动态删除最大最小值的数据结构,懒得用数组和双指针了,于是用了\(multiset\)

代码

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<set>
#define re register
#define maxn 100005
int a[maxn],b[maxn];
int n;
std::multiset<int> s1,s2;
int ans;
inline int read()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-48,c=getchar();
return x;
}
int main()
{
n=read();
for(re int i=1;i<=n;i++) a[i]=read(),s1.insert(a[i]);
for(re int i=1;i<=n;i++) b[i]=read(),s2.insert(b[i]);
for(re int i=1;i<=n;i++)
{
std::multiset<int>::iterator j=s1.begin(),k=s2.begin();
if(*j>*k)
{
ans+=2;
s1.erase(j),s2.erase(k);
}
else
{
j=s1.end(),k=s2.end();
j--,k--;
if(*j>*k) ans+=2,s1.erase(j),s2.erase(k);
else
{
j=s1.begin();
if(*j==*k) ans++;
s1.erase(j),s2.erase(k);
}
}
}
std::cout<<ans<<" ";ans=0;
for(re int i=1;i<=n;i++) s2.insert(a[i]);
for(re int i=1;i<=n;i++) s1.insert(b[i]);
for(re int i=1;i<=n;i++)
{
std::multiset<int>::iterator j=s1.begin(),k=s2.begin();
if(*j>*k)
{
ans+=2;
s1.erase(j),s2.erase(k);
}
else
{
j=s1.end(),k=s2.end();
j--,k--;
if(*j>*k) ans+=2,s1.erase(j),s2.erase(k);
else
{
j=s1.begin();
if(*j==*k) ans++;
s1.erase(j),s2.erase(k);
}
}
}
std::cout<<(2*n-ans);
return 0;
}

【[ZJOI2008]泡泡堂】的更多相关文章

  1. ZJOI2008泡泡堂BNB

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1305  Solved: 676[Submit][Sta ...

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

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

  3. bzoj 1034: [ZJOI2008]泡泡堂BNB 貪心

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1398  Solved: 727[Submit][Sta ...

  4. BZOJ 1034 [ZJOI2008]泡泡堂BNB

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1757  Solved: 928[Submit][Sta ...

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

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

  6. 1034: [ZJOI2008]泡泡堂BNB

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3234  Solved: 1655[Submit][St ...

  7. 洛谷 P2587 [ZJOI2008]泡泡堂 解题报告

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

  8. bzoj千题计划122:bzoj1034: [ZJOI2008]泡泡堂BNB

    http://www.lydsy.com/JudgeOnline/problem.php?id=1034 从小到大排序后 最大得分: 1.自己最小的>对方最小的,赢一场 2.自己最大的>对 ...

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

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

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

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

随机推荐

  1. 小菜读书---《Effective C#:改善C#程序的50种方法》

    一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处: 2.在属性的get和set访问器重可使用lock添加多线程的支持. 二.readonly(运行时常量) ...

  2. 小菜庄园 Spring------图片的上传和下载

    1.图片的上传前台三个条件 文件上传页面的3个要求:            < 1.表单提交为post.mothod="post"            < 2.表单的 ...

  3. JRE“瘦身”&桌面程序集成JRE

    项目是一个桌面程序,程序文件不大,但运行jre有198 MB,因此需要"瘦身". jre包含bin.lib两部分,分别为93.6 MB.104 MB. 1.精简bin 运行桌面程序 ...

  4. git 命令合并分支代码

    git 命令合并分支代码 对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤: 1.进入要合并的分支(如开发分支合并到master,则进入master目录) git ...

  5. High Performance MySQL笔记:count

    在SQL中使用count()好像是非常自然的事情: SELECT COUNT(*) FROM TABLE_NAME; 有时候确实会想过,count(*)和单独的count(column_name)有什 ...

  6. 闲谈:乌云上那些 web-based 的 QQ 漏洞

    0×00 起始 昨日凌晨,看到爱尖刀团队发布了一条“腾讯客户端XSS,已第一时间提交至TSRC”的微博,心想,腾讯又出此类漏洞了.今日,由于有一位名叫“阿布”的同学将该漏洞发布到了乌云,引来不少争吵甚 ...

  7. EntityFramework(1)

    EntityFramework核心是EDM实体数据模型,该模型由三部分组成. (1) 概念模型,由概念架构定义语言文件(.csdl)来定义. (2) 映射,由映射规范语言文件(.msl)定义. (3) ...

  8. jQuery轮播图(二)利用构造函数和原型创建对象以实现继承

    本文是在我开始学习JavaScript继承时,对原型继承的一些理解和运用.文中所述的继承方式均是使用js特有的原型链方式,实际上有了ES6的类之后,实现继承的就变得十分简单了,所以这种写法现在也不在推 ...

  9. FormData js对象的介绍和使用

    FormData js对象的介绍和使用 FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台. 在使用ajax提交时,使用FormData对象可以减 ...

  10. 使用nodeJs安装Vue-cli (win10 使用管理员身份)

    TIP:win10下安装,使用管理员身份进行,否则会有权限限制. 1,安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(n ...