LUOGU P2587 [ZJOI2008]泡泡堂
解题思路
刚开始先写了个田忌赛马的贪心,就是要是打不过就拿最弱的送死,30分。。。后来瞄了眼题解,发现这样是错的,比如说这样的数据 :
3
3 2
3 1
如果用田忌赛马的话,让2-3 3-1 ,这样只有两分,实际上应该是2-1 3-3 这样有3分
所以应该是强贪强,弱贪弱,都打不过拿去送。这里我用了个双端对列,懒得处理边界了。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int MAXN = 100005;
inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
}
int n,a[MAXN],b[MAXN],ans1,ans2;
int head=1,use[MAXN],cnt;
deque<int> Q[3];
int main(){
n=rd();
for(register int i=1;i<=n;i++) a[i]=rd();
for(register int i=1;i<=n;i++) b[i]=rd();
sort(a+1,a+1+n);sort(b+1,b+1+n);head=1;
for(register int i=1;i<=n;i++) Q[1].push_back(a[i]),Q[2].push_back(b[i]);
while(Q[1].size()){
if(Q[1].front()>Q[2].front()) {ans1+=2;Q[1].pop_front();Q[2].pop_front();}
else if(Q[1].back()>Q[2].back()) {ans1+=2;Q[1].pop_back();Q[2].pop_back();}
else {
if(Q[1].front()==Q[2].back()) ans1++;
Q[1].pop_front();Q[2].pop_back();
}
}
for(register int i=1;i<=n;i++) Q[1].push_back(a[i]),Q[2].push_back(b[i]);
while(Q[1].size()){
if(Q[1].front()<Q[2].front()) {ans2+=2;Q[1].pop_front();Q[2].pop_front();}
else if(Q[1].back()<Q[2].back()) {ans2+=2;Q[1].pop_back();Q[2].pop_back();}
else {
if(Q[2].front()==Q[1].back()) ans2++;
Q[1].pop_back();Q[2].pop_front();
}
}
ans2=2*n-ans2;
printf("%d %d",ans1,ans2);
return 0;
}
LUOGU P2587 [ZJOI2008]泡泡堂的更多相关文章
- 洛谷 P2587 [ZJOI2008]泡泡堂 解题报告
P2587 [ZJOI2008]泡泡堂 题目描述 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏 ...
- P2587 [ZJOI2008]泡泡堂
题目描述 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵双方的教练向组 ...
- 洛谷P2587 [ZJOI2008] 泡泡堂
题目传送门 分析:一道策略游戏题,要求最大期望得分和最小期望得分.首先分析最大,很显然是可以用一种类似于田忌赛马的思维来做,将两队的实力按照从大到小(其实从小到大也可以)排序,然后就按照顺序比较,可能 ...
- P2587 [ZJOI2008]泡泡堂 神仙贪心
思路:贪心 提交:1次(看了题解$QwQ$) 题解: 若我方最弱可以干掉对方最弱,则干: 否则若我方最强可以干掉对方最强,则干: 否则若我方最弱与对方最强平手,则平: 其实貌似一二条是可以互换的,主要 ...
- ZJOI2008泡泡堂BNB
1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1305 Solved: 676[Submit][Sta ...
- BZOJ [ZJOI2008]泡泡堂BNB 贪心
[ZJOI2008]泡泡堂BNB Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/proble ...
- bzoj 1034: [ZJOI2008]泡泡堂BNB 貪心
1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1398 Solved: 727[Submit][Sta ...
- BZOJ 1034 [ZJOI2008]泡泡堂BNB
1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1757 Solved: 928[Submit][Sta ...
- BZOJ 1034: [ZJOI2008]泡泡堂BNB( 贪心 )
贪心...用最弱的赢最弱的,用最强的赢最强的,否则用最弱的和最强的比... (贴个官方题解:将双方的选手均按从强到弱排序,然后第一次扫描尽可能用当前剩下的选手中能赢对手当前最强选手中最弱的一个去赢得胜 ...
随机推荐
- uploadify附件上传 传参
首先 在刚加载jsp时就加入上传方法,所以 formDate 中的参数 zFileName是页面刚加载时 exp1的值 ,后来通过js方法赋值不被读过来,如果 你想要获得这个值,可在 调用upload ...
- 08_jQuery对象初识(四)each循环、data(非常重要)
each: 不使用for循环答应jQuery对象,使用each: 退出整个each循环: 退出一次each循环: data:
- PKU--3211 Washing Clothes(01背包)
题目http://poj.org/problem?id=3211 分析:两个人洗衣服,可以同时洗,但是只能同时洗一种颜色. 要时间最短,那么每一种颜色的清洗时间最短. 转换为,两个人洗同一种颜色的衣服 ...
- ES6之主要知识点(六)数组
引自http://es6.ruanyifeng.com/#docs/array 1.扩展运算符(...) 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用 ...
- gulpfile.js demo
var config = require("./build.config") //获取build.config.js文件里的内容 var gulp = require(" ...
- elasticsearch 中文API 删除(四)
删除API 删除api允许你通过id,从特定的索引中删除类型化的JSON文档.如下例: DeleteResponse response = client.prepareDelete("twi ...
- JS播放视频代码
<div class="col-md-8"> <div id="moviecontainer"></div> </di ...
- mysql 索引优化,不走索引的原因
1.WHERE字句的查询条件里有不等于号(WHERE column!=…),MYSQL将无法使用索引 2.类似地,如果WHERE字句的查询条件里使用了函数(如:WHERE DAY(column)=…) ...
- CentOS7.4 安装JDK 步骤
1.先在官网下载jdk1.8的压缩文件 2.用putty将压缩文件拷到home目录下 3.新建一个/home/jdk1.8目录 : mkdir /home/jdk1.8 4.将压缩文件解压到hom ...
- httpclient遇到java.net.URISyntaxException: Illegal character in scheme name at index 0:
正准备按照大佬的解决办法处理, 看会一条回复,说url有空格 检查了一下,还真是有空格 去除url中的空格,问题解除