题目

字符串模拟+并查集

建立两个并查集分别存放每个变量的每一位数的祖先,一个是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. redis的事务处理

    1.redis事务可以依次执行多个命令,并且带有以下三个重要的保证: 批量操作在发送exec命令前被放入队列缓存. 收到exec命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行. 在事 ...

  2. 快速生成html文本文档——typora

    下载地址:https://www.typora.io/#windows 一.工具界面: 二.使用工具编辑: 三.导出为html: 四.打开html查看: Markdown语法教程:https://ww ...

  3. 3.MVC基础-Code First 入门完整实例

    1.添加一个EF的上下文类  EFDbContext public class EFDbContext:DbContext { public EFDbContext() : base("EF ...

  4. ElementUI 源码定制防坑指南

    背景 我司OA系统公文管理模块Office在线编辑使用的是金格IWebOffice中间件[PPAPI插件,通过<object>标签加载],IWebOffice在chrome中设置div盒子 ...

  5. 【雅思】【绿宝书错词本】List37~48

    List 37 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ List 38 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ List 39 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ...

  6. iOS ANE植入流程

    来源:http://www.adsmogo.com/help/iosANE 一.iOS ANE植入流程 Step 1:创建Flex工程 1.1 启动Flash Builder 4.6.0, 选择“Fi ...

  7. SQL SERVER-Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.SmoExtended)

    Q:先在一个实例中恢复一个数据A,然后又想在恢复一次,取别名为A2,这是报异常SQL SERVER-Exclusive access could not be obtained because the ...

  8. uWSGI+django+nginx的工作原理流程与部署历程

    一.前言献给和我一样懵懂中不断汲取知识,进步的人们. 霓虹闪烁,但人们真正需要的,只是一个可以照亮前路的烛光 二.必要的前提2.1 准备知识 django一个基于python的开源web框架,请确保自 ...

  9. python读写mysql数据库

    方法一: 1. python连接mysql数据库:需要用到 pymysql 库和 sqlalchemy库: import pandas as pd from sqlalchemy import cre ...

  10. StringComparison 枚举

    地址:https://docs.microsoft.com/zh-cn/dotnet/api/system.stringcomparison?redirectedfrom=MSDN&view= ...