#include <cstdio>
char a[44];
int cases = 1, inf = 99999, n, m, len;
int total, ones, solutions;
void go(int i)
{
if (total > n || ones > m || solutions > 1)return;
if (i >= len)
{
if (total + ones == n + m)++solutions;
return;
}
int j, k, all_ones;
if (a[i] == '1')
for (j = i, k = 0, all_ones = 1; j < len; ++j)
{
if (k < inf)k = k * 2 + a[j] - '0';
all_ones &= a[j] - '0';
if (a[j + 1] != '1')
{
if (k > 2)
{
total += k;
ones += k;
go(j + 1);
total -= k;
ones -= k;
}
if (all_ones&&j - i < 2)
{
int tmp_len = j - i + 1;
total += tmp_len;
ones += tmp_len;
go(j + 1);
total -= tmp_len;
ones -= tmp_len;
}
}
}
else
{
total++
ACM-ICPC世界总决赛试题解析-2006年压缩二进制消息Bit Compressor
最新推荐文章于 2022-11-25 16:30:40 发布
本文详细解析2006年ACM-ICPC世界总决赛中的一道压缩二进制消息的题目,探讨如何高效地实现位操作来压缩和解压缩数据,涉及位运算、数据压缩算法等关键概念。
摘要由CSDN通过智能技术生成