版权说明:来自 石门ss学校 Guohao OJ ,禁止转载

题目描述

虽然小X不喜欢化学原理,但他特别喜欢把一大堆液体倒在一起。

现在小X有n种液体,其中m对会发生反应。现在他想把这n种液体按某种顺序倒入一个容器内,让他获得最刺激的体验,也就是使危险系数尽量大。

我们可以这样计算危险系数,一开始容器内没有任何液体,危险系数为1。每次液体倒入容器时,若容器内已有一种或多种液体会与这种液体发生反应,则危险系数会乘2,否则危险系数不变。

最大危险系数小X不会算,希望你帮帮他。

输入输出格式

输入格式:

第一行包含两个整数n,m。

接下来m行,每行包含两个整数a,b,表示液体a和液体b会发生反应。

输出格式:

一行,包含一个整数,表示最大危险系数。

输入输出样例

输入样例:

3 2
1 2
2 3
输出样例:

4

说明

数据规模:

对于30%的数据,n≤10;

对于100%的数据,1≤n≤1000,a≠b,同种反应不会出现多次。

题目分析:

通过题目可以发现,不用管放置的顺序,我们就可以轻而易举得想到并查集,将液体合并为后,一个集的危险指数就为  2 的 (集合内个数-1) ,最后将所有集合值加起来就是答案。

代码

 #include<iostream>
#include<fstream>
using namespace std;
typedef string str;
const int Max_N=1e3+;
int n,m;
int Fa[Max_N],tot[Max_N];
string mul(string s1,string s2)
{
// 一连串的高精度乘法,个人码风问题不建议借鉴
// 最好自己手写一个
#define len1 (s1.size())
#define len2 (s2.size())
int maxx=max(len1,len2);
register int i,j,k,l;
int Ans[maxx<<|];
for(i=;i<=(maxx<<);i++)Ans[i]=;
for(i=;i<len1;i++)s1[i]-='';
for(i=;i<len2;i++)s2[i]-='';
for(i=len1-,k=;i>=;i--,k++){
for(j=len2-,l=(maxx<<)-k;j>=;j--,l--)
Ans[l]+=(int)s1[i]*s2[j];
}
for(i=(maxx<<);i>=;i--)
if(Ans[i]>){
int xy=Ans[i]/;
Ans[i-]+=xy;
Ans[i]%=;
}
int top=;
while(Ans[top]==&&top^(maxx<<))top++;
string res;
for(i=top;i<=maxx<<;i++)res+=Ans[i]+'';
return res;
}
int Find(int p)
{
// 查询祖先
if(Fa[p]==p)
return p;
return Fa[p]=Find(Fa[p]);
}
void megre(int u,int v)
{
Fa[Find(u)]=Fa[Find(v)];
return ;
}
str Pow(str b,int p)
{
// 字符串版快速幂:-D
if(!p)
return "";
str res="";
while(p){
if(p&)
res=mul(res,b);
b=mul(b,b);
p>>=;
}
return res;
}
int main()
{
scanf("%d%d",&n,&m);
int u,v;
register int i,j;
for(i=;i<=n;i++)
Fa[i]=i;
for(i=;i<=m;i++){
scanf("%d%d",&u,&v);
megre(u,v);//²¢²é¼¯ºÏ²¢²Ù×÷
}
for(i=;i<=n;i++)
tot[Find(i)]++;//统计集合内个数
str res="";
for(i=;i<=n;i++)
if(tot[i]>)
res=mul(res,Pow("",tot[i]-));
// 答案为集合内的 pow(2,(集合内个数-1)) 的和
cout<<res;
return ;
}

代码

写在最后的话:

题解仅供思路,要想成为 dalao ,请学会并尽量会做到教他人甚至自己写题解。

博主(目前)是一名初二蒟蒻,如有问题还请大家指出,一起交流学习!

Happy every day!        ——2019.4.11

