【libreOJ模板】并查集(输入挂,取模与find优化)
1.了解了各种输入挂性orz,找到了一个合适的
2.find用while写能快一倍,并且能被数据卡掉
3.取模只能快十几毫秒,但也能被数据卡掉
取模find双优化是1997mm过的
再加一个性价比较高的输入挂是438mm 23333
#include <cstdio>
#include <cmath>
#include <complex>
#include <algorithm>
#include <iostream>
#include<string.h>
#include<vector>
#include<ctime>
#define rep(i,t,n) for(int i =(t);i<=(n);++i)
#define per(i,n,t) for(int i =(n);i>=(t);--i)
#define mmm(a,b) memset(a,b,sizeof(a))
typedef long long ll;
using namespace std;
#define N 2333333
const ll M= ;
const int maxn = 4e6 + ;
int f[maxn];
using namespace std; template<typename T>inline void add_(T &A, int B, ll MOD = M) { A += B; (A >= MOD) && (A -= MOD); }
template<typename T>inline void mul_(T &A, ll B, ll MOD = M) { A = (A*B) % MOD; }
namespace IO
{
const int MAXL = << ;
char buf[MAXL], *S, *T, ch; inline char Getch()
{
if (S == T) T = (S = buf) + fread(buf, , MAXL, stdin);
return S == T ? EOF : *S++;
} inline void Read(int &x)
{
x = ;
while (!isdigit(ch = Getch()));
do { x = x * + (ch ^ ''); } while (isdigit(ch = Getch()));
}
}
using namespace IO; int find(int x) {
while (f[x] ^ x)x = f[x] = f[f[x]]; return x;
}
void un(int x, int y) {
int xx = find(x), yy = find(y);
if(xx^yy)f[xx] = yy;
}
int main() {
int n, m;
cin >> n >> m;
rep(i, , n)f[i] = i;
int op, a, b;
ll ans = ;
rep(i, , m) {
Read(op); Read(a); Read(b);
if(!op)un(a, b);
else {
add_(ans, ans + (find(a) == find(b)));
}
}
cout << ans << endl;
cin >> n;
}
【libreOJ模板】并查集(输入挂,取模与find优化)的更多相关文章
- HDU 3306 Another kind of Fibonacci(矩阵+ll超时必须用int&输入必须取模&M必须是int类型)
Another kind of Fibonacci [题目链接]Another kind of Fibonacci [题目类型]矩阵+ll超时必须用int&输入必须取模&M必须是int ...
- HDU 1213 How Many Tables(模板——并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 Problem Description Today is Ignatius' birthday ...
- HDU 1232 畅通工程(模板——并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1232 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出 ...
- luoguP3367 [模板]并查集
题目链接:https://www.luogu.org/problemnew/show/P3367 思路: 今天学了新算法——并查集,本题是简单的并查集题的模板. 核心思想是“递归+压缩路径”. 并查集 ...
- Luogu [P3367] 模板 并查集
[模板]并查集 题目详见:[[P3367][模板]并查集] (https://www.luogu.org/problemnew/show/P3367) 这是一道裸的并查集题目(要不然叫模板呢) 废话不 ...
- LibreOJ #109. 并查集
题目描述 这是一道模板题. 维护一个 nnn 点的无向图,支持: 加入一条连接 uuu 和 vvv 的无向边 查询 uuu 和 vvv 的连通性 由于本题数据较大,因此输出的时候采用特殊的输出方式:用 ...
- 洛谷P4723 【模板】线性递推(多项式取模 线性代数)
题意 题目链接 Sol Orz shadowice 注意,下面的代码自带O(随时TLE)倍大常数.. #include<bits/stdc++.h> #define Pair pair&l ...
- 【畅通工程 HDU - 1232 】【并查集模板】
并查集讲解和模板 有一个博文对此分析的很透彻,附链接 为避免原链接失效,现摘录如下: 为了解释并查集的原理,我将举一个更有爱的例子. 话说江湖上散落着各式各样的大侠,有上千个之多.他们没有什么正当职业 ...
- 【bzoj1370】[Baltic2003]Gang团伙 并查集
题目描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1. 我朋友的朋友是我的朋友: 2. 我敌人的敌人是我的朋友: 所有是朋友的人组成一个团伙.告诉你关于这n个人的m条信息, ...
随机推荐
- 【转】iPhone X
iPhone X 在 CIIA 第一期报告中,我剖析了 iPhone 从诞生以来就存在的,以及后来产生的一些设计问题.昨天在苹果店里玩了一下 iPhone X,发现它不但继承了以往的 iPhone 的 ...
- arcgis server瓦片行列号计算
2013-08-01 arcgis server切图时会设置一个原点坐标,如果是经纬度坐标一般默认(x0,y0)=(-400,400)作为切图的起始点,即从这开始算行列号.假设切图的地图某点坐标为x, ...
- [转]三步完成Source Insight 4.0 破解安装
下载地址有更新,之前有朋友因潜在的版权问题封禁没下到,现在更新后可正常使用了. 文末有完全清除上次安装残留的方法,需要的人可以参考. —— 更新于 2018.1.21 第一步:安装 安装sour ...
- Source Insight 常用设置
1.背景色选择 要改变背景色Options->preference->windows background->color设置背景色2.解决字符等宽对齐问题 SIS默认字体是VE ...
- RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较(转)
RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...
- Odoo小数精度及货币精度详解
一.小数精度的设置 一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置: 对于代码中定义为 digits=dp.get_precision('Product Price') 或 di ...
- Java知多少(46)try和catch的使用
尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时 ...
- CentOS 7.4编译安装Nginx1.10.3+MySQL5.7.16
准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...
- win7怎么打开加锁文件夹
在windows 7下,C:\Documents and Settings文件夹是默认锁定的,很多时候要进入进行解除锁定,根据本人实践的经历略作介绍. 1.打计算机,进入c盘文件夹,2.分别点击“组织 ...
- python multiprocess pool模块报错pickling error
问题 之前在调用class内的函数用multiprocessing模块的pool函数进行多线程处理的时候报了以下下错误信息: PicklingError: Can't pickle <type ...