牛客练习赛68 牛牛的无向图 题解(krusal思想)
题目链接
题目大意
要你查询q 次询问,每次询问给出一个 L ,询问\(\sum_{i=1}^n\sum_{j=i+1}^n[d(i,j)<=L]\)。其中 [C] 表示当命题 C 为真的时候为 1 否则为 0。
定义 d(u,v) 表示在无向图中点 u 能到达点 v 的所有路径中权值最小的路径的权值。
求所有答案的异或和
题目思路
这个题目类型应该是一个常见的套路题,然而我又双叒叕没做出来
这个求边的最大最小值的题目就要想到kursal的思想就行了。
实际上就是把所有小于L的所有边都加进去 询问互相可达点对,可以用并查集维护。
那么多组询问就可以都离线下来,把询问和边放在一起排序然后处理就好了。
代码
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#define fi first
#define se second
#define debug printf(" I am here\n");
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=1e6+5,inf=0x3f3f3f3f,mod=199999;
const double eps=1e-10;
unsigned int SA, SB, SC;
int n, m, q, LIM;
int fa[maxn],sum[maxn],cnt;
struct node{
int u,v,w,opt;
}e[maxn];
unsigned int rng61(){
SA ^= SA << 16;
SA ^= SA >> 5;
SA ^= SA << 1;
unsigned int t = SA;
SA = SB;
SB = SC;
SC ^= t ^ SA;
return SC;
}
void init(){
for(int i=1;i<=n;i++){
fa[i]=i;
sum[i]=1;
}
}
void gen(){
scanf("%d%d%d%u%u%u%d", &n, &m, &q, &SA, &SB, &SC, &LIM);
init();
for(int i = 1,u,v,w; i <= m; i++){
u = rng61() % n + 1;
v = rng61() % n + 1;
w = rng61() % LIM;
e[++cnt]={u,v,w,1};
}
for(int i = 1,w; i <= q; i++){
w = rng61() % LIM;
e[++cnt]={-1,-1,w,2};
}
}
bool cmp(node a,node b){
if(a.w!=b.w){
return a.w<b.w;
}else{
return a.opt<b.opt;
}
}
int findd(int x){
return x==fa[x]?x:fa[x]=findd(fa[x]);
}
signed main(){
gen();
sort(e+1,e+1+cnt,cmp);
ll temp=0,ans=0;
for(int i=1;i<=cnt;i++){
if(e[i].opt==1){
int x=findd(e[i].u),y=findd(e[i].v);
if(x==y) continue;
temp+=1ll*sum[x]*sum[y];
sum[y]+=sum[x];
fa[x]=y;
}else{
ans=ans^temp;
}
}
printf("%lld\n",ans);
return 0;
}
牛客练习赛68 牛牛的无向图 题解(krusal思想)的更多相关文章
- 牛客练习赛63 牛牛的树行棋 差分 树上博弈 sg函数
LINK:牛牛的树行棋 本来是不打算写题解的. 不过具体思考 还是有一段时间的. 看完题 一直想转换到阶梯NIM的模型上 转换失败. 考虑SG函数. 容易发现 SG函数\(sg_x=max{sg_{t ...
- 牛客练习赛63 牛牛的斐波那契字符串 矩阵乘法 KMP
LINK:牛牛的斐波那契字符串 虽然sb的事实没有改变 但是 也不会改变. 赛时 看了E和F题 都不咋会写 所以弃疗了. 中午又看了一遍F 发现很水 差分了一下就过了. 这是下午和古队长讨论+看题解的 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
- 牛客练习赛11 假的字符串 (Trie树+拓扑找环)
牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字 ...
- 牛客练习赛64 D【容斥+背包】
牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(99824 ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
随机推荐
- C1. Pokémon Army (easy version) 解析(DP)
Codeforce 1420 C1. Pokémon Army (easy version) 解析(DP) 今天我們來看看CF1420C1 題目連結 題目 對於一個數列\(a\),選若干個數字,求al ...
- JDK1.8特性(更新中..)
"15,5,9,17,99,107,47"转List<Long> List<Long> linkCompanyIds = Arrays.asList(&qu ...
- 时间UTC格式装换php时间格式
date_default_timezone_get("UTC");date("Y-m-d", strtotime("2017-11-13T18:04: ...
- python实现银行系统模拟程序
银行系统模拟程序 关注公众号"轻松学编程"了解更多. 1.概述 使用面向对象思想模拟一个简单的银行系统,具备的功能:管理员登录/注销.用户开户.登录.找回密码.挂失.改密.查询 ...
- python爬虫爬取策略
爬取策略 关注公众号"轻松学编程"了解更多. 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那 ...
- 基于gin的golang web开发:访问mysql数据库
web开发基本都离不开访问数据库,在Gin中使用mysql数据库需要依赖mysql的驱动.直接使用驱动提供的API就要写很多样板代码.你可以找到很多扩展包这里介绍的是jmoiron/sqlx.另外还有 ...
- 毕业一年后接私活赚了10w,还拿了几家大厂offer!
原本计划这周接着写一篇技术文章的,但是没想到忙到天天凌晨回家,几乎没有为下一篇文章做准备的时间(通常写一篇文章需要至少 30 个小时,需要搭进日常下班及周末的休息时间).这周如果写的话精力和时间都达不 ...
- 2、Django源码分析之启动wsgi发生了哪些事
一 前言 Django是如何通过网络socket层接收数据并将请求转发给Django的urls层? 有的人张口就来:就是通过wsgi(Web Server Gateway Interface)啊! D ...
- 21 Ajax
21 Ajax AJAX,Asynchronous JavaScript and XML(异步的 JavaScript 和 XML), 是与在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页 ...
- 易于理解的 python 深度学习摘要算法教程
序 "我不想要一份完整的报告,只要给我一份结果摘要就好".我经常发现自己处于这种状况 -- 无论是在大学里还是在我的职业生涯中.我们准备一份全面的报告,但老师/主管却只有时间阅读摘 ...