[题解]小X的液体混合
版权说明:来自 石门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的液体混合的更多相关文章
- [洛谷P1373][题解]小a和uim之大逃离
(别点我我不是题目) 这道题可以很容易看出是一道dp(因为是在dp关卡里找的) 稍微想一下就可以yy出一个不错的状态: f[i][j][k][0/1]代表走到了点(i,j).膜液量相差k(小a-uim ...
- 题解 P1208 【[USACO1.3]混合牛奶 Mixing Milk】
其实根本没有一楼dalao描述的那么麻烦...... 一楼dalao其实吧,采用了一种纯属模拟的方式. 下面是我的大跃进思想 但是一个个地做减法是不是太慢了?(大跃进思想) 于是我们是不是可以直接进行 ...
- 小程序 less wxss 混合 Mixins picker样式优化 箭头样式的实现原理
lessc src/style/picker-arrow_.less src/style/picker-arrow_.wxss 快速入门 | Less.js 中文文档 https://less.boo ...
- Gorgeous Sequence 题解 (小清新线段树)
这道题被学长称为“科幻题” 题面 事实上,并不是做法科幻,而是“为什么能这么做?”的解释非常科幻 换句话说,复杂度分析灰常诡异以至于吉如一大佬当场吃书 线段树维护的量:区间和sum,区间最大值max1 ...
- [洛谷P4942][题解]小凯的数字
这题打着高精的旗号其实是闹着玩的……(我不是题目) 数据范围就是提示你这题O(1)的 我们知道,一个数膜9的余数等于它数字和膜9的余数 我们可以把l到r加起来然后膜9 也就是(l+r)(r-l+1)/ ...
- 题解 小B的询问
题面 解析 这就是道莫队模板啊啊!! 因此,似乎并没有什么好讲的. 莫队算法传送门 我们只需要将询问存下来, 离线处理就行了. 还是上代码吧: #include<bits/stdc++.h> ...
- 【题解】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 & ...
- Hybrid小程序混合开发之路 - 数据交互
HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...
- SASS详解之混合(mixins)
SASS详解之混合(mixins)可以出现在SASS的任何地方.有很多类名具有相同或者相似的样式,就可以用SASS中的混合(mixins)来进行编写,然后针对不同类名的不同样式逐一编写. 定义一个混合 ...
随机推荐
- 4.2WebHost配置「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. WebHost配置 覆盖配置文件和修改启动URL 覆盖配置文件和修改启动URL是经常使用的地方,覆盖配置文件可以自 ...
- 使用strace命令跟踪系统调用
一.是什么strace? strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由 ...
- .net core中使用autofac进行IOC
.net Core中自带DI是非常简单轻量化的,但是如果批量注册就得扩展,下面使用反射进行批量注册的 public void AddAssembly(IServiceCollection servic ...
- JQ的.serialize()
前面写的都是用Form表单提交,但是VUE.JS好像不能控制Form的Action. 于是就用AJAX来提交,但是跳转地址(window.location.href=)会暴露数据在url上,就直接用s ...
- 算法题:实现一个IP白名单过滤器
最近看到一则招聘的JD,附了一个算法题的链接,原题如下: 请实现一个IP白名单过滤算法,实现以下接口 boolean addWhiteIpAddress(String ip); boolean ...
- arcgis api 3.x for js 实现克里金插值渲染图不依赖 GP 服务(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- C,java,Python,这些名字背后的江湖!
还记得高中的时候,有一次我们计算机老师问我们班要不要去参加市里面的C语言比赛,当时还小的我对编程世界压根就一片空白.那时候我就想啊,为什么是C语言,那么A语言,B语言或者是D语言又是什么呢? 后来就到 ...
- 回归算法比较(线性回归,Ridge回归,Lasso回归)
代码: # -*- coding: utf-8 -*- """ Created on Mon Jul 16 09:08:09 2018 @author: zhen &qu ...
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
- redis -hash(哈希.对象)
hash 用于储存对象,对象的结构为属性.值 值的类型string 增加.修改: 设置单个属性: hset 键 field 值 例如: 设置键 user 的属性name 为 python hset u ...