码迷,mamicode.com
首页 > 其他好文 > 详细

hdu5143 暴力枚举

时间:2014-12-14 21:20:14      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   使用   

http://acm.hdu.edu.cn/showproblem.php?pid=5143

Problem Description
NPY is learning arithmetic progression in his math class. In mathematics, an arithmetic progression (AP) is a sequence of numbers such that the difference between the consecutive terms is constant.(from wikipedia)
He thinks it‘s easy to understand,and he found a challenging problem from his talented math teacher:
You‘re given four integers, a1,a2,a3,a4, which are the numbers of 1,2,3,4 you have.Can you divide these numbers into some Arithmetic Progressions,whose lengths are equal to or greater than 3?(i.e.The number of AP can be one)
Attention: You must use every number exactly once.
Can you solve this problem?
 

Input
The first line contains a integer T — the number of test cases (1T100000).
The next T lines,each contains 4 integers a1,a2,a3,a4(0a1,a2,a3,a4109).
 

Output
For each test case,print "Yes"(without quotes) if the numbers can be divided properly,otherwise print "No"(without quotes).
 

Sample Input
3 1 2 2 1 1 0 0 0 3 0 0 0
 

Sample Output
Yes No Yes
Hint
In the first case,the numbers can be divided into {1,2,3} and {2,3,4}. In the second case,the numbers can‘t be divided properly. In the third case,the numbers can be divided into {1,1,1}.
/*
hdu 5143 暴力枚举
题目大意:
     给定数字1,2,3,4.的个数每个数字能且仅能使用一次,组成多个或一个等差数列(长度大于等于3)问能否成功
解题思路:(杭电官方题解)
     可以发现等差数列只有(123,234,1234和长度>=3的常数列),如果选择非常数列(123,234,1234)数量大于等于3,
可以变为三个或4个常数列,例如(123,123,123)变为(111,222,333)。所以从0-2枚举选择非常数列的数量,再判断能
否用常数列覆盖剩下的(如果数字长度正好为0或≤3就可以)。
*/
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
bool ok(int a[5])
{
    if((a[0]>=3||a[0]==0)&&(a[1]>=3||a[1]==0)&&(a[2]>=3||a[2]==0)&&(a[3]>=3||a[3]==0))
        return true;
    return false;
}
int a[10],b[10];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        for(int i=0;i<4;i++)
        {
            scanf("%d",&a[i]);
        }
        int flag=0;
        if(ok(a))
        {
            flag=1;
        }
        else
        {
            for(int i=0;i<=2;i++)
            {
                for(int j=0;j<=2;j++)
                {
                    for(int k=0;k<=2;k++)
                    {
                        b[0]=a[0]-i-j;
                        b[1]=a[1]-i-j-k;
                        b[2]=a[2]-i-j-k;
                        b[3]=a[3]-i-k;
                        if(ok(b))
                            flag=true;
                    }
                }
            }
        }
        if(flag)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}


hdu5143 暴力枚举

标签:des   style   blog   http   io   ar   color   os   使用   

原文地址:http://blog.csdn.net/lvshubao1314/article/details/41927901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!