[题解]小X的液体混合的更多相关文章

  1. [洛谷P1373][题解]小a和uim之大逃离

    (别点我我不是题目) 这道题可以很容易看出是一道dp(因为是在dp关卡里找的) 稍微想一下就可以yy出一个不错的状态: f[i][j][k][0/1]代表走到了点(i,j).膜液量相差k(小a-uim ...

  2. 题解 P1208 【[USACO1.3]混合牛奶 Mixing Milk】

    其实根本没有一楼dalao描述的那么麻烦...... 一楼dalao其实吧,采用了一种纯属模拟的方式. 下面是我的大跃进思想 但是一个个地做减法是不是太慢了?(大跃进思想) 于是我们是不是可以直接进行 ...

  3. 小程序 less wxss 混合 Mixins picker样式优化 箭头样式的实现原理

    lessc src/style/picker-arrow_.less src/style/picker-arrow_.wxss 快速入门 | Less.js 中文文档 https://less.boo ...

  4. Gorgeous Sequence 题解 (小清新线段树)

    这道题被学长称为“科幻题” 题面 事实上,并不是做法科幻,而是“为什么能这么做?”的解释非常科幻 换句话说,复杂度分析灰常诡异以至于吉如一大佬当场吃书 线段树维护的量:区间和sum,区间最大值max1 ...

  5. [洛谷P4942][题解]小凯的数字

    这题打着高精的旗号其实是闹着玩的……(我不是题目) 数据范围就是提示你这题O(1)的 我们知道,一个数膜9的余数等于它数字和膜9的余数 我们可以把l到r加起来然后膜9 也就是(l+r)(r-l+1)/ ...

  6. 题解 小B的询问

    题面 解析 这就是道莫队模板啊啊!! 因此,似乎并没有什么好讲的. 莫队算法传送门 我们只需要将询问存下来, 离线处理就行了. 还是上代码吧: #include<bits/stdc++.h> ...

  7. 【题解】Luogu2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...

  8. Hybrid小程序混合开发之路 - 数据交互

    HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...

  9. SASS详解之混合(mixins)

    SASS详解之混合(mixins)可以出现在SASS的任何地方.有很多类名具有相同或者相似的样式,就可以用SASS中的混合(mixins)来进行编写,然后针对不同类名的不同样式逐一编写. 定义一个混合 ...

随机推荐

  1. Spring Cloud 微服务开发系列整理

    Spring Boot 系列精选 Spring Boot 自定义 starter Spring Boot 整合 mybatis-plus Spring Boot 整合 spring cache Spr ...

  2. Flask实战第3天:url_for使用

    我们之前是通过url来找到对应的视图函数 /     =>    hello_world 那么url_for则是通过视图函数找到url hello world  =>  / 演示如下 #c ...

  3. Django学习之九: auth 认证组件

    目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...

  4. 一起学Android之Intent

    本文简述在Android开发中Intent的常见应用,仅供学习分享使用. 什么是Intent? Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Inten ...

  5. 数据结构学习java(一点五)链式顺序表(链表)

    java中没有将指针暴露给用户(以前做过看过一篇文章写有java中是有指针的,只是被藏起来了),所以得使用引用的方式. 何为引用请看下面这篇文章(写的很不错,当然肯定比我写的好): https://w ...

  6. vue 导出xlsx表功能

    详细步骤: 1.需要安装三个依赖: npm install -S file-saver xlsx npm install -D script-loader 两个命令行包含三个依赖. 2.项目中src下 ...

  7. SQLServer之锁简介

    锁定义(Definition) 锁定是 DBMS 将访问限制为多用户环境中的行的过程. 以独占方式锁定行或列,不允许其他用户访问锁定的数据,直到锁被释放. 这可确保两个用户不能同时更新行中的同一列. ...

  8. Python函数默认参数的陷阱

    默认参数实际上只有一个值 代码1 def func(l = 1): l += 1 print(l) func() func() func() 代码2 lst = [] def func(a,l = l ...

  9. Elasticsearch 通关教程(四): 分布式工作原理

    前言 通过前面章节的了解,我们已经知道 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以一个之前从未有过的速度和规模,去探索你的数据.它被用作全文检索.结构化搜索.分析以及这三个 ...

  10. input type=file的几个属性

    <input type='file' /> inputDom.onchange=function (e){ e.currentTarget.files  是只有一个对象的数组 var ob ...