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

    题目描述里的非主流配图…

    这道题做法和田忌赛马差不多,先把自己和对手都排个序,只要按照下面的流程走就行了:

      1.尽量用自己最优的干掉对方最优的 ans+=2

      2.尽量用自己最矬的干掉对方最矬的 ans+=2

      3.用自己最矬的一个干掉对方最优的 ans+=(两者是否相同)? 1:0

    而自己最坏的情况,只要用对手最优的情况反着来一次。

     1 /**************************************************************
     2     Problem: 1034
     3     User: zhuohan123
     4     Language: C++
     5     Result: Accepted
     6     Time:252 ms
     7     Memory:2132 kb
     8 ****************************************************************/
     9  
    10 #include <iostream>
    11 #include <cstdio>
    12 #include <algorithm>
    13 using namespace std;
    14 int n,a[110000],b[110000];
    15 int main(int argc, char *argv[])
    16 {
    17     scanf("%d",&n);
    18     for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    19     sort(a+1,a+n+1);
    20     for(int i=1;i<=n;i++)scanf("%d",&b[i]);
    21     sort(b+1,b+n+1);
    22     int ans=0,al=1,ar=n,bl=1,br=n;
    23     while(al<=ar&&bl<=br)
    24     {
    25         while(a[al]>b[bl]&&al<=ar&&bl<=br)al++,bl++,ans+=2;
    26         while(a[ar]>b[br]&&al<=ar&&bl<=br)ar--,br--,ans+=2;
    27         if(al<=ar&&bl<=br)ans+=(a[al]==b[br]),al++,br--;
    28     }
    29     printf("%d ",ans);
    30     for(int i=1;i<=n;i++)swap(a[i],b[i]);
    31     ans=0,al=1,ar=n,bl=1,br=n;
    32     while(al<=ar&&bl<=br)
    33     {
    34         while(a[al]>b[bl]&&al<=ar&&bl<=br)al++,bl++;
    35         while(a[ar]>b[br]&&al<=ar&&bl<=br)ar--,br--;
    36         if(al<=ar&&bl<=br)ans+=(a[al]==b[br])?1:2,al++,br--;
    37     }
    38     printf("%d
    ",ans);
    39     return 0;
    40 }
  • 相关阅读:
    费马定理
    JAVA大数模板
    扩展KMP模板
    KMP算法模板
    2018暑假遗留题目
    线段树模板(含区间最大(小)值)
    [USACO18OPEN]Out of Sorts G
    几道背包题
    两个有关素数的算法
    German Collegiate Programming Contest 2015 F. Divisions
  • 原文地址:https://www.cnblogs.com/zhuohan123/p/3250403.html
Copyright © 2011-2022 走看看