题目链接

题目大意

要你查询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思想)的更多相关文章

  1. 牛客练习赛63 牛牛的树行棋 差分 树上博弈 sg函数

    LINK:牛牛的树行棋 本来是不打算写题解的. 不过具体思考 还是有一段时间的. 看完题 一直想转换到阶梯NIM的模型上 转换失败. 考虑SG函数. 容易发现 SG函数\(sg_x=max{sg_{t ...

  2. 牛客练习赛63 牛牛的斐波那契字符串 矩阵乘法 KMP

    LINK:牛牛的斐波那契字符串 虽然sb的事实没有改变 但是 也不会改变. 赛时 看了E和F题 都不咋会写 所以弃疗了. 中午又看了一遍F 发现很水 差分了一下就过了. 这是下午和古队长讨论+看题解的 ...

  3. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  4. 牛客练习赛26:D-xor序列(线性基)

    链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...

  5. 牛客练习赛11 假的字符串 (Trie树+拓扑找环)

    牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字 ...

  6. 牛客练习赛64 D【容斥+背包】

    牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(99824 ...

  7. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  8. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  9. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

随机推荐

  1. 4G DTU比GPRS/3G DTU的优势

    4G DTU一般来说是采用电脑和数据线连接来进行参数设置的,为了适应不同的工作环境,提高工作的效率,成都远向电子4G DTU还支持远程参数配置和远程固件升级,只需一部手机即可轻松完成操作.今天我们就来 ...

  2. SYL数据库表关系图 AND 项目架构图

    关系图(内容按照具体项目要求可以改) 项目架构图

  3. python机器学习使用PCA降维识别手写数字

    PCA降维识别手写数字 关注公众号"轻松学编程"了解更多. PCA 用于数据降维,减少运算时间,避免过拟合. PCA(n_components=150,whiten=True) n ...

  4. [Luogu P4147] 玉蟾宫 (网格DP)

    题面 传送门:https://www.luogu.org/problemnew/show/P4147 Solution 裸的求极大子矩阵 感谢wzj dalao的教学 首先,有一个很显然但很重要的结论 ...

  5. tensorflow-gpu2.1缺少libcudnn.so.7

    下载CUDA对应版本的cuDnn. 下载后在cuDnn/cuda/lib64下有libcudnn.so.7这个文件,把它复制到/usr/local/cuda/lib64/下即可

  6. Windows窗口置顶工具 简简单单 - 快快乐乐

    Windows窗口置顶工具 简简单单 - 快快乐乐 JERRY_Z. ~ 2020 / 11 / 12 转载请注明出处!️ 目录 Windows窗口置顶工具 简简单单 - 快快乐乐 一.官网下载Des ...

  7. 获取url后面的参数

    function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = qu ...

  8. 有了Cloud Alert电话报警,再也不怕遗漏告警了

    Cloud Alert 的部分应用部署在阿里云上,使用了多方面的监控服务: 阿里自身的ECS服务器和网站. Zabbix 监控服务器应用程序. OneAPM 的应用级监控. 腾讯云拨测,做网站监控. ...

  9. 性能工具-io工具

    I/O:某网上问题通过top  iotop pidstat vmstat 工具定位出io高原因,内存不够.

  10. linux 异步I/O 信号

    if (ioctl(ngx_processes[s].channel[0], FIOASYNC, &on) == -1) { ngx_log_error(NGX_LOG_ALERT, cycl ...