Codeforces Round #438 C Qualification Rounds(暴力+位运算)

题目链接:点击打开链接

因为k最大为4,所以可以根据二进制转十进制的策略存储所有的题目种类

只需要根据k的值找到一对数,使其表示成二进制之后每个数位上1最多出现一次

暴力一遍即可

AC代码如下:

#include 
#include 
#include 
#include 

using namespace std;

int n, k;
int problem[16];
int trans[] = {1,2,4,8,16};


inline int getBit(int n, int p)
{
    int temp = n>>p;
    return temp%2;
}


int solve(int m)
{
    if(problem[0])  return 1;
    for(int i=1;i<=m;++i)
    {
        if(problem[i])
        {
            for(int j=i+1;j<=m;++j)
            {
                if(problem[j])
                {
                    int flag=1;
                    for(int t=0;t>n>>k)
    {
        memset(problem,0,sizeof(problem));
        int temp;
        for(int i=1;i<=n;++i)
        {
            temp = 0;
            for(int j=0;j>a;
                temp += trans[j]*a;
            }
            problem[temp]++;
        }
        if(solve(trans[k]-1)) cout<<"YES"<


你可能感兴趣的:(BruteForce,ACM,Codeforces)