https://www.bnuoj.com/v3/contest_show.php?cid=9146#problem/F [题意] 给定n个城市和m条带权边,q次查询,问某两个城市之间的所有路径中最大边和最小边的差值最小是多少? [思路] 首先给所有的边从小到大排序,然后枚举最小边,向右遍历各条边:查找这条边的两个端点是否连通,不连通就加入并查集,并且更新q个查询的答案:连通的话不进行任何操作 [Accetped] #include<iostream> #include<cstdio&g…
F - How Many Tables 并查集的模板都能直接套,太简单不注释了,就存个代码 #include<bits/stdc++.h> using namespace std; ; int parent[size]; ]; int t, n, m, x, y, num; //赋初值 void parentkey(int n){ ;i<=n;i++){ parent[i] = i; cnt[i] = ; } } //找根节点 int find(int x){ return x==par…
1.Supermarket(题目地址) 跟很久以前模拟的打地鼠那题一样,贪心+优先队列.这次换用并查集做法. 还是基于贪心,但这次换一种策略,先选价值最大的, 同时使其尽可能晚的被选上(因为早选会将之前可选的日子占用,很显然). 将并查集f[i]表示从第i天往前看最晚的空下来的一天. 初始时还是每个点(即每天)指向自己,选物品时从这天开始找father,即之前我们维护的东西. 找到后将祖先指向上一个集合中(可以脑袋里面想象一下),累计答案. 如果祖先为0,代表没有可选的日子了(想一想为什么).…
首先把这个树建出来,然后每一次操作,只能选中一棵子树.对于树根,他的领导力水平是确定的,然后他更新答案的情况就是把他子树内薪水最少的若干个弄出来. 问题在于怎么知道一棵子树内薪水最少的若干个分别是谁. 考虑到原本就是从别的博客过来的,先天知道了这是左偏树. 那么就是每次合并若干个忍者吗? 首先一开始每个忍者可以自己派遣自己出去,贡献就是1x自己的领导力水平. 然后逐个合并每个忍者和自己的直接领导,合并之后就保证了自己的直接领导一定有被选中!新的贡献就是领导的领导力水平x目前堆最小的若干个元素?…
B. Mr. Kitayuta's Colorful Graph ->  Link  <- 题目链接在上面,题目比较长,就不贴出来了,不过这是道很好的题,很多方法都可以做,真心邀请去A了这道题: 题意:n个顶点m条边的无向图,每输入的两个点之间可能有多种颜色连接在一起,然后查询时每输入两个点,问这两个点之间有多少条连接方式: 如图:       1代表红色,2代表蓝色,3代表绿色: 这样3和4之间就是用绿色连接在一起的,他们之间只有一种连接方式,而2和3之间就有两种连接方式了,1和3只有一种(…
传送门 解题思路 用并查集f存朋友关系,一个数组e存的是敌人关系,是一个辅助数组,所以叫做种类并查集. 当p和q是朋友时,直接合并,但是当是敌人时,需要一些操作. 当p还没有敌人时(即p的敌人是自己),直接e[p]=q; 否则就把p的敌人和q变成朋友,这也就是变相把p和q变成敌人. 当然,对q也是如此. 最后统计有多少人是祖先,也就是说自己的朋友是自己,统计下来. AC代码 #include<iostream> #include<cstdio> using namespace st…
find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4899    Accepted Submission(s): 2131 Problem Description XX星有很多城市,城市之间通过一种奇怪的快速公路SARS(Super Air Roam Structure---超…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在…
题目链接: 题目 F. Polycarp and Hay time limit per test: 4 seconds memory limit per test: 512 megabytes input: standard input output: standard output 问题描述 The farmer Polycarp has a warehouse with hay, which can be represented as an n × m rectangular table,…
题意:有这么一群人,一群好人,和一群坏人,好人永远会说实话,坏人永远说假话,现在给你一组对话和好人与坏人的数目P1, P2. 数据里面的no是A说B是坏人, yes代表A说B是好人,就是这样,问题能不能从这些话里面得出来唯一的解,就是可以确定谁是好人谁是坏人,如果不能输出no,如果可以输出所有的好人. 分析,可以把这些人依据他们中的关系分成几个小集合,集合里面保存两类人的数目,然后DP求出来好人或者坏人是不是唯一的即可,‘ 注意并查集时候可以这么认为凡是yes都是同类,no都是异类 //////…