题目大意:

小H在学习“集合与图论”的时候遇到了一个问题,他思考了很久依然无法很好完成这个问题。于是他只好来求助你了,给出n个点m条边的带权无向图(即每条无向边上都有一个权值),有3个集合A、B、C.
一开始无向图中所有点都属于A集合,有如下9种操作:
MoveA x:表示将第x个点从所在集合中删除,并加入至A集合。
MoveB x:表示将第x个点从所在集合中删除,并加入至B集合。
MoveC x:表示将第x个点从所在集合中删除,并加入至C集合。
AskAA:询问两个端点都属于A集合的所有边中最小的权值是多少。
AskAB:询问两个端点分别属于A集合和B集合的所有边中最小的权值是多少。
AskAC:询问两个端点分别属于A集合和C集合的所有边中最小的权值是多少。
AskBB:询问两个端点都属于B集合的所有边中最小的权值是多少。
AskBC:询问两个端点分别属于B集合和C集合的所有边中最小的权值是多少。
AskCC:询问两个端点都属于C集合的所有边中最小的权值是多少。

边 权 ≤ 1 0 9 , n &lt; = 100000 , m &lt; = 500000 , 操 作 数 q &lt; = 100000 边权≤10^9,n&lt;=100000,m&lt;=500000,操作数q&lt;=100000 边权≤109,n<=100000,m<=500000,操作数q<=100000

分析:

好题,不过数据太水了
排序后暴力改,暴力查询,
时间 O ( q m ) O(qm) O(qm),居然可以A掉

代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <cstring>
#include <algorithm>#define rep(i,st,ed) for (int i = st; i <= ed; i++)
#define zzc(a) a - 'A'
#define N 100005using namespace std;struct Node { int u, v, w;}e[N*5];
int Belong[N], n, m, q;int read(int &x)
{int f = 1; x = 0; char s = getchar();while (s < '0' || s > '9') { if (s == '-') f = -1; s = getchar(); }while (s >= '0' && s <= '9') { x = x * 10 + (s - '0'); s = getchar(); }return x * f;
}bool cmp(Node aa, Node bb)
{return aa.w < bb.w;
}int main()
{read(n); read(m);rep(i, 1, m) read(e[i].u), read(e[i].v), read(e[i].w);sort(e + 1, e + m + 1, cmp);read(q);char opt[5]; int num, len; rep(cdp, 1, q){scanf("%s", opt); len = strlen(opt);if (opt[0] == 'M') read(num), Belong[num] = zzc(opt[len - 1]);else{num = 0;rep(i, 1, m)if (Belong[e[i].u] == zzc(opt[len - 1]) && Belong[e[i].v] == zzc(opt[len - 2]) || Belong[e[i].u] == zzc(opt[len - 2]) && Belong[e[i].v] == zzc(opt[len - 1])) { num = e[i].w; break; }if (!num) printf("No Found!\n"); else printf("%d\n", num);}}return 0;
}

Luogu P2500 [SDOI2012]集合___枚举相关推荐

  1. 集合在枚举数实例化后进行了修改_(编程知识)C# 枚举与位枚举

    一.枚举的概念: C# 枚举(Enum), 枚举类型是用于声明一组命名的常数的基本数据类型(值类型): 二.枚举的定义: 声明 enum 变量: enum {enumeration list}; 其中 ...

  2. 得分最高的单词集合[二进制枚举]

    二进制枚举 前言 一.得分最高的单词集合 二.字符串组合 1.DFS 2.二进制枚举 总结 参考资料 前言 二进制枚举是把每个节点当作二进制的1bit,0表示未选择,1表示选择,就像是寻找子集一样,这 ...

  3. 转载--编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议60~64)

    阅读目录 建议60:性能考虑,数组是首选 建议61:若有必要,使用变长数组 建议62:警惕数组的浅拷贝 建议63:在明确的场景下,为集合指定初始容量 建议64:多种最值算法,适时选择 噢,它明白了,河 ...

  4. ATL中集合和枚举器

    一.实现枚举器 typedef std::vector< std::string > ContainerType; typedef VCUE::GenericCopy<VARIANT ...

  5. Luogu P1039 侦探推理(模拟+枚举)

    P1039 侦探推理 题意 题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯 ...

  6. 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议70~74)

    建议70:子列表只是原列表的一个视图 List接口提供了subList方法,其作用是返回一个列表的子列表,这与String类subSting有点类似,但它们的功能是否相同呢?我们来看如下代码: 1 p ...

  7. 【Java 枚举 集合】枚举类Enum、映射EnumMap、集EnumSet

    枚举Enum.映射EnumMap.集EnumSet 一.枚举Enum 1.概述 2.介绍 ① valueOf ② values 3.分析 ※ 模仿一个枚举类 二.枚举映射 EnumMap 1.概述 2 ...

  8. Jzoj P5937 斩杀计划___枚举+贪心

    题目大意: 小 G G G有 n n n个人,第 i i i个人有 a i a_i ai​点攻击力,小 K K K有 m m m点血量. 你可以进行以下 3 3 3种操作: ①复用型药水:花费 1 1 ...

  9. [luogu] P2498 [SDOI2012]拯救小云公主 二分答案+bfs

    前言 以为二分的是人到BOOS的距离 没想到可以直接二分BOOS的攻击距离 传送门 : 思路 BFS待研究 CODE typedef pair<int,int> pii; map<i ...

最新文章

  1. 北大研究人员这次发现了AI「躺平」原因,都是数据集的错!
  2. 从零开始一起学习SLAM | SLAM有什么用?
  3. 还不知道事务消息吗?这篇文章带你全面扫盲
  4. Ubuntu升级之后The disk drive for / is not ready yet or not present的解决方法
  5. continue和break的区别
  6. python json模块
  7. scss 文件里的特殊符号 @ 和 @include 的用法
  8. Qt-线程启动与关闭实例
  9. Android开发之自定义Toast(吐司)
  10. ConcurrentProgramming:interrupt
  11. Jmeter分布式压测实战及踩坑处理(含参数化)
  12. C语言高效编程的几招
  13. Mysql中给数据库,表,字段设置字符编码
  14. Mysql: mysqlbinlog命令查看日志文件
  15. 计算机路由器无线级联配置,两个无线路由器级联怎么设置?
  16. HTML中设置td的字体颜色
  17. 新注册的邮箱如何群发邮件
  18. SyntaxError: Non-UTF-8 code starting with ‘\xc6‘ in file xxxbut no encoding declared
  19. 在vscode中使用latex高效书写论文教程
  20. Cadence(virtuoso)集成电路设计软件基本操作——库管理

热门文章

  1. python制作微信个人二维码_Python制作微信机器人,随时陪你聊天
  2. PD快充 - fusb302驱动调试笔记
  3. ec服务器怎么打出无限连击技巧,鬼泣巅峰之战浮空连击怎么打 教你如何打出浮空连击...
  4. 设计模式-单例模式(唯一的月亮实例附代码)
  5. 微信朋友圈长视频服务器地址,微信朋友圈发布60秒+长视频教程
  6. 【解决方案】VMware 虚拟机浏览器看不清字
  7. 值得珍藏的80句话(献给想当经理和已当上经理的朋友)
  8. [附源码]java毕业设计网上花店系统
  9. 【调剂】杭州电子科技大学2020年硕士研究生调剂信息
  10. 信息存储单位+常见数据类型