题目

字符串模拟+并查集

建立两个并查集分别存放每个变量的每一位数的祖先,一个是1一个是2

考虑每个字母的每一位的数都是唯一的,先模拟,记录每一个变量的每一位。

一一映射到方程中去,最后将两个方程进行一一比较,然后合并并查集。中间判断是否出现一位既是1又是2的情况

最后统计自由元的个数cnt,高精求解2^cnt

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
#define N 100100
using namespace std;
int k, tot, len, len1, len2, tot1, tot2;
int x[N], y[N], sum[N], fa[N], jin[N]; //sum[i]表示i所代表的字母的开始位置
string s1, s2;
int find(int a)
{
if (a == fa[a]) return a;
return fa[a] = find(fa[a]);
}
signed main()
{
scanf("%lld", &k);
sum[1] = len = 2;
for (int i = 2; i <= k + 1; i++)
scanf("%lld", &len), sum[i] = sum[i - 1] + len, tot += len;
cin >> s1 >> s2;
int len1 = s1.size(), len2 = s2.size();
for (int i = 0; i < len1; i++)
{
if (s1[i] >= 'a' && s1[i] <= 'z')
{
int now = s1[i] - 'a' + 1;
for (int j = sum[now]; j < sum[now + 1]; j++)
x[++tot1] = j;
}
else x[++tot1] = s1[i] - '0';
}
for (int i = 0; i < len2; i++)
{
if (s2[i] >= 'a' && s2[i] <= 'z')
{
int now = s2[i] - 'a' + 1;
for (int j = sum[now]; j < sum[now + 1]; j++)
y[++tot2] = j;
}
else y[++tot2] = s2[i] - '0';
}
if (tot1 != tot2)
printf("0"), exit(0);
for (int i = 1; i <= tot1 * 4; i++)
fa[i] = i;
for (int i = 1; i <= tot1; i++)
{
int a = x[i], b = y[i];
if (a + b == 1) //如果a,b不相等,就直接输出不行
printf("%lld\n", 0), exit(0);
int da = find(a), db = find(b);
if (da + db == 1)
printf("0"), exit(0);
if (da != db) //已经排除了a,b等于1或0的情况
fa[da] = db, tot--;
}
int big[100010]= {1}, top=1;
for(int i=tot; i>=1; i--)
{
for(int i=0; i<top; ++i)big[i]<<=1;
for(int i=0; i<top; ++i)if(big[i]>=10)
{
big[i+1]+=big[i]/10,big[i]%=10;
}
for(; big[top]; ++top)
{
big[top+1]+=big[top]/10,big[top]%=10;
}
}
for(int i=top-1; i>=0; --i) printf("%lld", big[i]);
return 0;
}
/*
5
4 2 4 4 2
1bad1
acbe */

洛谷P2456 二进制方程的更多相关文章

  1. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  2. p2456二进制方程 题解

    题面描述:可以跳过 一个形如: X1X2…Xn=Y1Y2..Ym 的等式称为二进制方程. 在二进制方程的两边:Xi和Yj (1<=i<=n:1<=j<=m)是二进制数字(0.1 ...

  3. [NOIP2014] 提高组 洛谷P2312 解方程

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  4. 洛谷P4428二进制 [BJOI2018] 线段树

    正解:线段树 解题报告: 传送门! 话说开始看到这题的时候我想得hin简单 因为关于%3有个性质就是说一个数的各个位数之和%3=这个数%3嘛,小学基础知识? 我就想着,就直接建一棵树,只是这棵树要用个 ...

  5. 洛谷 P2312 解方程 解题报告

    P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...

  6. 洛谷P1633 二进制

    P1633 二进制 题目描述 有三个整数A.B.C,以下用N(2)表示N的二进制(没有前导0). 设A(2).B(2).C(2)的最大长度为L,你需要构造三个正整数X.Y.Z,满足以下条件: (1) ...

  7. 洛谷 P2312 解方程

    题目 首先,可以确定的是这题的做法就是暴力枚举x,然后去计算方程左边与右边是否相等. 但是noip的D2T3怎么会真的这么简单呢?卡常卡的真是熟练 你需要一些优化方法. 首先可以用秦九韶公式优化一下方 ...

  8. 洛谷 P2104 二进制

    P2104 二进制 题目描述 小Z最近学会了二进制数,他觉得太小的二进制数太没意思,于是他想对一个巨大二进制数做以下 4 种基础运算: 运算 1:将整个二进制数加 1 运算 2:将整个二进制数减 1 ...

  9. 洛谷 P2312 解方程 题解

    P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...

随机推荐

  1. docker-compose命令使用说明

    Commands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file conf ...

  2. [jsp学习笔记] jsp基础知识 数据初始化、同步

  3. C# vb .net实现扭曲角特效滤镜图像处理

    在.net中,如何简单快捷地实现Photoshop滤镜组中的扭曲角效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一 ...

  4. Java开发环境搭建(一)

    一.JDK与JRE JDK:Java Development Kit,Java开发工具包,是给开发人员使用的,其中包含了Java的开发工具,如java.javac.jar等命令,同时也包含了JRE. ...

  5. MySQL事务和事务隔离级别

    1.概述 事务就是对数据库数据进行更改(包括insert.update.delete等)操作的一个执行单元,通常有一条或多条更改语句组成.在同一个事务中的更改操作要么同时成功,要么同时失败. 事务具有 ...

  6. JS 中Json常用操作

    转自: https://www.jianshu.com/p/6501b0f3124f 直接定义json var json = {"name": "小明", &q ...

  7. Jmeter学习笔记(七)——监听器元件之察看结果树

    在jmeter中,如果我们需要查看请求结果就需要添加查看结果树,这个监听器元件有那些功能呢? 一.察看结果树界面如下 二.察看结果树界面功能说明 1.所有数据写入文件 (1)文件名:可以通过浏览,选择 ...

  8. linux删除同目录及子目录下统一扩展名的文件

    find . -name '*.csv' -type f -print -exec rm -rf {} \; 利用find去查找文件,点是指当前目录下,引号中是相应的数据的名称,自己可以定义,然后用t ...

  9. 【Flask】 python学习第一章 - 2.0 视图方式和返回值

    路由参数与请求方式制定   ALT+回车 pycharm 快速导包  demo3  指定访问地址  与请求方式  #   给路由传入参数 使用尖括号 ,视图函数需要接收参数 @app.route(&q ...

  10. 关于winsxs目录的处理

    参考文档: 1.http://www.360doc.com/content/14/0415/12/7873863_369147503.shtml 2.http://www.360doc.com/con ...