n<=1000头牛各有一个未知值Ai,已知m<=10000条形如Ax>Ay的不等关系,求将整个序列排序的最少比较次数。

Aa>Ab,Ab>Ac -------> Aa>Ac,传递性,因此按m条不等关系连边建图,求出传递闭包,就是已知的关系。

求出传递闭包中的i≠j的0的个数即可。错误!连的图是有向图,而已知大于关系后其实另一边已知一个小于关系,所以用n*n,减去1的个数*2,再减(i,j),i=j的n个,再除以2得到答案。

n3不可接受,因此用bitset优化floyd。代码如下:

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<bitset>
//#include<iostream>
using namespace std; int n,m;
#define maxn 1011
#define maxm 10011
struct Edge{int to,next;};
struct Graph
{
bitset<maxn> mp[maxn];
Graph() {memset(mp,,sizeof(mp));}
void insert(int x,int y) {mp[x][y]=;}
void floyd()
{
for (int j=;j<=n;j++)
for (int i=;i<=n;i++)
if (mp[i][j]) mp[i]|=mp[j];
}
int getans()
{
int one=;
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
one+=mp[i][j];
return (n*(n-)-one*)/;
}
}G;
int x,y;
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
G.insert(x,y);
}
G.floyd();
printf("%d\n",G.getans());
return ;
}

其实这个题是个错题,但错题错做。比如输入5 0,答案是10,但可以比较8次就出来。就是在一个已知有序数列中二分插入一个数,只是人工处理的情况下不需要进行区间移动之类的。

BZOJ1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名的更多相关文章

  1. Bzoj 1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名 传递闭包,bitset

    1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 323  Solved ...

  2. bzoj:1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名

    Description     农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序.    约翰已经比较了M(1≤M≤100 ...

  3. 【BZOJ】1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名

    [题意]给定n头牛和m对大小关系,求最坏情况下至少还需要比较几对奶牛的大小(在未确定顺序的奶牛对中随机比较) [算法]floyd求传递闭包 [题解]可达说明大小已知,则不可达点对数量就是最少比较次数. ...

  4. bzoj 1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名【bitset+Floyd传递闭包】

    把关系变成有向边,稍微想一下就是要求在有向图中不能到达的点对个数,这个可以用Floyd传递闭包来做,但是n^3的复杂度跑不了1000 考虑bitset优化! 因为传递过程只会出现0和1,用bitset ...

  5. 【dfs】BZOJ1703-[Usaco2007 Mar]Ranking the Cows 奶牛排名

    [题目大意] 农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序,约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他 ...

  6. 【BZOJ1703】【usaco2007margold】ranking the cows 奶牛的魅力排名

    想的时间比较长所以看题解了= = 原题: Fj有N(N<=1000)头牛,每头牛都有独一无二的正整数 魅力值,Fj想让他们按 魅力值排序. Fj已经知道M(1<=M<=10000)对 ...

  7. bzoj 1703 [Usaco2007 奶牛排名 传递闭包

    [Usaco2007 Mar]Ranking the Cows 奶牛排名 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 504  Solved: 343[ ...

  8. BZOJ1638: [Usaco2007 Mar]Cow Traffic 奶牛交通

    1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 571  Solved: 199 ...

  9. 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通

    1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 618  Solved: 217 ...

随机推荐

  1. 9.JAVA-抽象类定义

    1.抽象类 抽象类,用来表示一个抽象概念. 是一种只能定义类型,而不能产生对象的类,所以定义了抽象类则必须有子类的出现. 抽象类的好处在于能够明确地定义子类需要覆写的方法 抽象类需要使用abstrac ...

  2. CSS3常用属性浏览器兼容前缀

    1.检测网站https://gsnedders.html5.org/outliner/ 2.查询是否支持前缀http://caniuse.com 3.border-radius\box-shadow\ ...

  3. Mac OS OneDrive 无法同步.DS_Store文件 出错

    Mac OS OneDrive 无法同步.DS_Store文件 同步出错 解决方案: 第一步:打开 terminal 窗口,到本地同步的目录下: cd "/Users/gkjglobal/G ...

  4. 64位系统上32位进程拷贝文件到System32目录时的重定向

    64位系统上,32位进程拷贝文件到"System32"目录时,会被文件系统重定向到"SysWOW64"目录 要禁用这种重定向,需要用到下面2个API: Wow6 ...

  5. Selenium私房菜系列2 -- XPath的使用【ZZ】

    在编写Selenium案例时,少不免是要用到XPath的,现在外面关于XPath使用的参考资料很多,下面我直接转一篇关于XPath使用的文档.如果对XPath不熟悉请参考下文,你不需要去百度/Goog ...

  6. Java replaceAll不区分大小写

    Java 中replaceAll如何忽略大小写呢? 方式一:在正则表达式前面添加(?i) @Test public void test_replaceAll33(){ String input = & ...

  7. vue下axios和fetch跨域请求

    1.在config的index.js下面进行常用跨域配置代码:proxyTable: { '/apis': { //使用"/api"来代替"http://xxxx.cn& ...

  8. 一个简单的139邮箱登录脚本--->java-selenium

    import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebE ...

  9. 2019年今日头条机试_JAVA后台岗_第一题

        广度优先遍历: import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Nod ...

  10. vue点击时动态改变样式 ------- 最简单的方法

    vue点击时动态改变样式 template中 <li :class="{ active:index==isActive }" @click="changeValue ...