Luogu P2500 [SDOI2012]集合___枚举
题目大意:
小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 < = 100000 , m < = 500000 , 操 作 数 q < = 100000 边权≤10^9,n<=100000,m<=500000,操作数q<=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]集合___枚举相关推荐
- 集合在枚举数实例化后进行了修改_(编程知识)C# 枚举与位枚举
一.枚举的概念: C# 枚举(Enum), 枚举类型是用于声明一组命名的常数的基本数据类型(值类型): 二.枚举的定义: 声明 enum 变量: enum {enumeration list}; 其中 ...
- 得分最高的单词集合[二进制枚举]
二进制枚举 前言 一.得分最高的单词集合 二.字符串组合 1.DFS 2.二进制枚举 总结 参考资料 前言 二进制枚举是把每个节点当作二进制的1bit,0表示未选择,1表示选择,就像是寻找子集一样,这 ...
- 转载--编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议60~64)
阅读目录 建议60:性能考虑,数组是首选 建议61:若有必要,使用变长数组 建议62:警惕数组的浅拷贝 建议63:在明确的场景下,为集合指定初始容量 建议64:多种最值算法,适时选择 噢,它明白了,河 ...
- ATL中集合和枚举器
一.实现枚举器 typedef std::vector< std::string > ContainerType; typedef VCUE::GenericCopy<VARIANT ...
- Luogu P1039 侦探推理(模拟+枚举)
P1039 侦探推理 题意 题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议70~74)
建议70:子列表只是原列表的一个视图 List接口提供了subList方法,其作用是返回一个列表的子列表,这与String类subSting有点类似,但它们的功能是否相同呢?我们来看如下代码: 1 p ...
- 【Java 枚举 集合】枚举类Enum、映射EnumMap、集EnumSet
枚举Enum.映射EnumMap.集EnumSet 一.枚举Enum 1.概述 2.介绍 ① valueOf ② values 3.分析 ※ 模仿一个枚举类 二.枚举映射 EnumMap 1.概述 2 ...
- 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 ...
- [luogu] P2498 [SDOI2012]拯救小云公主 二分答案+bfs
前言 以为二分的是人到BOOS的距离 没想到可以直接二分BOOS的攻击距离 传送门 : 思路 BFS待研究 CODE typedef pair<int,int> pii; map<i ...
最新文章
- 北大研究人员这次发现了AI「躺平」原因,都是数据集的错!
- 从零开始一起学习SLAM | SLAM有什么用?
- 还不知道事务消息吗?这篇文章带你全面扫盲
- Ubuntu升级之后The disk drive for / is not ready yet or not present的解决方法
- continue和break的区别
- python json模块
- scss 文件里的特殊符号 @ 和 @include 的用法
- Qt-线程启动与关闭实例
- Android开发之自定义Toast(吐司)
- ConcurrentProgramming:interrupt
- Jmeter分布式压测实战及踩坑处理(含参数化)
- C语言高效编程的几招
- Mysql中给数据库,表,字段设置字符编码
- Mysql: mysqlbinlog命令查看日志文件
- 计算机路由器无线级联配置,两个无线路由器级联怎么设置?
- HTML中设置td的字体颜色
- 新注册的邮箱如何群发邮件
- SyntaxError: Non-UTF-8 code starting with ‘\xc6‘ in file xxxbut no encoding declared
- 在vscode中使用latex高效书写论文教程
- Cadence(virtuoso)集成电路设计软件基本操作——库管理
热门文章
- python制作微信个人二维码_Python制作微信机器人,随时陪你聊天
- PD快充 - fusb302驱动调试笔记
- ec服务器怎么打出无限连击技巧,鬼泣巅峰之战浮空连击怎么打 教你如何打出浮空连击...
- 设计模式-单例模式(唯一的月亮实例附代码)
- 微信朋友圈长视频服务器地址,微信朋友圈发布60秒+长视频教程
- 【解决方案】VMware 虚拟机浏览器看不清字
- 值得珍藏的80句话(献给想当经理和已当上经理的朋友)
- [附源码]java毕业设计网上花店系统
- 【调剂】杭州电子科技大学2020年硕士研究生调剂信息
- 信息存储单位+常见数据类型