zoukankan      html  css  js  c++  java
  • HDU2277_变色球

    /*
    *题目大意:
    *	 给定a, b, c,代表三种不同颜色的球的个数,然后规定
    *	 如果把任意两种不同颜色的球放在一起,那么它们两个
    *	 的颜色将变成第三种颜色的球的颜色。求判断最后所有的
    *	 球能否变成同一种颜色,如果能,输出最小步数。否则输
    *	 出):。
    *解题思路:
    *	 广搜实现不了,因为a,b,c都是<=1000,标志状态的数组太
    *	 大。其实就是找规律。其实a, b, c由a-x,b-x,c+2x可得到只
    *	 要三种球的个数其中任意两种球个数只差是3的倍数,即可
    *	 变成同一种颜色。
    *解题感想:
    *	 wa了2次,第一次忽略了,其实只要有两种满足三的倍数,
    *	 那么即使另外一种球的个数小于它们只差除以三也是可以
    *	 变成一种颜色的。第二次wa是因为没有判断变成三种颜色的球
    *	 的步数中求最小。
    */
     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 
     5 int main(void)
     6 {
     7 #ifndef ONLINE_JUDGE
     8     freopen("in.txt", "r", stdin);
     9 #endif
    10 
    11     int a[3];
    12     while(scanf("%d %d %d", &a[0], &a[1], &a[2]) == 3)
    13     {
    14         bool flag = false;
    15         int ans = INT_MAX;
    16         //for(int i = 0; i < 3; i++)
    17         {
    18             int temp = abs(a[0] - a[1]);
    19             if(temp % 3 == 0)
    20             {
    21                 int t = temp / 3;
    22                 flag = true;
    23                 t = (a[0] + a[1] + t) / 2 + t;
    24                 if(ans > t)
    25                     ans = t;
    26             }
    27 
    28             temp = abs(a[0] - a[2]);
    29             if(temp % 3 == 0)
    30             {
    31                 int t = temp / 3;
    32                 flag = true;
    33                 t = (a[0] + a[2] + t) / 2 + t;
    34                 if(ans > t)
    35                     ans = t;
    36             }
    37 
    38             temp = abs(a[1] - a[2]);
    39             if(temp % 3 == 0)
    40             {
    41                 int t = temp / 3;
    42                 flag = true;
    43                 t = (a[1] + a[2] + t) / 2 + t;
    44                 if(ans > t)
    45                     ans = t;
    46             }
    47         }
    48         if(flag == false)
    49             puts("):");
    50         else
    51             printf("%d\n", ans);
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    Sencha Touch 框架快速入门系列
    dotTrace 使用说明
    CQRS架构中同步服务的一种实现方式
    C#中循环结构的效率问题
    面向领域驱动架构的查询实现方式
    最佳 jQuery
    DWZ&MVC的探索系列——Demo演示效果
    在Windows Azure中实现和调试一个WCF服务(上)
    现代软件工程开发体验:结对编程
    结对编程是什么?
  • 原文地址:https://www.cnblogs.com/cchun/p/2519276.html
Copyright © 2011-2022 走看看