题目链接

题目大意

要你查询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的所有边都加进去 询问互相可达点对,可以用并查集维护。

那么多组询问就可以都离线下来,把询问和边放在一起排序然后处理就好了。

代码

  1. #include<set>
  2. #include<map>
  3. #include<queue>
  4. #include<stack>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<vector>
  8. #include<string>
  9. #include<cstring>
  10. #include<iostream>
  11. #include<algorithm>
  12. #include<unordered_map>
  13. #define fi first
  14. #define se second
  15. #define debug printf(" I am here\n");
  16. using namespace std;
  17. typedef long long ll;
  18. typedef unsigned long long ull;
  19. typedef pair<int,int> pii;
  20. const ll INF=0x3f3f3f3f3f3f3f3f;
  21. const int maxn=1e6+5,inf=0x3f3f3f3f,mod=199999;
  22. const double eps=1e-10;
  23. unsigned int SA, SB, SC;
  24. int n, m, q, LIM;
  25. int fa[maxn],sum[maxn],cnt;
  26. struct node{
  27. int u,v,w,opt;
  28. }e[maxn];
  29. unsigned int rng61(){
  30. SA ^= SA << 16;
  31. SA ^= SA >> 5;
  32. SA ^= SA << 1;
  33. unsigned int t = SA;
  34. SA = SB;
  35. SB = SC;
  36. SC ^= t ^ SA;
  37. return SC;
  38. }
  39. void init(){
  40. for(int i=1;i<=n;i++){
  41. fa[i]=i;
  42. sum[i]=1;
  43. }
  44. }
  45. void gen(){
  46. scanf("%d%d%d%u%u%u%d", &n, &m, &q, &SA, &SB, &SC, &LIM);
  47. init();
  48. for(int i = 1,u,v,w; i <= m; i++){
  49. u = rng61() % n + 1;
  50. v = rng61() % n + 1;
  51. w = rng61() % LIM;
  52. e[++cnt]={u,v,w,1};
  53. }
  54. for(int i = 1,w; i <= q; i++){
  55. w = rng61() % LIM;
  56. e[++cnt]={-1,-1,w,2};
  57. }
  58. }
  59. bool cmp(node a,node b){
  60. if(a.w!=b.w){
  61. return a.w<b.w;
  62. }else{
  63. return a.opt<b.opt;
  64. }
  65. }
  66. int findd(int x){
  67. return x==fa[x]?x:fa[x]=findd(fa[x]);
  68. }
  69. signed main(){
  70. gen();
  71. sort(e+1,e+1+cnt,cmp);
  72. ll temp=0,ans=0;
  73. for(int i=1;i<=cnt;i++){
  74. if(e[i].opt==1){
  75. int x=findd(e[i].u),y=findd(e[i].v);
  76. if(x==y) continue;
  77. temp+=1ll*sum[x]*sum[y];
  78. sum[y]+=sum[x];
  79. fa[x]=y;
  80. }else{
  81. ans=ans^temp;
  82. }
  83. }
  84. printf("%lld\n",ans);
  85. return 0;
  86. }

牛客练习赛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. C1. Pokémon Army (easy version) 解析(DP)

    Codeforce 1420 C1. Pokémon Army (easy version) 解析(DP) 今天我們來看看CF1420C1 題目連結 題目 對於一個數列\(a\),選若干個數字,求al ...

  2. JDK1.8特性(更新中..)

    "15,5,9,17,99,107,47"转List<Long> List<Long> linkCompanyIds = Arrays.asList(&qu ...

  3. 时间UTC格式装换php时间格式

    date_default_timezone_get("UTC");date("Y-m-d", strtotime("2017-11-13T18:04: ...

  4. python实现银行系统模拟程序

    银行系统模拟程序 关注公众号"轻松学编程"了解更多. 1.概述 ​ 使用面向对象思想模拟一个简单的银行系统,具备的功能:管理员登录/注销.用户开户.登录.找回密码.挂失.改密.查询 ...

  5. python爬虫爬取策略

    爬取策略 关注公众号"轻松学编程"了解更多. 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那 ...

  6. 基于gin的golang web开发:访问mysql数据库

    web开发基本都离不开访问数据库,在Gin中使用mysql数据库需要依赖mysql的驱动.直接使用驱动提供的API就要写很多样板代码.你可以找到很多扩展包这里介绍的是jmoiron/sqlx.另外还有 ...

  7. 毕业一年后接私活赚了10w,还拿了几家大厂offer!

    原本计划这周接着写一篇技术文章的,但是没想到忙到天天凌晨回家,几乎没有为下一篇文章做准备的时间(通常写一篇文章需要至少 30 个小时,需要搭进日常下班及周末的休息时间).这周如果写的话精力和时间都达不 ...

  8. 2、Django源码分析之启动wsgi发生了哪些事

    一 前言 Django是如何通过网络socket层接收数据并将请求转发给Django的urls层? 有的人张口就来:就是通过wsgi(Web Server Gateway Interface)啊! D ...

  9. 21 Ajax

    21 Ajax AJAX,Asynchronous JavaScript and XML(异步的 JavaScript 和 XML), 是与在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页 ...

  10. 易于理解的 python 深度学习摘要算法教程

    序 "我不想要一份完整的报告,只要给我一份结果摘要就好".我经常发现自己处于这种状况 -- 无论是在大学里还是在我的职业生涯中.我们准备一份全面的报告,但老师/主管却只有时间阅读摘 ...