USACO 2.1 Sorting a Three-Valued Sequence (乱搞)

  很不错的一个题。开始自己想了一个策略,然后写了150+代码。。。WA后,发现策略可能有问题,貌似有更简单的办法,自己想的策略是错的,敲的各种if else,想清楚再写啊。。。这个题目应该算是贪心把。

 1 /*

 2  ID: cuizhe

 3  LANG: C++

 4  TASK: sort3

 5 */

 6 #include <cstdio>

 7 #include <cstring>

 8 #include <cmath>

 9 #include <algorithm>

10 using namespace std;

11 int p[1011],o[4];

12 int main()

13 {

14     int i,n,ans,x12,x13,x21,x23,x31,x32;

15     freopen("sort3.in","r",stdin);

16     freopen("sort3.out","w",stdout);

17     scanf("%d",&n);

18     for(i = 1; i <= n; i ++)

19     {

20         scanf("%d",&p[i]);

21         o[p[i]]++;

22     }

23     ans = 0;

24     x12 = x13 = x21 = x23 = x31 = x32 = 0;

25     for(i = 1;i <= o[1];i ++)

26     {

27         if(p[i] == 2)

28         {

29             x12 ++;

30         }

31         else if(p[i] == 3)

32         {

33             x13 ++;

34         }

35     }

36     for(i = o[1]+1;i <= o[1]+o[2];i ++)

37     {

38         if(p[i] == 1)

39         {

40             x21 ++;

41         }

42         else if(p[i] == 3)

43         {

44             x23 ++;

45         }

46     }

47     for(i = o[2]+o[1]+1;i <= n;i ++)

48     {

49         if(p[i] == 1)

50         {

51             x31++;

52         }

53         else if(p[i] == 2)

54         {

55             x32 ++;

56         }

57     }

58     ans = x12+x13+max(x23,x32);

59     printf("%d\n",ans);

60     return 0;

61 }

你可能感兴趣的:(sequence)