【JZOJ4807】破解
description
analysis
首先把 [ L , R ] [L,R] [L,R]看成 [ L , R + 1 ) [L,R+1) [L,R+1),然后把头尾相连的区间视作做操作
就是说,如果一个大区间包含一个与它头或尾相连的小区间,就大区间视作拆成小区间和小区间的补集
大区间完全包含另若干各区间(头尾不相连),两两没有影响
对于搞完后大小为 n n n的区间,该区间答案为 2 n − 1 2^{n-1} 2n−1
然后每个区间头和尾连起来,并查集做一做,求出一共有 k k k个联通块
如果原图有 m m m个点,则最终答案就是 ∑ i = 1 k 2 n i − 1 = 2 m − k \sum_{i=1}^{k}2^{{n_i}-1}=2^{m-k} ∑i=1k2ni−1=2m−k
这个并查集怎么搞自行思考
code
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 10000005
#define MAXM 100005*2
#define mod 1000000007
#define ll long long
#define fo(i,a,b) for (ll i=a;i<=b;++i)
#define fd(i,a,b) for (ll i=a;i>=b;--i)using namespace std;ll fa[MAXM],f[MAXM];
bool bz[MAXN];
ll turn[MAXN];
ll n,m,T,tot,cnt;inline ll read()
{ll x=0,f=1;char ch=getchar();while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;
}
inline ll getfa(ll x)
{return fa[x]==x?x:fa[x]=getfa(fa[x]);
}
inline void merge(ll x,ll y)
{ll xx=getfa(x),yy=getfa(y);if (xx==yy)return;fa[xx]=yy;
}
inline ll pow(ll x,ll y)
{ll z=1;while (y){if (y&1)z=z*x%mod;x=x*x%mod,y>>=1;}return z;
}
int main()
{//freopen("T2.in","r",stdin);T=read();while (T--){n=read(),m=read(),tot=cnt=0;fo(i,1,m*2)fa[i]=i;memset(bz,1,sizeof(bz));memset(turn,0,sizeof(turn));fo(i,1,m){ll l=read(),r=read()+1;if (bz[l])bz[l]=0,f[++cnt]=l,turn[l]=cnt;if (bz[r])bz[r]=0,f[++cnt]=r,turn[r]=cnt;merge(turn[l],turn[r]);}memset(bz,1,sizeof(bz));fo(i,1,cnt)if (bz[getfa(i)])bz[getfa(i)]=0,++tot;printf("%lld\n",pow(2,cnt-tot));}return 0;
}
【JZOJ4807】破解相关推荐
- 实验三-密码破解技术
学 号 201421430010 中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告 实验三 密码破解技术 ...
- Python搭建Keras CNN模型破解网站验证码
在本项目中,将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的验证码.验证码如下: 利用Keras可以快速方便地搭建CNN模型,本项目搭建的CNN模型如下: 将数据集分为训练集和测试集,占比为 ...
- vs 插件小番茄 visual assist x破解版 破解教程下载
visual assist x是一款非常好用的Microsoft Visual Studio插件,它可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到 ...
- 安装完DevExpress14.2.5,如何破解它呢?
DevExpress是一个界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.DevExpress开发的控件有很强的实力,不仅功能丰富,应用简单,而且界面华丽,更可方便订制,方便开发人员开 ...
- 如何破解压缩文件密码-省时省力的方法
压缩文件破解工具下载地址:http://www.cnblogs.com/spring_wang/archive/2013/06/14/3135163.html 应该很多人都碰到过RAR加密.解密的问题 ...
- 破解出cmos密码(转载)
----CMOS (Award)密码简介与破解0--3法---- 计算机启动时,由存放在主板ROM中的bios将cmos数据调入内存中,以实现控制系统. 其中,Award主板上的一小块RAM用于存放C ...
- Jrebel 热部署插件的使用和破解
生成GUIDS 的网站:https://www.guidgen.com/ Jrebel 介绍和破解说明:https://www.cnblogs.com/wang1024/p/7211194.html ...
- 破解CentOS的root密码(救援模式无密码)
开机后,在倒数读秒的时候按任意键.跳转画面后,再按E键,进入如下界面: 此时把光标定位到第二行,再按E键(意为:在启动顺序里编辑这条命令),如下图,此时输入"空格+single" ...
- 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由SQL GM 发表于云+社区专栏 介绍 对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来无限次地进行登录尝试. ...
最新文章
- 【Android基础】序列化 Serializable vs Parcelable
- 快速获取青年大学习完成截图
- 有一只经过训练的蜜蜂……
- python做前端mongodb_Python爬虫之mongodb和python交互
- Comet4J推技术在SSHE三大框架中应用-linux下亲测可用
- 《统计学习方法》读书笔记——K近邻法(原理+代码实现)
- (进阶)LeetCode(206)——反转链表(JavaScript)
- 关于 Java 的强制类型转换
- 嘉兴市人才网即时招聘栏目Ajax动态翻页爬虫练习
- 洛谷入门题 深基2 例5~例8
- 生命细胞游戏的C++实现
- 杭州电子科技大学ACM-1094
- nginx的带宽限制和并发控制
- java适合音频格式_我应该为java使用什么音频格式?
- 志愿人生——带给你每一次温暖
- 华为手机充当电脑的无线U盘 - 华为无线连接电脑 - 华为分享
- 为什么c语言加法错误,分数的加减法——C语言初学者代码中的常见错误与瑕疵(12)...
- ARM与DSP的区别
- C. Neko does Maths
- 中兴 ZTE T9 七寸平板手机ROOT方法 教程分享
热门文章
- LeetCode力扣刷题数据库(178):分数排名
- C++ float转换int,四舍五入
- 应用软件运行提示缺少*.dll文件的解决方法
- Android实现烟雾监控应用,基于Android的室内监控系统的研究与实现
- 电子计算机在哪里换电子,主板bios电池在哪里怎么更换
- RecyclerView.ItemAnimator终极解读(三)--继承DefaultItemAnimator实现自定义动画
- 最后一口气sans计算机谱子,最后一口气sans审判曲
- 外科医生最喜欢给什么人做手术
- COSONFT,全面赋能助力全球Web3“航海家”开辟“新航道”
- [COCI2017-2018#5] Olivander