POJ3275 Ranking the Cows #include <iostream> #include <cstdio> #include <bitset> using namespace std; ; int n, m; bitset<maxn> maps[maxn]; void floyd() { ; k <= n; k++) { ; i <= n; i++) { if (maps[i][k]) maps[i] |= maps[k]; }…
<题目链接> 题目大意:FJ想按照奶牛产奶的能力给她们排序.现在已知有N头奶牛$(1 ≤ N ≤ 1,000)$.FJ通过比较,已经知道了M$1 ≤ M ≤ 10,000$对相对关系.每一对关系表示为“X Y”,意指X的产奶能力强于Y.现在FJ想要知道,他至少还要调查多少对关系才能完成整个排序. 解题分析: 因为完全图只需要$n*(n-1)/2$对关系就能确定所有的所有节点的顺序,所以这里我们只需要求出传递闭包之后,能够确定的关系数,然后相减即可.因为本题 $n\leq10^3$,$O(n^3…
显然并不能直接dfs,因为$m$会非常大,复杂度就是$O(mn)$: 这题有三种做法,都用到了bitset的优化.第二种算是一个意外的收获,之前没想到竟然还有这种神仙操作.. 方法一:缩点+DAG上bitset优化的统计 做有向图连通问题上来先看可不可以缩点首先一个环内点是可以相互连通的,又发现DAG也许方便统计,于是缩点..然后变成一张DAG,只要统计每个点可以往后走到的所有点权(指该环包含的点数)的和.并不好直接把后继全加上去,因为会有点被重复统计.为了避免重复统计,只要直接每个点开一个bi…
题意 : 给出 N 头牛,以及 M 个某些牛之间的大小关系,问你最少还要确定多少对牛的关系才能将所有的牛按照一定顺序排序起来 分析 : 这些给出的关系想一下就知道是满足传递性的 例如 A > B && B > C 可以推出  A > C 也就是说如果用数组 arr[i][j] = true 表示牛 i 和 牛 j 有关系 那么 arr[i][k] = true && arr[k][j]  就可以推出 arr[i][j] = true 如果接触过 Floyd…
Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate, and FJ would like to order his cows according to these rates from the fastest milk producer to the slowest. FJ has already compared the milk output rate for M (1…
传送门 题意: 农场主 FJ 有 n 头奶牛,现在给你 m 对关系(x,y)表示奶牛x的产奶速率高于奶牛y: FJ 想按照奶牛的产奶速率由高到低排列这些奶牛,但是这 m 对关系可能不能精确确定这 n 头奶牛的关系: 问最少需要额外增加多少对关系使得可以确定这 n 头奶牛的顺序: 题解: 之所以做这道题,是因为在补CF的题时用到了bitset<>: 搜这个容器的用法是看到了一篇标题为POJ-3275:奶牛排序Ranking the Cows(Floyd.bitset)的文章: 正好拿着道题练练b…
Ranking the Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3301   Accepted: 1511 Description Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate, and FJ would like to order his cows according to…
把关系变成有向边,稍微想一下就是要求在有向图中不能到达的点对个数,这个可以用Floyd传递闭包来做,但是n^3的复杂度跑不了1000 考虑bitset优化! 因为传递过程只会出现0和1,用bitset完全没问题,而且重要的是bitset可以进行位运算,一下转移一整行:如果j能到i,也能到i能到的所有点,直接用"|"位运算转移即可 #include<iostream> #include<cstdio> #include<bitset> using na…
1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 323  Solved: 238[Submit][Status][Discuss] Description     农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序.    约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他发现,他还需…
http://acm.hdu.edu.cn/showproblem.php?pid=5036 题意就是给定一副有向图,现在需要走遍这n个顶点,一开始出发的顶点是这n个之中的随便一个. 如果走了1,那么1能联通的顶点就可以直接走过去,其他不和1连通的,就需要炸坏.问需要炸弹的期望. 比如一副图是1-->2-->3的.那么期望是11 / 6 假如从1号点开始,1/3概率选中1号点开始,那么需要炸弹数是1(炸开一号),贡献是1/3 假如从2号点开始,1/3概率选中2号点开始,那么需要炸开2号点,然后…