| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:做了好几个版本。还是timeout了。。。算了。走人。换一题。。。。In Reply To:做了好几个版本。还是timeout了。。。算了。走人。换一题。。。。 Posted by:274856653 at 2020-12-07 15:35:23 #include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
#include <bitset>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAX_N 18
#define MAX_V (1<<MAX_N)
using namespace std;
int T, n, k;
char C[MAX_V];
void init()
{
memset((char *)&C, 0, sizeof(C));
}
void printbit(bool bit[], int len)
{
printf("printbit len = %d\n", len);
for(int i = 0; i<len; i++)
printf("%d", bit[i]);
printf("\n");
}
int dfs(int nn, int kk, bool *bit, int tot)
{
int sum = 0, temp = 0;
int half = tot/2 ;
//cout<<"dfs nn = "<<nn<<",kk = "<<kk<<", tot = "<<tot<<", half = "<<half<<endl;
//printbit(bit, tot);
if(nn<kk)
{
return 0;
}
if(nn == 0 && kk == 0)
{
if(bit[0])
return 1;
else
return 0;
}
//xn == 0;
bool* bit0 = new bool[half];
memset(bit0, 0, half);
memcpy(bit0, bit, half);
//printf("bit0 ");
//printbit(bit0, half);
temp = dfs(nn-1, kk, bit0, half );
sum += temp;
delete [] bit0;
//xn == 1;
if(kk>0)
{
bool* bit1 = new bool[half];
memset(bit1, 0, half);
for(int i = 0; i<half; i++)
{
bit1[i] = bit[i]^bit[i+half];
}
// printf("bit1 ");
// printbit(bit1, half);
temp = dfs(nn-1, kk-1, bit1, half);
sum += temp;
delete [] bit1;
}
return sum;
}
int main()
{
int i;
int len, ans;
scanf("%d", &T);
// printf("T = %d, MAX_V = %d\n", T, MAX_V);
while(T--)
{
init();
scanf("%d %d %s", &n, &k, C);
len = strlen(C);
// printf("n = %d, k = %d, C= %s, len = %d\n", n, k, C, len);
bool* coe = new bool[len];
memset(coe, 0, len);
for(i = 0; i<len; i++)
{
if(C[i] == '1')
{
coe[i] = true;
}else
{
coe[i] = false;
}
}
//printbit(coe, len);
ans = dfs(n, k, coe, len );
printf("%d\n", ans);
delete[] coe;
}
}
几经波折。做了5,6个版本总算不timeout了。。。。还有我用c++提交wa。g++ok了。不过本机上也是用g++提交的。。。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator