zoukankan      html  css  js  c++  java
  • 1034: [ZJOI2008]泡泡堂BNB

    1034: [ZJOI2008]泡泡堂BNB

    链接

    分析:

      开始想的贪心是尽量小去胜或者平最小的,但是无法处理胜还是平的问题,比如3,5和4,5。。。

      正确的贪心:小的胜小的,大的胜大的,如果小的无法胜小的,大的无法胜大的,那么用A中小的去和B中大的比,相当于A中小的左移一位,然后和B小的比,B最大的右移一位,和A中最大的比。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 
     5 inline int read() {
     6     int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
     7     for (;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f;
     8 }
     9 
    10 const int N = 100100;
    11 int a[N],b[N];
    12 
    13 int work(int n,int *a,int *b) {
    14     int L1 = 1,R1 = n,L2 = 1,R2 = n,ans = 0;
    15     while (L1 <= R1 && L2 <= R2) {
    16         if (a[L1] > b[L2]) ans+=2, L1++, L2++;
    17         else if (a[R1] > b[R2]) ans += 2, R1--, R2--;
    18         else {
    19             ans += (a[L1] == b[R2]); L1++; R2--;
    20         }
    21     }
    22     return ans;
    23 }
    24 
    25 int main() {
    26     int n = read();
    27     for (int i=1; i<=n; ++i) a[i] = read();
    28     for (int i=1; i<=n; ++i) b[i] = read();
    29     sort(a+1,a+n+1);
    30     sort(b+1,b+n+1);    
    31     cout << work(n,a,b) << " " << 2 * n - work(n,b,a);
    32     return 0;
    33 }
  • 相关阅读:
    C语言寒假大作战02
    C语言寒假大作战01
    学习总结
    C语言I作业11
    C语言I作业10
    C语言I博客作业09
    C语言I作业08
    实验五、单元测试
    实验四 代码审查
    UML 建模工具的安装与使用
  • 原文地址:https://www.cnblogs.com/mjtcn/p/9268511.html
Copyright © 2011-2022 走看看