hdoj4696

除了x[1]以外,其他x[]都是通过t[]数组转移的,so,显然x数组的值是在c数组中选的。
分情况:
(1)m<=0 显然无解
(2)若c数组中全是2:<1>那么如果m是奇数,无解.<2>m是偶数,有解
(3)若c数组中有1:第一个x选1,然后扩展,直到x数组的和>=m,由于x数组元素的值只可能是1或2,so,最终的和要么等于m,要么等于m+1,如果是等于m+1,只要去掉第一个1,从把x[2]的值作为x[1]扩展x数组即可。

#include<stdio.h>
#include<string.h>
int main()
{
    int n,q,tmp;
    int i,j;
    while(scanf("%d%d",&n,&q)!=EOF)
    {
        for(i=1;i<=n;i++)
            scanf("%d",&tmp);
        bool flag=0;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&tmp);
            if(tmp==1) flag=1;
        }
        for(i=1;i<=q;i++)
        {
            scanf("%d",&tmp);
            if((tmp&1 && !flag) || tmp<=0)
                printf("NO\n");
            else
                printf("YES\n");
        }

    }

    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>