版权说明:来自 石门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. 配置CLion作为Qt5开发环境

    使用Qt进行程序开发时QtCreator总是不二之选.作为老牌IDE在提供了强大的功能同时也对Qt的支持做了许多优化.如果没有特别的原因你应该使用它. 然而一个顺手的工具将会极大得提升生产效率,而如果 ...

  2. 用VS2017进行移动开发(C#、VB.NET)——OfflineCameraButton控件,Smobiler移动开发

    OfflineCameraButton控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个OfflineCam ...

  3. js动态生成层方法 不懂得加QQ 2270312758

    我们在WEB开发时,很多时候往往需要我们 JavaScript 来动态建立 html 元素,动态的设置相关的属性.比方说我们想要建立一个 div 层,则可以使用以下代码实现.一.直接建立 functi ...

  4. 单机Qps上限是多少?

    现在这个年代,你要是不懂高并发,你都不好意思说自己是搞互联网的! 一.什么是并发,什么是高并发 并发,两个及以上的行为一起发生,比如你一边吃饭一边看电视 高并发,多个行为(至于是多少,这个没有定数,你 ...

  5. 修改phpcms中的评论样式

    phpcms中自带的评论插件很好用!但是样式个人感觉丑的狠,百度一下也没能找到解决方式,也许是自己的搜索方式不对,于是自己就研究了研究,这里可以使用两种方法进行修改 方法一: 使用PHPCMS中的ge ...

  6. PHP进程信号处理

    PHP进程信号处理 php有一组进程控制函数PCNTL,使得php能在*nix系统中实现跟c一样的创建子进程.使用exec函数执行程序.处理信号等功能. 注意:pcntl这个扩展仅在cli/cgi模式 ...

  7. nginx系列13:最少连接算法以及如何跨worker进程生效

    最少连接算法 使用最少连接算法可以使得nginx优先选择连接最少的上游服务器,需要用到upstream_least_conn模块. 如何跨worker进程生效 因为nginx是多进程结构的,默认多个w ...

  8. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  9. 浏览器的同源策略及CORS跨域解决方案 DRF

    一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: UR ...

  10. python 面试题

    1.os.path与sys.path的区别是什么? os.path 主要用于系统文件路径的操作 sys.path 主要是python解释器的系统环境参数的操作 2.re模块中match和search方 ...