BZOJ 1703 [Usaco2007 Mar]Ranking the Cows 奶牛排名 Floyd+bitset
来源:互联网 发布:华为服务器安装ubuntu 编辑:程序博客网 时间:2024/06/02 04:21
Description
农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序. 约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他发现,他还需要再做一张关于另外C对奶牛的产奶率比较,才能推断出所有奶牛的产奶率排序.请帮他确定C的最小值.
Input
第1行包含两个用空格分开的整数N和M.接下来M行,每行有两个用空格分开的整数X和Y(1≤X,y≤1000),表示奶牛X的产奶率高于奶牛Y.
Output
C的最小值.
Sample Input
5 5
2 1
1 5
2 3
1 4
3 4
INPUT DETAILS:
FJ is comparing 5 cows and has already determined that cow 2 > cow
1, cow 1 > cow 5, cow 2 > cow 3, cow 1 > cow 4, and cow 3 > cow 4
(where the '>' notation means "produces milk more quickly").
2 1
1 5
2 3
1 4
3 4
INPUT DETAILS:
FJ is comparing 5 cows and has already determined that cow 2 > cow
1, cow 1 > cow 5, cow 2 > cow 3, cow 1 > cow 4, and cow 3 > cow 4
(where the '>' notation means "produces milk more quickly").
Sample Output
3
HINT
从输入样例中可以发现,约翰已经知道的排名有奶牛2>奶牛1>奶牛5和奶牛2>奶牛3>奶牛4,奶牛2排名第一.但是他还需要知道奶牛1的名次是否高于奶牛3来确定排名第2的奶牛,假设奶牛1的名次高于奶牛3.接着,他需要知道奶牛4和奶牛5的名次,假设奶牛5的名次高于奶牛4.在此之后,他还需要知道奶牛5的名次是否高于奶牛3.所以,他至少仍需要知道3个关于奶牛的排名.
传送门
终于会bitset了,,不容易呐= =
一开始以为每个点开始暴力走一遍是O(N^2)的……结果后面发现是O(N*(N+M))……
那么传递闭包似乎只能用Floyd求了?
但是O(N^3)啊喂,,
百度了题解才知道可以用bitset优化的。。
bitset原来就是一个简便式的二进制存储东西。。
那么通过bitset优化除了个32这题就可以过了=c=
#include<bits/stdc++.h>using namespace std;const int N=1005;int n,m;bitset<N>a[N];int main(){scanf("%d%d",&n,&m);int x,y;while (m--){scanf("%d%d",&x,&y);a[x][y]=1;}for (int k=1;k<=n;k++)for (int i=1;i<=n;i++)if (a[i][k]==1) a[i]|=a[k];int ans=0;for (int i=1;i<=n;i++)ans+=a[i].count();printf("%d\n",((n*(n-1))>>1)-ans);return 0;}
阅读全文
0 0
- BZOJ 1703 [Usaco2007 Mar]Ranking the Cows 奶牛排名 Floyd+bitset
- BZOJ 1703 [Usaco2007 Mar]Ranking the Cows 奶牛排名 bitset优化
- bzoj1703[Usaco2007 Mar]Ranking the Cows 奶牛排名
- 【bzoj1703】[Usaco2007 Mar]Ranking the Cows 奶牛排名
- BZOJ 1703 Ranking the Cows 奶牛排名 (传递闭包)
- BZOJ 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
- poj 3275 Ranking the Cows floyd算法
- bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛
- BZOJ 1706 usaco2007 Nov relays 奶牛接力跑 倍增Floyd
- [倍增Floyd] BZOJ 1706 [usaco2007 Nov]relays 奶牛接力跑
- bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 floyd
- bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏(floyd)
- PKU 3275 Ranking the Cows 最短路 floyd
- bzoj 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通(拓扑排序?+DP)
- 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
- bzoj1638 [Usaco2007 Mar]Cow Traffic 奶牛交通
- [BZOJ1638][Usaco2007 Mar]Cow Traffic 奶牛交通
- 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
- Makefile经典教程(掌握这些足够)
- Xcode9学习笔记9
- [Day 3]
- OkHttp3源码解析03-缓存
- 跟测试对齐第一现场很重要
- BZOJ 1703 [Usaco2007 Mar]Ranking the Cows 奶牛排名 Floyd+bitset
- Xcode9学习笔记10
- uva 1220 树的最大独立集和唯一性的判断
- [杂题 SET维护DP] Codeforces 875E. Delivery Club
- TCP三次握手和四次挥手
- 2017.10.6 BJOI2015 bzoj4338 糖果
- 关于python with的用法
- PAT 甲级 1113. Integer Set Partition (25)
- linux的压缩解压