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

考虑直接模拟田忌赛马...

  • 我的最小比你的大,直接上
  • 我的最大比你的大,直接上
  • otherwise,我小换你大

考虑最劣,由于每次比赛会产生且仅会产生\(2\)个积分,所以swap两个数组然后输出\(2n-ans\)即可。

实现的时候注意一次循环内只能产生一次比拼,不然可能导致一个人重复比赛两次...

//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; typedef long long ll;
inline int qr(){
register int ret=0,f=0;
register char c=getchar();
while(c<48||c>57)f|=c==45,c=getchar();
while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxn=1e6+5;
int data1[maxn],data2[maxn],n;
inline int getp(const int&x,const int&y){
if(x>y)return 2;
if(x==y)return 1;
return 0;
}
inline int getans(int*a,int*b){
int L1=1,L2=n,R1=1,R2=n,ret=0;
while(L1<=L2&&R1<=R2){
if(a[L2]>b[R2]) ret+=2,L2--,R2--;
else if(a[L1]>b[R1]) ret+=2,L1++,R1++;
else ret+=(a[L1]==b[R2]),L1++,R2--;
}
return ret;
}
int main(){
n=qr();
for(int t=1;t<=n;++t)data1[t]=qr();
for(int t=1;t<=n;++t)data2[t]=qr();
sort(data1+1,data1+n+1);
sort(data2+1,data2+n+1);
printf("%d %d\n",getans(data1,data2),2*n-getans(data2,data1));
return 0;
}

最新文章

  1. javascript图片展示墙特效
  2. tp中session用来做权限方法 (缓解mysql压力)
  3. DataGridView控件内建立日期选择编辑列
  4. 18.ssh远程双向无密码登陆
  5. Java List操作
  6. [转] 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文
  7. 5种IO模型
  8. Xcode 只有iOS device一个选项的解决办法
  9. Ghost win7 系统安装(虚拟机)
  10. ItextSharp代码示例
  11. SE 2014年5月23日
  12. UVa 12459 - Bees&amp;#39; ancestors
  13. 批量修改安卓apk包名
  14. NOIP2014-普及组复赛-第二题-比例简化
  15. Android中实现定时器的四种方式
  16. [js高手之路]设计模式系列课程-设计一个模块化扩展功能(define)和使用(use)库
  17. speedment 入门教程
  18. 区间DP,数位DP
  19. Django-GET和POST小记
  20. CyclicBarrier源码解读

热门文章

  1. 19-1 djanjo中admin的简单用法
  2. Knative Tracing 介绍
  3. 【codeforces 798D】Mike and distribution
  4. iOS学习--详解UIView的 contentStretch属性
  5. uni-app获取dom元素到顶部的距离以及操作dom元素的一些样式
  6. 高级PHP开发:利用PHPEMS搭建在线考试平台
  7. Project Euler Problem 15-Lattice paths
  8. [C#] WebClient性能优化
  9. uni-app学习记录06-Vuex简单使用
  10. python基础八之文件操作