problem

洛谷链接

solution

田忌赛马孪生兄弟。

浙江选手最坏情况就是外省最好情况,所以本质上两个子问题是同一个做法。

相信所有人都是读完题后就有田忌赛马的思想了。(如果还没上过小学语文课的当我没说)

实力强的去虐实力菜的,而且为了自己队友实力考虑,肯定是把比自己菜的对手当中最强的整死。

假设两组实力相当的比赛,得分是 222,那么自己实力强的虐对方实力弱的,自己实力弱的送给对方实力强的虐,得分也是 222。所以这种打实力差的方式是不劣的。

但是这只是对于一个人的实力而言的最优方式。

因为平局的可能性,我们还需要统筹安排是哪个实力先出战。

在上述虐菜的前提下,我们还要尽可能地保留实力更强者,和外省的更强实力再一绝高下。

给一组数据帮助理解
2 4 10 10 10 9
1 3 5 7 8 9
最好得分:1-2 3-4 9-9 5'
所以不能先从实力强的开始去找菜鸡对手

所以我们应当按照实力从低到高匹配对手。

如果当前这名选手没有比他更菜的对手(最多可能有实力相当的对手)就暂时跳过。

最后剩下的若干名实力要么就是比对方菜的要么就是实力相当的。

这时候再来统计平局的分数。

不能将平局和虐菜放在一起,原因类似的有可能后面某个实力强的队友只能虐现在这个和自己实力相当的对手,那肯定是牺牲自己平局分数换取队友获胜分数。

给一组数据
1 3
1 10
最好得分:2

在考场上我的实现略丑,但本质是一样的。

时间复杂度 O(nlog⁡n)O(n\log n)O(nlogn),如果写个基排就能做到 O(n)O(n)O(n)。

应该不会有丝箔卡 log⁡\loglog 吧 …\dots…

code

#include <bits/stdc++.h>
using namespace std;
#define maxn 100005
int n, ans1, ans2;
bool vis[maxn];
int w1[maxn], w2[maxn];
multiset < int > s;int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ ) scanf( "%d", &w1[i] );for( int i = 1;i <= n;i ++ ) scanf( "%d", &w2[i] );sort( w1 + 1, w1 + n + 1 );for( int i = 1;i <= n;i ++ ) s.insert( w2[i] );for( int i = 1;i <= n;i ++ ) {auto it = s.lower_bound( w1[i] ); vis[i] = 1;if( it == s.begin() ) { vis[i] = 0; continue; }else -- it, s.erase( it ), ans1 += 2;}for( int i = n;i;i -- )if( ! vis[i] ) {if( *s.begin() == w1[i] ) ans1 ++;s.erase( s.begin() );}sort( w2 + 1, w2 + n + 1 );for( int i = 1;i <= n;i ++ ) vis[i] = 0, s.insert( w1[i] );for( int i = 1;i <= n;i ++ ) {auto it = s.lower_bound( w2[i] ); vis[i] = 1;if( it == s.begin() ) { vis[i] = 0; continue; }else -- it, s.erase( it );}for( int i = n;i;i -- )if( ! vis[i] ) {if( *s.begin() == w2[i] ) ans2 ++;else ans2 += 2;s.erase( s.begin() );}printf( "%d %d", ans1, ans2 );return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define maxn 100005
int n;
int w1[maxn], w2[maxn];int solve( int w1[], int w2[] ) {int ans = 0, l1 = 1, l2 = 1, r1 = n, r2 = n;while( l1 <= r1 and l2 <= r2 ) {if( w1[l1] > w2[l2] ) ans += 2, l1 ++, l2 ++;else if( w1[r1] > w2[r2] ) ans += 2, r1 --, r2 --;else ans += w1[l1] == w2[r2], l1 ++, r2 --;}return ans;
}int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ ) scanf( "%d", &w1[i] );for( int i = 1;i <= n;i ++ ) scanf( "%d", &w2[i] );sort( w1 + 1, w1 + n + 1 );sort( w2 + 1, w2 + n + 1 );printf( "%d %d\n", solve( w1, w2 ), (n << 1) - solve( w2, w1 ) );return 0;
}

