[ CodeVS冲杯之路 ] P1368

  不充钱,你怎么AC?

  题目:http://codevs.cn/problem/1368/

 

  嗯……泡泡堂,很劲啊,其实就是个盗版的田忌赛马

  http://www.cnblogs.com/hyfer/p/5853381.html

  这边博客讲得很好啊,虽然不是这道题,但是方法是完全类似的

  你把田忌赛马看懂了,泡泡堂就自然解出来了

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<ctime>
 8 #include<queue>
 9 #include<stack>
10 typedef long long LL;
11 typedef double db;
12 using namespace std;
13 
14 const int oo=2147483647,TL=996,N=100001;
15 int a[N],b[N];
16 int main()
17 {
18     int i,n,la,lb,ra,rb,ans=0;
19     scanf("%d",&n);
20     for (i=1;i<=n;i++) scanf("%d",&a[i]);
21     for (i=1;i<=n;i++) scanf("%d",&b[i]);
22     sort(a+(la=lb=1),a+(ra=rb=n)+1);
23     sort(b+1,b+1+n);
24     while (la<=ra)
25     {
26         if (a[la]>b[lb])
27         {
28             ans+=2;
29             la++;
30             lb++;
31         }
32         else if (a[ra]>b[rb])
33         {
34             ra--;
35             rb--;
36             ans+=2;
37         }
38         else ans+=(a[la++]==b[rb--]);
39     }
40     printf("%d ",ans);
41     for (i=la=lb=1,ans=0,ra=rb=n;i<=n;i++) swap(a[i],b[i]);
42     while (la<=ra)
43     {
44         if (a[la]>b[lb])
45         {
46             ans+=2;
47             la++;
48             lb++;
49         }
50         else if (a[ra]>b[rb])
51         {
52             ra--;
53             rb--;
54             ans+=2;
55         }
56         else ans+=(a[la++]==b[rb--]);
57     }
58     printf("%d\n",2*n-ans);
59     return 0;
60 }

 

posted @ 2016-10-27 22:12  Hadilo  阅读(268)  评论(0编辑  收藏  举报