[ZJOI2008]泡泡堂(田忌赛马贪心)相关推荐

  1. 【bzoj1034】[ZJOI2008]泡泡堂BNB 贪心

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

  2. HYSBZ/BZOJ 1034 [ZJOI2008] 泡泡堂BNB - 贪心

    题目描述 分析: 经典贪心题,跟田忌赛马没什么区别. 1. 以最小的代价尽量多的赢 2. 尽量多的平局 3. 剩下的注定要输了. #include<cstdio> #include< ...

  3. P2587 [ZJOI2008]泡泡堂 神仙贪心

    思路:贪心 提交:1次(看了题解$QwQ$) 题解: 若我方最弱可以干掉对方最弱,则干: 否则若我方最强可以干掉对方最强,则干: 否则若我方最弱与对方最强平手,则平: 其实貌似一二条是可以互换的,主要 ...

  4. bzoj 1034: [ZJOI2008]泡泡堂BNB(贪心)

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

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

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

  6. 【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1034 弱的比弱的强就用,强的比强的强就用: 否则弱的和强的比. 输的情况就是2n-ans(b,a), ...

  7. 洛谷P2587 [ZJOI2008]泡泡堂

    传送门 1368 泡泡堂 省队选拔赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解 题目描述 Description 第XXXX届NOI期间,为了加 ...

  8. Bzoj1034 [ZJOI2008]泡泡堂BNB

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2935  Solved: 1495 Description 第XXXX届NOI期间,为了加强各省选手 ...

  9. luogu P2587 [ZJOI2008]泡泡堂

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

最新文章

  1. 软件定义闪存存储系统关键技术
  2. isa 2006 下发布 owa
  3. boost::graph模块使用 read_graphviz 加载 GraphViz Dot 文本的示例 ,图转换为具有自定义属性的 BGL adjacency_list 图
  4. 【泛型】Generic 参数化类型 类型转换
  5. 聚焦效率与目标差距,数据才是远程办公的内核!
  6. web测试内容及工具经典总结
  7. 路径规划之 A* 算法 1
  8. 七月算法机器学习5 回归分析与工程应用
  9. python弧度转角度_Python中转换角度为弧度的radians()方法
  10. 服务器虚拟内存设置在什么盘,虚拟内存设置在哪个磁盘呢
  11. linux文件中出现 m,在linux中文件中^M符号的问题以及中文识别问题
  12. android studio(as)找不到手机
  13. PMP-PMBOK-培训(7)Initiating a Project and Preparing the Project Plan
  14. 敦煌文化背后的区块链,让你的莫高窟线上燃灯被“永久”点亮
  15. [附源码]JAVA+ssm计算机毕业设计餐厅点餐订餐系统(程序+Lw)
  16. 小米5x的Build属性
  17. 吴军,阅读与写作,01理解他人,什么是合格的阅读理解?
  18. 信用卡使用的诸多误区、技巧
  19. UE4 什么是蓝图,如何用来快速创建原型?
  20. memory cache 和 disk cache

热门文章

  1. 史上最严重的忘拿钥匙事件 | 今日最佳
  2. php上传预览源码,php批量上传五[带预览]-PHP源码
  3. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序
  4. inputstream是否一定要close_汽车加装行李架后,总被交警拦下,类似改装,是否一定要备案...
  5. skype linux 安装,Ubuntu 12.04 AMD64 安装 Skype
  6. win10+tomcat+php+配置环境变量配置,Win10系统Tomcat环境变量配置方法
  7. python爬取论坛付费内容_Python爬虫抓取论坛关键字过程解析
  8. 大脚战场插件怎么关闭_PM工具栏插件:HonmToolBar
  9. python迅雷_迅雷下载链接解析器。
  10. python交通标志识别_YOLOv3目标检测实战:交通标志识别